BERT (Bidirectional Encoder Representations from Transformers)
BERTはGoogleの双方向Transformerエンコーダーで、両側の文脈からマスクされた単語を予測するよう事前学習されています。仕組み、ファインチューニング、バリエーションを解説します。
BERT(Transformerによる双方向エンコーダー表現)は、文全体を一度に読み取り、各単語の両側にある単語からその単語の表現を構築するTransformerエンコーダーです。Google AI LanguageのJacob Devlin氏、Ming-Wei Chang氏、Kenton Lee氏、Kristina Toutanova氏が2018年10月にBERT: 言語理解のための深層双方向Transformerの事前学習で発表し、この論文はNAACL 2019の最優秀長編論文賞を受賞しました。事前訓練済みのBERTを1つ用意し、出力層を1つ追加してファインチューニングするだけで、11の自然言語処理(NLP)タスクにおいて当時の最先端の結果を達成しました。GLUEベンチマークのスコアは80.5%となり、絶対値で7.7ポイント向上し、SQuAD v1.1の質問応答ではテストF1スコア93.2を記録しました。
BERTの事前学習方法#
BERT-Baseは、隠れ状態の次元数が768、アテンションヘッド数が12のエンコーダー層を12層重ね、パラメーター数は約1億1,000万です。BERT-Largeは24層、次元数1,024、ヘッド数16で、パラメーター数は3億4,000万です。入力テキストはWordPiece トークン化によって3万トークンの語彙に分割され、各シーケンスの先頭には特殊な[CLS]トークンが置かれ、文ペアの2つのセグメントは[SEP]で区切られます。GoogleはBooksCorpus(8億語)と英語版Wikipedia(25億語)を使い、自己教師ありの2つの目的関数で両サイズのモデルを事前学習しました。
マスク言語モデル(MLM)では、トークン位置の15%を選択し、そのうち80%を[MASK]に置き換え、10%をランダムなトークンに置き換え、残りの10%はそのままにして、元のトークンをモデルに予測させます。BERTの自己注意には因果マスクがないため、すべての予測で両側の文脈を利用できます。これは左から右へ処理する言語モデルにはできません。次文予測(NSP)では、各セグメントを半分の確率で実際の後続文とペアにし、それ以外の場合はランダムな文とペアにします。そして、[CLS]の出力に対する分類器が、2つのペアを見分けられるように学習します。
事前学習済みチェックポイントにはマスクされた単語を予測するヘッドが保持されるため、元のモデルは空欄を直接補完できます。
from transformers import pipeline
# # BERTは両側の単語からマスクされた単語を予測します
fill = pipeline("fill-mask", model="bert-base-uncased")
for text in ["She went to the [MASK] to buy bread.", "She went to the [MASK] to see a doctor."]:
predictions = fill(text, top_k=3)
print(text, [(p["token_str"], round(p["score"], 2)) for p in predictions])2つの文は空欄の後だけが異なり、BERTの最有力予測は「market」(0.82)から「hospital」(0.78)に変わります。左から右へ読むモデルは、どちらの文でも「She went to the」までしか見えないため、両者を区別する手掛かりがありません。
ファインチューニングと応用#
ファインチューニングでは、小さなタスク用レイヤーを追加し、ラベル付きの例で重み全体を訓練します。この手法によって、転移学習はNLPの標準的な手法になりました。[CLS]ベクトルは感情分析など文単位の分類器に入力され、各トークンのベクトルは固有表現認識(NER)などのタグ付けタスクに使われます。また、トークンごとの開始位置と終了位置のスコアから、回答の範囲を抽出します。
Googleは2019年10月、米国における英語検索の10件に1件でBERTを使い始めました。例として挙げられた検索クエリ「2019 brazil traveler to usa need a visa」では、「to」がブラジル人の米国渡航を表していることをBERTが認識しました。2020年10月までには、ほぼすべての英語検索クエリでBERTが使われるようになりました。BERT系エンコーダーは、セマンティック検索を支える埋め込みも生成します。Sentence-BERTはBERTをファインチューニングして各文を1つのベクトルに変換し、ベクトル検索に使います。ColBERTはトークンごとに1つのベクトルを保持し、クロスエンコーダーの再ランキングモデルは、検索拡張生成(RAG)パイプラインでクエリと文章のペアをスコアリングします。
視覚と言語を組み合わせた検出では、Grounding DINOがBERT-baseエンコーダーでテキストプロンプトをエンコードしてから、画像領域との照合を行います。このモデルは、Ultralytics Platformのクラスプロンプト対応スマートアノテーションで利用できるホスト型モデルの1つです。データセットのクラス名を、YOLO26検出器の訓練に使える編集可能なボックスに変換します。マスク予測は画像にも応用されました。ビジョントランスフォーマー(ViT)は分類にBERTの[CLS]トークンを取り入れ、マスク付きオートエンコーダー(MAE)は画像パッチの75%を隠して再構成することで画像エンコーダーを事前学習します。
BERTとGPT、その後のエンコーダーとの比較#
GPTモデルは因果マスクを持つTransformerデコーダーで構成され、直前までのトークンから次のトークンを予測するため、テキスト生成に適しています。BERTは入力された各トークンのベクトルを出力するため、分類、抽出、検索に適していますが、左から右へテキストを生成する機能は組み込まれていません。パラメーター数が数十億の大規模言語モデル(LLM)は、プロンプトを通じて同様の理解タスクを数多く処理できますが、クエリあたりのコストは、パラメーター数1億1,000万のエンコーダーの何倍にもなります。
その後のエンコーダーでは、この手法が改良されました。MetaのRoBERTaはNSPを廃止し、約160 GBのテキストを使って、より大きなバッチで長時間訓練しました。その結果、BERTが大幅に訓練不足だったことが示されました。Hugging FaceのDistilBERTは知識蒸留を使ってパラメーター数を40%削減し、速度を60%向上させながら、BERTの言語理解性能の97%を維持しました。Answer.AIとLightOnが2024年12月にリリースしたModernBERTは、2兆トークンで訓練され、ネイティブのコンテキスト長は8,192トークンです。これはBERTの上限である512トークンの16倍です。










