BERTとは?双方向トランスフォーマーの仕組み・事前学習(MLM/NSP)と実務導入のポイント解説

BERTとは — 概要と意義

BERT(Bidirectional Encoder Representations from Transformers)は、2018年にGoogleの研究チーム(Jacob Devlinら)が発表した自然言語処理(NLP)向けの事前学習モデルです。従来の手法に比べて文脈を双方向にとらえる「双方向トランスフォーマー」アーキテクチャを採用し、事前学習(pre-training)と微調整(fine-tuning)によって多様な下流タスク(分類、固有表現抽出、質問応答など)で高い性能を実現しました。発表当時、GLUEベンチマークやSQuADといった主要評価で大幅な性能向上を示し、以後のNLP研究と実務に大きなインパクトを与えました。

設計の中核:トランスフォーマーと双方向性

BERTの基盤は「Transformer」アーキテクチャ(Vaswaniら, 2017)で、その中のエンコーダ部分を用いています。Transformerは自己注意(self-attention)により全トークン間の関係を直接学習でき、RNN系モデルより並列化に優れます。BERTはこのエンコーダを双方向に学習することで、単語の左側・右側の両方の文脈を同時に反映した表現を作り出します。

事前学習タスク:Masked LM と Next Sentence Prediction

  • Masked Language Model(MLM):入力文のトークンのうち約15%を選び、そのうち80%を特殊トークン[MASK]に置き換え、10%をランダムなトークンに、10%はそのままにします。モデルはマスクされた位置の元のトークンを予測することで、双方向の文脈情報を学習します。従来の左から右(または右から左)の言語モデルでは学習できなかった、両側の文脈を同時に取り込むことが可能になりました。

  • Next Sentence Prediction(NSP):2つの文A, Bの組が「連続する文(BがAの次の文)」かどうかを予測する二値分類タスクです。これにより文章間の関係(文脈的連続性)を学習し、質問応答や自然言語推論のようなタスクで有効とされました。ただし、その有効性は後続研究で議論され、RoBERTaなどはNSPを除去した上でより良い結果を出した例もあります。

モデルサイズとデータ

オリジナルのBERTには主に2種類があります。BERT-base(12層、隠れユニット768、ヘッド12、約1.1億パラメータ)とBERT-large(24層、隠れユニット1024、ヘッド16、約3.4億パラメータ)です。事前学習に使われたコーパスは主にBookCorpus(約8億単語)と英語版Wikipedia(約25億単語)で、トークナイザはWordPiece、語彙サイズは約30,000です。

使い方:ファインチューニングと特徴抽出

  • ファインチューニング(推奨):タスク固有の出力層(分類用の線形層や、質問応答のスパン抽出層など)をBERTの上に追加し、事前学習済みモデルの全パラメータを対象にタスクデータで追加学習します。少量のデータでも高精度が出るのがBERTの強みです。一般的な学習率は2e-5〜5e-5、エポック数は2〜4程度がよく使われます。

  • 特徴抽出(feature-based):BERTで文やトークンのベクトルを計算し、それを固定の特徴量として下流モデルに渡す方法です。ファインチューニングほどの性能を発揮しない場合もありますが、計算資源が限られるケースや既存パイプラインへの組み込みで使われます。

実用面での注意点と課題

  • 計算資源と推論速度:BERT-largeは非常に重く、学習・推論ともに高い計算コストを要求します。実運用ではモデル圧縮(知識蒸留:DistilBERT)、量子化、プルーニング、あるいは軽量なモデル(ALBERT、DistilBERT、TinyBERTなど)を検討する必要があります。

  • 長文の扱い:入力長は通常512トークンに制限されるため、長文処理には工夫(スライディングウィンドウ、長文専用アーキテクチャ(Longformer等))が必要です。

  • バイアスと有害な出力:学習データに含まれる偏りや不適切表現がモデルに取り込まれるため、倫理的な配慮やフィルタリング、評価が重要です。

  • NSPの有効性に関する議論:後続研究ではNSPが必須ではない、あるいは別のタスク(文順予測など)に置き換えた方が良い場合があると報告されています。事前学習の設計は進化しており、固定観念に囚われない検討が必要です。

BERTがもたらした技術的・社会的影響

BERTの登場により、事前学習済み大規模言語モデルを「下流タスクへ微調整して使う」というスタイルがNLPの主流になりました。これにより、多くのタスクで少量データでも高精度が達成できるようになり、実務での導入が一段と容易になりました。また、マルチリンガルBERT(mBERT)のように多言語での事前学習も行われ、言語横断的な転移学習や低リソース言語への応用が進みました。

主要な派生モデル・改良点(代表例)

  • RoBERTa:NSPを除去し、より大きなデータセットとバッチ、動的マスキングを用いて学習。多くのタスクでBERTを上回る性能を示しました。

  • ALBERT:パラメータ共有や埋め込みの次元削減によりパラメータ効率を改善し、大規模での学習を効率化しました。

  • DistilBERT / TinyBERT:知識蒸留により軽量化と高速化を実現し、実用面での導入を容易にしました。

  • mBERT(Multilingual BERT):100以上の言語のWikipediaで共同学習されたモデルで、驚くべきクロスリンガル性を示しました(ただし言語毎の最適化は必要)。

実務での導入ポイント

  • タスク適合性の検討:分類やQA、NERなどの典型タスクでは高い効果が期待できますが、対話生成や長文要約など生成タスクではデコーダを持つモデル(Seq2Seq系)や別設計が有利なことがあります。

  • コストと性能のトレードオフ:必要な精度に応じてBERT-largeを使うか、圧縮モデルで対応するか決めます。エッジデバイス向けには軽量版や量子化を検討します。

  • セキュリティ・倫理的配慮:学習データの出典、バイアス評価、出力の有害性チェックをワークフローに組み込みます。

  • 運用・監視:モデルのドリフト(運用データと学習データの差)や性能低下に対するモニタリング、再学習の計画が重要です。

まとめ

BERTは「双方向コンテキストを持つトランスフォーマー・エンコーダ」を基盤とする、NLPにおける転換点となった事前学習モデルです。多数の下流タスクで高精度を達成し、その思想は後続モデルや実務で幅広く取り入れられました。一方で計算コストや倫理的問題、長文処理の制約など課題もあり、これらを解決するための研究・工夫は現在も活発に進行しています。NLPシステムを現場へ導入する際は、BERTの強みと制約を理解した上で、モデル選定・圧縮・運用設計を行うことが重要です。

参考文献