BERT (言語モデル)

BERT（バート、英: Bidirectional Encoder Representations from Transformers）は、Googleの研究者によって2018年に導入された言語モデルファミリーである。2020年の文献調査では、「わずか1年強の間に、BERTは自然言語処理（NLP）実験のいたるところで使用される基準線となり、150を超える研究発表がこのモデルを分析・改良している」と結論づけている。 BERT 以前の多くの言語モデルは事前学習に単方向性（英: unidirectional）のタスクを採用しており、学習された表現も単方向の文脈しか考慮しないものであった。この制約は文脈レベルの表現が必要なタスクの性能へ大きなペナルティを与えうる。 後述するMLM により双方向に依存するモデルを採用可能になったことから、BERT ではネットワークとして双方向性の Transformerアーキテクチャ (Bidirectional Encoder of Transformer) を採用した。すなわち self-attention による前後文脈取り込みと位置限局全結合による変換を繰り返すネットワークを用いている。 BERTは、トークン化にWordPieceを使用して、各英単語を整数コードに変換する。その語彙数は30,000である。語彙に含まれないトークンは、「不明」（unknown）を意味する [UNK] で置き換えられる。 BERTは、同時に2つのタスクで事前訓練された。 単方向制約を超えた双方向（Bidirectional）の言語モデルを構築するために、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つのモデルサイズで実装された。 BERTBASE：12個のエンコーダと12個の双方向自己アテンションヘッド、合計1億1,000万パラメータ、 BERTLARGE：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によって発表された。この設計は、半教師ありシーケンス学習（英語版）、生成的事前訓練、ELMo（英語版）、ULMFitなどの文脈表現の事前訓練を起源とする。従来のモデルとは異なり、BERTは完全な双方向性を持つ教師なし言語表現であり、平文テキストコーパスのみを使用して事前訓練されている。word2vecやGloVe（英語版）のような文脈独立モデルは、語彙内の各単語ごとに単一の単語埋め込み表現を生成するのに対し、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）年次会議で、最優秀論文賞を受賞した。 特徴抽出（英語版） 特徴学習（英語版）