BERT (言語モデル)

**BERT**（バート、***'）は、[[Google]]の研究者によって2018年に導入された[[言語モデル]]ファミリーである。2020年の文献調査では、「わずか1年強の間に、BERTは[[自然言語処理]]（NLP）実験のいたるところで使用される基準線となり、150を超える研究発表がこのモデルを分析・改良している」と結論づけている。

== 背景 ==
=== 方向制約 ===
BERT 以前の多くの言語モデルは事前学習に単方向性（）のタスクを採用しており、学習された表現も単方向の文脈しか考慮しないものであった。この制約は文脈レベルの表現が必要なタスクの性能へ大きなペナルティを与えうる。

== アーキテクチャ ==
後述するMLM により双方向に依存するモデルを採用可能になったことから、BERT ではネットワークとして双方向性の [[Transformer (機械学習モデル)|Transformer]]アーキテクチャ (***B***idirectional ***E***ncoder of ***T***ransformer) を採用した。すなわち self-attention による前後文脈取り込みと位置限局全結合による変換を繰り返すネットワークを用いている。

BERTは、[[字句解析|トークン化]]にWordPieceを使用して、各英単語を整数コードに変換する。その語彙数は30,000である。語彙に含まれないトークンは、「不明」（unknown）を意味する [UNK] で置き換えられる。

BERTは、同時に2つのタスクで事前訓練された。

=== 双方向タスク/MLM ===
単方向制約を超えた双方向（***B***idirectional）の言語モデルを構築するために、BERT では事前学習タスク/損失関数として ***masked language model**'' (MLM) を採用した。MLMでは部分マスクされた系列を入力としてマスク無し系列を予測し、マスク部に対応する出力に対して一致度を計算し学習する。モデルはマスクされていない情報（周囲の文脈/context）のみからマスク部を予測する事前学習タスクを解くことになる。

トークンの15%が予測用に選択され、訓練の目的は文脈を考慮して選択されたトークンを予測することとされた。選択されたトークンは、

* 確率80%で [MASK] トークンに置き換えられ、
* 確率10%でランダムな単語トークンに置き換えられ、
* 確率10%で置き換えられなかった。
たとえば、「私の犬はかわいいです」（"my dog is cute"）という文では、4番目のトークンが予測のために選択される可能性があった。このモデルの入力テキストは次の様になる。
* 確率80%で「私の犬は[MASK]です」
* 確率10%で「私の犬は幸せです」
* 確率10%で「私の犬はかわいい」

入力テキストを処理した後、モデルの4番目の出力ベクトルは別のニューラルネットワークに渡され、ニューラルネットワークは30,000語の大規模な語彙に対する[[確率分布]]を出力する。

=== 次文予測 ===
2つのスパン（範囲）が与えられたとき、モデルはこれらの2つのスパンが訓練コーパスで連続して出現するかを予測し、[IsNext] または [NotNext] のどちらかかを出力する。最初のスパンは特別なトークン [CLS] （「classify」の意味）で始まる。2つのスパンは特別なトークン [SEP] （「separate」の意味）で区切られる。2つのスパンを処理した後、先頭の出力ベクトル（すなわち、[CLS] を符号化したベクトル）は別のニューラルネットワークに渡され、ニューラルネットワークは [IsNext] と [NotNext] に二値分類する。

* たとえば、「[CLS] 私の犬はかわいいです [SEP] 彼は遊ぶのが好きです」が与えられると、モデルはトークン [IsNext] を出力するべきである。
* たとえば、「[CLS] 私の犬はかわいいです [SEP] 磁石はどのように働きますか」が与えらると、モデルはトークン [NotNext] を出力するべきである。

この訓練プロセスの結果、BERTは、文脈における単語や文のを学習する。事前訓練後、BERTをより小さな[[訓練・検証・テストデータセット|データセット]]上でより少ないリソースで[[ファインチューニング (機械学習)|ファインチューニング]]し、NLPタスク（[[自然言語理解|言語理解]]、[[文書分類]]）や、に基づく言語生成タスク（[[質問応答システム|質問応答]]、[[自然言語生成|会話応答生成]]）などの特定のタスクでの性能を最適化することができる。事前訓練段階は、ファインチューニングよりもはるかにが高い。

== 性能 ==
当初、BERTは、英語の2つのモデルサイズで実装された。

* BERT<sub>BASE</sub>：12個のエンコーダと12個の双方向自己[[アテンション (機械学習)|アテンション]]ヘッド、合計1億1,000万パラメータ、
* BERT<sub>LARGE</sub>：24個のエンコーダと16個の双方向自己アテンションヘッド、合計3億4,000万パラメータ。

両モデルとも、Toronto [[BookCorpus]]（8億語）と、[[英語版ウィキペディア]]（25億語）で事前訓練された。

