今回の論文
今回読むのは、ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generatorsです。著者はKevin Clark、Minh-Thang Luong、Quoc V. Le、Christopher D. Manningの4名で、ICLR 2020の論文です。arXivでは2020年3月23日に公開されました。研究分野は自然言語処理、自己教師あり学習、文章エンコーダーの事前学習です。
原論文の公開ページと本文を参照し、以下では初版の実験を扱います。
選んだ理由は、「より大きなモデルを使う」前に、同じ文章からどれだけ学習信号を取り出せるかを見直す技術だからです。生成器を使って学習課題を作り、実際に配備するのは識別器にする設計は、専用の分類モデルや文書処理システムを考えるうえでも参考になります。
どんな技術か
ELECTRAは、文章中の一部のトークンを別の候補へ置き換え、各位置で「元のトークンと同じか」を見分けることで、文章を理解するための表現を学ぶ技術です。この学習課題を**置換トークン検出(Replaced Token Detection、RTD)**と呼びます。
BERT型の穴埋め学習では、隠した位置に入る語を語彙全体から予測します。ELECTRAでは、小さな生成器に穴埋めを担当させ、その候補を埋めた文章を別の識別器へ渡します。識別器は、置換候補を入れた位置だけでなく、入力全体の各位置で二値分類を学びます。
たとえば「料理人が夕食を作った」の一部を「料理人が夕食を食べた」へ変えたなら、変化した位置を識別する課題になります。これは説明用の例です。文法的に自然な文へ変わっても、元のトークンと異なれば置換として扱います。文章の真偽や、現実の出来事を判定する技術ではありません。
事前学習の後は生成器を取り除き、識別器へ業務用の分類ヘッドなどを付けて追加学習します。学習時に2つのモデルを使うことと、推論時にも2つ必要なことは別です。
課題
文章の一部を隠す学習では、文脈を読むために文章全体を計算しても、直接の予測対象になるのは一部だけです。BERTの代表的な設定では約15%の位置を学習対象にします。残りの位置もAttentionや勾配を通じて学習へ寄与しますが、各位置に直接の出力損失が付くわけではありません。
また、穴埋めでは多数の語彙候補の確率を計算します。小型モデルの場合は、限られた表現能力で語彙分布まで学ぶことが負担になり得ます。事前学習時に使う特殊な[MASK]が、通常の業務入力には現れないという違いもあります。
この問題は、独自分野の文章理解モデルを育てたい場面で重要です。製品マニュアルや問い合わせ文が集まっていても、大規模な計算設備を前提にすると、モデルを作り直す費用が高くなります。モデルの規模だけでなく、1回の入力から得る学習信号の設計を変えられれば、同じ予算での性能改善につながる可能性があります。
ただし、すべての位置に単純なコピー課題を置くだけでは、入力をそのまま返す近道ができてしまいます。ELECTRAは、もっともらしい置換候補を混ぜ、周辺の文脈を使わないと解きにくい課題を作ります。
用語解説
- トークンと文脈表現
- トークンは単語やその一部など、文章をモデルへ渡す単位です。文脈表現は前後を読んだ各トークンの特徴ベクトルで、ELECTRAでは置換検出を通じて、後の分類や回答箇所抽出に役立つ特徴を学びます。
- Masked Language Modeling(MLM)
- 入力の一部を隠し、元のトークンを語彙全体から予測する学習です。ELECTRAでは最終的に使う識別器ではなく、置換候補を用意する生成器がこの課題を学びます。
- 生成器と識別器
- 生成器は隠した位置の候補を出すモデル、識別器は候補を埋めた入力で各トークンが元と一致するかを判定するモデルです。両者は事前学習を分担し、その後の業務タスクには識別器を使います。
- 二値交差エントロピー
- 二択の正解に対して、モデルが付けた確率の誤りを測る損失です。ELECTRAの識別器は各位置にこの損失を持ち、元と同じトークンを置換だと判断した場合も学習対象になります。
- FLOPs(浮動小数点演算数)
- 学習や推論に必要な演算量の目安です。生成器の追加で1更新あたりの計算は増えるため、ELECTRAの効率は更新回数だけでなく、生成器を含めた総FLOPsで比較する必要があります。
技術の仕組み
小さな穴埋めモデルで、置換候補を作る
元の文章をトークン列にし、選んだ位置を[MASK]へ変えます。生成器は双方向Transformerを使い、隠した各位置の語彙分布を予測します。その分布からトークンをサンプリングし、元の文章の選択位置へ埋め込みます。常に確率最大の語を選ぶ方式ではありません。
SmallとBaseの設定では位置の15%を選びます。Largeでは生成器の正答が増えて実際に変わるトークンが少なくなったため、25%へ増やしています。したがって、選択率と実際の置換率は同じではありません。
生成器が元と同じトークンを出した場合、その位置の正解は「元と同じ」です。「生成器を通った」という理由で置換ラベルを付けない点が重要です。原論文第2節と付録A
識別器は、入力全体で元との一致を判定する
識別器も双方向Transformerですが、出力は各位置の二値判定です。各トークンの特徴を線形変換し、sigmoidで「元と同じ」確率を出します。学習対象は候補を埋めた位置に限定せず、入力全体です。実装ではpaddingなどの有効な文章でない部分を損失から除く必要があります。
損失を簡略化すると、次のようになります。
識別損失 = 各有効位置について −y log D − (1−y) log(1−D) を合計
ここでyは元と同じなら1、異なれば0、Dは識別器が予測した「元と同じ」確率です。置換されていない位置でも、モデルが低いDを出せば損失が生じます。穴埋め位置以外にも直接の学習信号を与えられます。
「元と同じ」は意味的な正解と同一ではありません。自然な言い換えでも別トークンならyは0になります。識別器は元文を別入力として見せてもらうわけではなく、変更後の文脈からこのラベルを予測します。
2つの損失を学ぶが、敵対的な生成はしない
全体の目的は、生成器のMLM損失と、重み付きの識別損失の和です。
全体の損失 = MLM損失 + λ × 識別損失
論文ではλを50に設定しています。これは二値判定と語彙全体の予測で損失の大きさが異なることを踏まえた設定です。損失を合計するか平均するかを変えれば相対的な強さも変わるため、数字だけを移植しないことが大切です。
生成器は元のトークンの確率を上げるよう学びます。識別器をだます方向へ敵対的に学ぶGANとは異なり、サンプリングした離散トークンを通じて識別損失を生成器へ逆伝播しません。ただし、トークン・位置埋め込みは共有しており、共有部分は両方の学習に関わります。
小さい生成器を使えば追加計算を抑えられます。原論文の比較では、識別器に対して隠れ次元などが4分の1〜2分の1程度の生成器が有利でした。これはパラメータ総数が必ず同じ比率という意味ではありません。生成器を強くしすぎると課題が難しくなりすぎる可能性は、著者の考察です。モデルの共有と生成器規模の比較
配備するモデルを、実際のタスクへ適応させる
事前学習が終わったら、生成器と置換検出用の出力を業務タスクのために使い続ける必要はありません。識別器のエンコーダーを引き継ぎ、文章分類なら分類ヘッド、抽出型QAなら回答の開始・終了位置を予測するヘッドを付け、正解付きデータで学習します。
推論は文章 → 学習済みエンコーダー → タスク用ヘッド → 分類や回答位置です。置換候補の生成を毎回実行するわけではありません。一方、置換検出で学んだだけのモデルが、そのままFAQの意味検索に適した文ベクトルを出す保証もありません。検索用の表現を作る追加学習は、Sentence-BERTの文ペア学習とプーリングが別の設計課題として説明しています。
実験と結果
同じ計算予算で、小型モデルの文章理解を比較する
主な評価はGLUEとSQuADです。GLUEには感情分類、含意判定、言い換え、意味類似度などが含まれます。論文の開発集合の平均は、STSのSpearman相関、CoLAのMatthews相関、その他の正解率をまとめたもので、単一タスクの正解率ではありません。WNLIはこの開発集合平均から除外されています。
SmallとBaseの事前学習データはWikipediaとBooksCorpusの約33億トークンです。各タスクへの微調整は同じ事前学習済み重みから10回行い、基本的に中央値を報告しています。以下は原論文表1のGLUE開発集合です。
| モデル | 配備側のパラメータ数 | 事前学習FLOPs | GLUE平均 |
|---|---|---|---|
| BERT-Small(著者実装) | 14M | 1.4×10¹⁸ | 75.1 |
| ELECTRA-Small | 14M | 1.4×10¹⁸ | 79.9 |
| BERT-Base(著者実装) | 110M | 6.4×10¹⁹ | 82.2 |
| ELECTRA-Base | 110M | 6.4×10¹⁹ | 85.1 |
Smallでは4.8ポイント、Baseでは2.9ポイントの差です。生成器を含めた学習計算量をそろえており、同じ更新回数の比較ではありません。Smallは入力長128、隠れ次元256などの設定で、Baseとは条件が異なります。モデル規模をまたいだ差を学習目的だけの効果と解釈しないようにします。
ELECTRA-Smallの学習時間はV100 GPU 1台で4日と報告されていますが、学習済みモデルの微調整時間ではなく、事前学習の時間です。また、同じサイズのBERT-Smallと推論FLOPsは同じです。改善の中心は事前学習の効率であり、「ELECTRAという損失にすると推論も速くなる」という結果ではありません。
すべての位置に損失を付けることが効いたか
表5では学習課題を変えて効果を調べています。識別損失を元のマスク位置15%だけに制限するELECTRA 15%はGLUE 82.4、全位置を使うELECTRAは85.0でした。[MASK]を生成器の候補に変えるだけのReplace MLMも82.4で、BERTの82.2からの改善は小さくなっています。
一方、全位置で元のトークンを予測し、コピーの仕組みも加えたAll-Tokens MLMは84.3でした。これらは、特殊トークンをなくすことだけでなく、入力全体へ直接の予測損失を与えることが改善の大きな要因という説明を支持します。ただし、全位置の信号が互いに独立な学習例になるという意味ではありません。原論文第3.5節・表5
質問応答でも有効だが、出力ヘッドの条件に注意する
SQuADは、与えられた文章から答えの範囲を抽出する評価です。2.0には本文中に答えがない質問も含まれます。EMは答えの完全一致、F1は正解と予測のトークンの重なりを測ります。
Largeモデルを使う表4では、同じ7.1×10²⁰事前学習FLOPsの著者実装BERTがSQuAD 2.0開発集合でEM 84.7・F1 87.5、ELECTRA-400KはEM 86.9・F1 89.6でした。Largeは約330億トークンのXLNet用コーパスを使うため、先ほどのSmall・Baseとはデータ条件も異なります。
また、ELECTRAのQAヘッドはXLNet由来の構成を使い、開始と終了を共同で予測します。元のBERT論文の数値との比較を、事前学習目的だけの厳密な差と見ることはできません。答えがない質問で役立つ可能性はありますが、自由生成の幻覚や、社内資料QAの正しさを直接検証した結果ではありません。原論文第3.1・3.4節と表4
何に使える?
以下は論文の構造と評価から考えられる実務上の応用です。原論文が日本語の各業務システムで効果を実証したものではありません。
問い合わせや文章の分類を専用モデルにする
問い合わせの部署振り分け、レビューの感情分類、申請文の種類判定など、出力が固定カテゴリでよい処理に使えそうです。言語に合う学習済みELECTRAへ分類ヘッドを付け、業務ラベルで微調整する構成です。
生成器は配備しないため、推論側は文章エンコーダーと分類ヘッドで構成できます。ただし、特定のCPUで低遅延になるかはモデル規模と入力長次第です。小さなモデルを選び、カテゴリ別の精度と実際の処理時間を測ります。
文書から回答箇所を抜き出す
規程やマニュアルを検索し、その候補の中から日付、条件、手順の記載を抽出する後段モデルに応用できます。元の記述範囲を返す構成なら、利用者が出典を確認する導線も作れます。
ただし、検索した候補に正解がない場合の判定は別途学習・評価が必要です。SQuAD 2.0の結果だけで、実務の回答不能検出が完成するわけではありません。文書の版違いや、複数箇所を合わせて答える質問も評価へ入れる必要があります。
RAGやエージェントの前段で、定型判定を担わせる
「文書検索へ送る」「定型処理へ送る」「人へ確認する」といった経路分類にも転用が考えられます。繰り返される限定的な判定を専用モデルへ移せれば、大きな生成モデルを呼び出す回数を減らせる可能性があります。
この用途では、分類を間違えた後の回答品質も測ります。文章理解ベンチマークでの改善が、そのままエージェントの成功率改善になるとは限りません。
開発や事業へのヒント
小規模開発では、事前学習の再現より適応を比較する
最初は対象言語に合う公開済みエンコーダーを使い、実際のラベルで微調整するほうが取り組みやすいでしょう。ラベルが少ない場合は、SetFitの少数例ペア学習による文章分類のように、すでに文埋め込みとして学習されたモデルを適応させる方法も比較対象になります。両手法の組み合わせ効果を原論文が示しているわけではありません。
比較するのはベンチマーク順位だけではありません。業務の代表例と境界例を分けて評価し、学習費用、推論遅延、見逃してはいけないカテゴリの再現率を並べると、専用モデルを持つ価値を判断できます。
学習信号の密度を、改善の選択肢に入れる
独自の事前学習を行う規模になったら、モデルを大きくする前に、どの位置で何を予測させているかを点検する価値があります。ELECTRAのアブレーションは、同じ文章でも予測損失の置き方が下流性能を変える例です。
ただし、予測位置が増えるだけで自動的に効率化するわけではありません。コピーだけで解けない課題にすること、置換候補の質、生成器を含めた総演算量を同時に見る必要があります。
「難しい負例」を作る補助モデルの費用も数える
ELECTRAでは、生成器を強くすれば常に良くなるわけではありません。開発上のヒントは、補助モデル自体の性能より、その出力が本体にとって有用な課題になるかを測ることです。
たとえば独自コーパスでRTDを試すなら、生成器の正答率、実際の置換率、下流タスクの性能、総学習FLOPsを記録します。識別器の置換検出精度だけを最大化すると、簡単な置換ばかりを見抜いている状態を高く評価してしまう可能性があります。
限界
計算面では、事前学習中に生成器と識別器の両方が必要です。1更新は通常のMLMより重くなり、小型モデルでも論文の学習はGPU数日規模でした。新しい自己教師あり課題を組めば、小さなデータと短時間だけで基盤モデルが完成するわけではありません。
データ面では、原論文の事前学習と評価は英語です。日本語のトークン分割、専門略語、製品コードへ同じ改善が出る保証はありません。単純なランダム置換へ変えると課題の難しさも変わるため、生成器なしでも原論文と同じになるとは言えません。
能力面では、識別器は文章生成モデルでも事実確認器でもありません。置換ラベルは元トークンとの一致から作るため、現実に正しい文章か、回答が資料に裏付けられるかを直接教えていません。意味検索、文章生成、幻覚検出には、それぞれに適した学習と評価が必要です。
実装面では、サンプリング、正解ラベル作成、埋め込み共有、2つの損失の集計に注意が必要です。特に元と同じ候補まで誤って負例にすると、論文と異なる課題になります。著者の公開実装を参照する場合も、モデル設定と前処理を記録し、論文条件との差を確認してください。
再現性については、微調整の乱数による差があり、論文の中央値は毎回同じ結果を保証する値ではありません。タスク間で指標が異なるGLUEの平均だけでなく、自分の用途の指標を見て判断する必要があります。
よくある質問
Q. ELECTRAは文章を生成するLLMですか?
A. 主に文章理解用エンコーダーの事前学習手法です。学習中の生成器は置換候補を作りますが、標準的な利用では識別器を取り出して分類や回答位置の抽出へ微調整します。チャットの応答文をそのまま生成する方式ではありません。
Q. 生成器が出したトークンは、すべて偽物として学びますか?
A. 元と同じトークンが出た場合は「元と同じ」が正解です。選択位置に入ったかどうかではなく、元トークンとの一致でラベルを作ります。逆に、自然な言い換えでも別トークンなら置換扱いです。
Q. BERTをELECTRAに変えるだけで、推論も速くなりますか?
A. 同じサイズなら自動的には速くなりません。原論文のSmall同士では推論FLOPsは同じです。ELECTRAの利点は同じ事前学習予算で高い文章理解性能を得たことであり、推論を軽くしたい場合は小型モデルの精度と遅延を実測します。
Q. 日本語の業務分類には、何から始めればよいですか?
A. 日本語と業務用語を扱える学習済みモデルを出発点にし、分類ヘッドを付けてラベル付き文章で微調整する方法が考えられます。最初から生成器も用意する必要はありません。独立した評価集合で、未調整の文埋め込みによる分類などと比較してください。
Q. 置換を見抜けるなら、RAGの幻覚も検出できますか?
A. 原論文はその能力を保証していません。RTDの正解は元のトークンと同じかどうかで、資料に基づく回答かどうかとは異なります。幻覚の評価には、回答と根拠の対応を確認できる別のデータと評価方法が必要です。
今日の学び
この論文は、文章の一部だけを予測する事前学習の計算効率を扱いました。小さな生成器で置換候補を作り、識別器が入力全体で元トークンとの一致を判定する課題に変えることで、同じ計算予算での文章理解性能を改善しています。
得られるヒントは、AIを改善するときにモデル規模だけでなく、学習信号を与える場所と課題の難しさを設計することです。補助モデルを学習時に使い、配備時には本体だけを残す構成も、専用AIを作るための選択肢になります。