AI・機械学習
初級

Bert Model(バートモデル)

Googleが開発した双方向Transformerベースの言語モデル。文脈を考慮した高精度な自然言語処理を実現。

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
AI
機械学習
初心者向け

BERT Model(Bidirectional Encoder Representations from Transformers)

概要

BERT(Bidirectional Encoder Representations from Transformers)は、2018 年 10 月に Google が発表した画期的な言語モデルです。Transformer のエンコーダー部分のみを使い、双方向の文脈を同時に学習することで、自然言語理解タスクで当時の最高精度を大幅に更新しました。BERT の登場は NLP 分野における「Transformer 時代」の幕開けを象徴し、後続のすべての言語モデルに大きな影響を与えています。

特徴

双方向性(Bidirectional)

従来の言語モデル(GPT など)は左から右への一方向でしたが、BERT は文の両側から同時に文脈を学習します。

  • GPT: 左 → 右(自己回帰)
  • BERT: 左 ← 中 → 右(双方向)

この双方向性により、単語の意味を前後の文脈から総合的に理解できます。

事前学習 + ファインチューニング

  • 事前学習: 大規模テキストで基礎学習
  • ファインチューニング: 下流タスクで微調整
  • パラダイム確立: 現代の NLP の基本戦略

アーキテクチャ

BERT-base

  • レイヤー: 12
  • 隠れ次元: 768
  • Attention ヘッド: 12
  • パラメータ: 110M

BERT-large

  • レイヤー: 24
  • 隠れ次元: 1024
  • Attention ヘッド: 16
  • パラメータ: 340M

事前学習タスク

1. Masked Language Model(MLM)

入力の一部を [MASK] で隠し、予測:

原文: The [MASK] is running
モデル: The [cat] is running
  • マスク率: 15% のトークン
    • 80%: [MASK] に置換
    • 10%: ランダムな単語に置換
    • 10%: そのまま
  • 学習: マスクされた単語を予測

2. Next Sentence Prediction(NSP)

2 つの文が連続しているか判定:

[CLS] 文A [SEP] 文B [SEP]
→ 連続/非連続
  • 用途: 文間関係の学習
  • 後に批判: RoBERTa 等で廃止

入力表現

3 つの埋め込み

  1. Token Embedding: WordPiece トークン
  2. Segment Embedding: 文 A / 文 B の区別
  3. Position Embedding: 位置情報(学習型)
入力 = Token + Segment + Position

特殊トークン

  • [CLS]: 分類用、先頭に配置
  • [SEP]: 文の区切り
  • [MASK]: マスクされたトークン
  • [PAD]: パディング

トークナイゼーション

WordPiece

  • サブワード分割: 未知語対応
  • 語彙サイズ: 30,522(英語)
  • 例: "playing" → "play" + "##ing"

日本語 BERT

  • 形態素解析: MeCab + WordPiece
  • 文字単位: 文字 BERT
  • 代表モデル: 東北大 BERT、Tohoku BERT

下流タスクへの適用

1. テキスト分類

[CLS] 文 [SEP]
→ [CLS] の出力を分類器に
  • 感情分析
  • ニュース分類
  • スパム検出

2. 文ペア分類

[CLS] 文A [SEP] 文B [SEP]
→ 類似度、含意関係
  • 自然言語推論(NLI)
  • 質問応答(QA)

3. トークン分類

各トークンの出力を分類
  • 固有表現認識(NER)
  • 品詞タグ付け

4. 質問応答

[CLS] 質問 [SEP] 文書 [SEP]
→ 回答の開始・終了位置
  • SQuAD ベンチマーク

5. マスク言語モデル(直接使用)

  • 穴埋め: [MASK] 部分を予測
  • 類義語発見
  • テキスト補完

ベンチマーク記録(2018-2019)

BERT は以下のタスクで SOTA を達成:

  • GLUE: 11 タスクの平均スコア向上
  • SQuAD v1.1: F1 93.2
  • SQuAD v2.0: F1 83.1
  • SWAG: 86.3%
  • MultiNLI: 86.7%

BERT の派生モデル

RoBERTa(Facebook、2019)

  • 改良点: NSP 削除、より大きなバッチ、長い学習
  • 性能: BERT を大幅に上回る
  • 標準: 現在の定番

ALBERT(Google、2019)

  • パラメータ共有: 層間でパラメータを共有
  • 軽量化: BERT-large の 18M パラメータ
  • 性能: 同等以上

DistilBERT(Hugging Face、2019)

  • 知識蒸留: BERT-base から軽量化
  • サイズ: 66M(40% 削減)
  • 速度: 60% 高速
  • 性能: 97% を維持

DeBERTa(Microsoft、2020)

  • Disentangled Attention: 内容と位置を分離
  • Enhanced Mask Decoder
  • SuperGLUE: 人間スコアを初めて超える

ELECTRA(Google、2020)

  • 事前学習タスク改良: Replaced Token Detection
  • 効率性: BERT より高速に学習
  • 性能: 同等かそれ以上

mBERT(Google、2018)

  • 多言語: 104 言語
  • 単一モデル: 言語横断タスク

XLM-RoBERTa(Facebook、2020)

  • 多言語版 RoBERTa
  • 100 言語
  • CC100 で学習

日本語 BERT モデル

モデル開発元特徴
Tohoku BERT東北大最も広く使用
cl-tohoku/bert-base-japanese-v3東北大最新版
rinna BERTrinna対話特化
LINE DistilBERTLINE軽量版
Stockmark BERTStockmarkビジネス特化

実装例(Hugging Face)

from transformers import BertTokenizer, BertForSequenceClassification
import torch

# モデルロード
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased')

# 入力準備
text = "This movie is great!"
inputs = tokenizer(text, return_tensors='pt')

# 推論
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    probs = torch.softmax(logits, dim=-1)

print(probs)

ファインチューニング

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir='./results',
    num_train_epochs=3,
    per_device_train_batch_size=16,
    learning_rate=2e-5,
    warmup_steps=500,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
)

trainer.train()

BERT から GPT へ

BERT の限界

  • 生成タスクに不向き: 双方向性ゆえ
  • 固定長入力: 可変長出力困難
  • パラメータ爆発: 大規模化で GPT が有利

GPT の優位性

  • 生成能力: 自己回帰
  • Few-shot Learning: In-context Learning
  • スケーラビリティ: 大規模化の効果大
  • 汎用性: 単一モデルで多様なタスク

現代の状況(2026)

  • BERT 系: 理解タスク、埋め込み、検索
  • GPT 系: 生成タスク、対話、汎用 AI
  • 埋め込みモデル: sentence-transformers(BERT 系)

自作 PC での BERT

必要スペック

用途GPUVRAM
推論GTX 16606GB
ファインチューニング(base)RTX 306012GB
ファインチューニング(large)RTX 4070 Ti16GB
事前学習A10080GB+

ファインチューニング時間の目安

  • BERT-base + IMDB(25K 文): RTX 4090 で 30 分
  • BERT-large + SQuAD: RTX 4090 で 2-3 時間

関連用語

  • Transformer、Self-Attention
  • RoBERTa、ALBERT、DeBERTa
  • Masked Language Model
  • Fine-tuning、Transfer Learning
  • Sentence-BERT(埋め込み用)
この記事について
カテゴリーAI・機械学習
難易度初級
作成日2025/7/11