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%: そのまま
- 80%:
- 学習: マスクされた単語を予測
2. Next Sentence Prediction(NSP)
2 つの文が連続しているか判定:
[CLS] 文A [SEP] 文B [SEP]
→ 連続/非連続
- 用途: 文間関係の学習
- 後に批判: RoBERTa 等で廃止
入力表現
3 つの埋め込み
- Token Embedding: WordPiece トークン
- Segment Embedding: 文 A / 文 B の区別
- 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 BERT | rinna | 対話特化 |
| LINE DistilBERT | LINE | 軽量版 |
| Stockmark BERT | Stockmark | ビジネス特化 |
実装例(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
必要スペック
| 用途 | GPU | VRAM |
|---|---|---|
| 推論 | GTX 1660 | 6GB |
| ファインチューニング(base) | RTX 3060 | 12GB |
| ファインチューニング(large) | RTX 4070 Ti | 16GB |
| 事前学習 | A100 | 80GB+ |
ファインチューニング時間の目安
- 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(埋め込み用)