BERTが発表されたとき、多くの自然言語理解タスクで[[最先端]]の性能を達成した。

* GLUE（）タスクセット（9タスクで構成）
* SQuAD（スタンフォード質問応答データセット）v1.1およびv2.0
* SWAG（Situations With Adversarial Generations、敵対的生成を含む状況）

== 解析 ==
これらの[[自然言語理解]]タスクでBERTが最先端の性能を発揮できる理由は、まだよく分かっていない。現在の研究は、注意深く選択された入力シーケンス、プロービング分類器による内部[[ベクトル空間モデル|ベクトル表現]]の分析、および[[アテンション (機械学習)|アテンション]]ウェイトによって表される関連性の結果として、BERT出力の背後にある関係を調査することに重点を置いている。また、BERTモデルの高い性能は、それが双方向に学習されるという事実に帰する可能性もある。つまり、Transformerモデルアーキテクチャに基づくBERTが、その自己アテンション機構を使用して、訓練中にテキストの左側と右側から情報を学習するため、文脈を深く理解することができる。たとえば、fine という単語は、文脈によって2つの異なる意味を持つことがある。「**I feel** fine **today**, **She has** fine **blond hair**」（**今日は**良い**気分だ**。**彼女は**細い**ブロンドの髪をしている'''）。BERTは、対象となる単語 fine を囲む単語列を左右から見る。

しかし、これには代償が伴う。エンコーダのみでデコーダを持たないアーキテクチャのため、BERTはプロンプトを出したり、テキストを生成することができない。一般的に、双方向モデルは右側がないと効果的に動作しないため、プロンプトを出力するのが難しく、短いテキストを生成するにも高度で計算コストのかかる技術が必要となる。

訓練するために非常に大量のデータを必要とするディープラーニング・ニューラルネットワークとは対照的に、BERTはすでに事前訓練されている。すなわち、単語や文の表現、およびそれらを接続する基本的な意味関係を学習していることを意味する。BERTはその後、感情分類などの特定のタスクに合わせて、より小規模なデータセットを使用してファインチューニングすることができる。したがって、事前訓練モデルの選択においては、使用するデータセットの内容だけでなく、タスクの目的も考慮される。たとえば、財務データに関する感情分類タスクに使用する場合、財務テキストの感情分析のための事前訓練モデルを選択するべきである。オリジナルの訓練済みモデルのウェイトはGitHubで公開されている。

## 沿革
BERTは元々、Googleの研究者Jacob Devlin、Ming-Wei Chang、Kenton Lee、Kristina Toutanovaによって発表された。この設計は、半教師ありシーケンス学習、生成的事前訓練、、ULMFitなどの文脈表現の事前訓練を起源とする。従来のモデルとは異なり、BERTは完全な双方向性を持つ教師なし言語表現であり、平文テキストコーパスのみを使用して事前訓練されている。word2vecやのような文脈独立モデルは、語彙内の各単語ごとに単一の単語埋め込み表現を生成するのに対し、BERTは与えられた単語が出現するごとに文脈を考慮する。たとえば、「He is running a company」（彼は会社を経営している）と「He is running a marathon」（彼はマラソンをしている）の2つの文について、word2vecでは「running」のベクトル表現は同じであるのに対し、BERTでは文によって異なる文脈に応じた埋め込みを生成する。

2019年10月25日、Google検索は、米国内の英語検索クエリに BERTモデルの適用を開始したことを発表した。2019年12月9日、BERT が 70を超える言語で Google検索に採用されたことが報告された。2020年10月、ほぼすべての英語ベースのクエリが BERT によって処理された。

## 表彰
BERTを記述した研究論文は、2019年の（NAACL）年次会議で、最優秀論文賞を受賞した。

## 脚注

### 出典

## 推薦文献
* 
### 日本語書籍
* ストックマーク株式会社(編)：「BERTによる自然言語処理入門: Transformersを使った実践プログラミング」、オーム社、ISBN 978-4-27422726-4 (2021年6月28日).
* 新納浩幸、古宮嘉那子：「文書分類からはじめる自然言語処理入門：基本からBERTまで」、科学情報出版、ISBN 978-4-910558-14-1 (2022年7月20日).
* 佐藤大輔、和知德磨、湯浅晃、片岡紘平、野村雄司(監修)：「BERT入門：プロ集団に学ぶ新世代の自然言語処理」、リックテレコム、ISBN 978-4-86594340-5 (2022年8月6日). 
* 我妻幸長：「BERT実践入門：PyTorch＋Google Colaboratoryで学ぶあたらしい自然言語処理技術」、翔泳社、ISBN 978-4-7981-7781-6 (2023年7月20日).

## 関連項目
* 特徴抽出
* 

## 外部リンク
* Official GitHub repository
* BERT on Devopedia