BERT論文解読
こんにちは。
以前BERTを実務で使った際に論文を読んだのですが、その時のメモを公開しようと思います。
ググれば日本語の論文解説はいくらでも出てくるのでアレですが、備忘録的に残そうと思いブログに載せました。自然言語処理系の論文をちゃんと読むのが初めてだったので当時かなり苦労しながら解読した記憶があります。
内容
アブスト
- BERT:Bidirectional Encoder Representations from Transformersの略
- 直訳:双方向のトランスフォーマーによるエンコーダー表現
文脈を前後両方から条件付けてラベルの無い文書を双方向的に事前学習する - 1層加えてファインチューニングするだけで、様々なタスクに対応したモデルを作ることができる
大幅なモデルの変更が要らない - 11のタスクでSoTA(State-of-The-Art:最先端レベル)の結果を出した。
イントロ
- 事前学習は自然言語処理のタスクに有効
単語レベルのタスクだけでなく文章レベルにも有効 - 事前学習にはfeature-basedとfine-tuningのタスクがある
現状、事前学習の特にfine-tuningにおいて表現力が制限されている。
一方向の学習にしか使わないのは参照するトークンが前だけであり、制限されてしまうBERTはmasked language model(MLM)を用いることで一方向の制限を緩和
- 結果として、
Related Work
自然言語処理の変遷についての内容
1.教師なしのfeature-basedアプローチ
word embeddingや単語表現といった手法は文単位やパラグラフ単位のembedding(埋め込み)のような、粗い粒度に使われるようになった。
※おそらく単方向の事前学習モデルが主語ELMoとその前任のモデルは文脈依存の特徴を双方向の言語モデルから抽出した
- 文脈を前後双方向の連結で表現
- これをタスク固有のアーキテクチャと統合したことで、ELMoはSoTAになった。
- LSTMsもELMoと類似したモデルで、feature-basedで浅い双方向性(not deeply bidirectional)という特徴を有する
cf)BERTは深い双方向性
2.教師なしのfine-tuningアプローチ
- 初期はラベルの無いテストから学習したword embedding
- ラベルなしテストからの事前学習+教師ありのfine-tuningで文書のエンコードがされるようになった
- OpenAI GPTがSoTAのモデルとなっていた(BERT以前)
3.教師ありデータからの転移学習
BERT
pre-trainingとfine-tuningからなる
- pre-training:複数のpre-trainingタスクのもとラベルなしデータを用いて学習
- fine-tuning:pre-trainingで作成されたパラメータを、下流タスクのラベル付きデータを用いてfine-tuning
- 特徴:タスク間でのアーキテクチャに大きな差がなく、全てpre-trainingでのアーキテクチャをベースにしている
Model Architecture
多層双方向Transformer Encoder
- Transformerのベースとなった論文:
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Advances in Neural Information Processing Systems, pages 6000–6010.
- Transformerのベースとなった論文:
BERT_base:OpenAI GPTと同じモデルサイズだが、Transformerは双方向から解読できる
Input/Output Representations
- Input:ひとつのトークンで一文もしくはペアの文の両方を表現できる
これにより、一文は任意のスパンのテキストと認識されてインプットされる(この1セットをシーケンスと呼んでるっぽい) - CLS:各シーケンスの最初のトークン
final hidden vectorでCと表記(これ以外のトークンはTと表記) SEP:シーケンスを分けるために使うトークン
SEPで分けた後、各トークンがAとBのどちらに属するかを示すlearned embeddingを追加する(上図のEに相当)
BERTのInputは各単語をトークン、セグメント、ポジションのembeddingで表現する(下図)
Pre-training BERT
二つのタスクからなる
1.Masked LM
- BERTは双方向から学習するが、普通は双方向から学習するとモデルは自明にターゲットの単語を予測できてしまう
インプットしたトークンをランダムにマスキングして、マスキングされたトークンを予測するようにした(Masked LM; MLM)
これだけだとマスクされたトークンがfine-tuning時に出現しないためpre-trainingとfine-tuningでミスマッチが起こるので、80%の確率でマスキング、10%の確率でランダムなトークンに、10%の確率でそのままトークンを使用するようにした。
2.Next Sentence Prediction(NSP)
文脈を理解するモデルを作るために、単一の言語コーパスから生成できるNext Sentence Predictionタスクを事前学習
以前のNSPでは文章粒度のベクトルしか下流タスクに転送できなかったが、BERTは全てのパラメータを転送して、エンドタスクのモデルパラメータを初期化できる
3.Pre-training data
- BooksCorpus (800M words)とEnglish Wikipedia (2,500M words)から学習
Fine-tuning BERT
TransformerのselfattentionメカニズムによってBERTは多くの下流タスクをモデル化できるため、fine-tuningが容易
- BERTにタスク固有のインプットとアウトプットを流し込み、全パラメータをend-to-endでfinetuneする
一般的な手法はテキストの組に対するエンコードとbidirectional cross attentionを別々に行うが、BERTは同時に行う
- pre-trainingに比べるとfine-tuningは短時間で処理される
Experiments
GLUE
- GLUE:The General Language Understanding Evaluation benchmark
様々な自然言語理解のタスクのコレクション - GLUEのテストにおいて、BERT(BASEとLARGE)は全てのタスクにおいて他の手法を上回るスコアをたたき出した
- BERTBASEとOpenAIGPTはモデルアーキテクチャにおいてはほぼ同一
- LARGEの方がBASEよりもすべてのタスクで優れている(特に訓練データが少ない時に顕著)
SQuAD v1.1
- SQuAD v1.1: The Stanford Question Answering Dataset
10万件のQAペアデータ
Question Answeringタスクにあたる - SQuAD+TriviaQAでfine-tuningしたBERTは全てのシステムのスコアを上回った(人間のテスト結果も上回った) TriviaQAを使用していなくても既存の手法より高いスコアとなった
SQuAD2.0
- SQuAD1.1の拡張版(長い解答のデータを含めた/答えが存在しないという選択肢が追加されている)
- こちらも過去のF1最高値を5.1ポイント更新した(78.0→83.1)
- ここでは人間の方がスコアが高い
SWAG
- SWAG:The Situations With Adversarial Generations dataset
常識的な推論を評価する11.3万件の文の組- 与えられた文に対して最ももっともらしい選択肢を選ぶ
- 正解率でEDIM+ELMoやOpenAI GPTを上回った
Ablation Studies
Effect of Pre-training Tasks
2種類の事前学習モデルを評価することでBERTの深層双方向性の重要度を確認
比較↓
- BERTとNo NSPを比較することでNSPの重要性が、No NSPとLTR&No NSPを比較することで双方向性表現の重要性が分かる
- BiLSTMを追加してもBERTの方が良いことが分かる
- LTRとRTLを別々に行って結合することもできるが、時間がかかる・非直感的・各層に二つのモデルのコンテキストが存在するので双方向性モデルより性能が劣るといった欠点がある(よくわからず)
Effect of Model Size
fine-tuningの正解率に対するモデルサイズの影響を調査
- ハイパーパラメータや学習手順は変えずに、レイヤー数・隠れユニット・attention headsを変えて比較
大きなモデル程正解率が上がる傾向
- すでに大きなモデルでも改善の余地があることを示唆
- モデルサイズを大きくすれば大きなスケールのタスクを改善できることは以前から言及されていたが、モデルサイズを大きくすることで小さなスケールのタスクに対しても改善が見込まれ、これは新たな発見と言えそう
↓ - モデルサイズの変更に関する仮説
Feature-based Approach with BERT
Fine-tuning Approach:事前学習したモデルにシンプルな分類層を追加し、下流タスクで全パラメータの微調整を行うやり方
- cf. Feature-based Approach:事前学習されたモデルから固定された特徴を抽出するやり方。下記の利点がある
- すべてのタスクを簡単に表現できないので、タスク固有のモデルアーキテクチャを追加する必要がある
- 学習データの高価な表現を一度事前計算し、その上でより安価なモデルで多くの実験を行えるという計算上の利点がある
これら二つのアプローチをそれぞれBERTに取り入れたときの結果を比較↓
- fine-tuning>feature-basedとなった
- BERTLARGEが最も性能良い
- Feature-based Approach の中ではConcat Last Four Hidden(※)が最も性能が良く、fine-tuningと0.3ほどのF1値の差しかなかった
※事前に学習したTransformerの上位4つの隠れ層からトークン表現を連結する方法
BERTはfine-tuning・feature-basedのどちらのアプローチにも効果的と言える
Conclusion
言語モデルの転移学習による近年の実証的な改善は、教師なしの事前学習が多くの言語理解システムに不可欠な部分であることを示した。
特に、これら結果は低リソースのタスクでも深い一方向性のアーキテクチャの恩恵を受けることを可能にした。
↓
この研究によって、深い双方向性のアーキテクチャにも一般化され、同じ事前学習済みモデルを用いて幅広い自然言語処理のタスクに対応できるようになった。
用語
- タスク:自然言語処理の各ジャンルの問題のこと。質問応答や文書分類、翻訳など
- named entity recognition:固有表現抽出
- トークン:分割された単語
- 分散表現:トークン同士の関係性をベクトルで定義すること
- objective function:目的関数
- Embedding:埋め込み。単語や文に対して固有のベクトルを与えることを指す
- オートエンコーダ:NLの一つで入力されたデータを一度圧縮して重要な特徴量を残した後、再度元の次元に復元処理するアルゴリズム
- コーパス:テキストや発話を大規模に集めてデータベース化した言語資料
- シーケンス:単語データの並びのことで、いわゆる文章にあたる
- エンコード:信号やデータを変換すること。符号化。 MLM:Masked Language Model;入力された単語のうち一部をマスキングし、文脈からマスキングされ単語を予測するようなモデル
- bidirectional cross attention:隣接する文から学習する、みたいなことだと思っている
- EM:Exact Match;予測解と実際の解が完全に一致している割合
- F1:適合率と再現率の調和平均
- Ablation Studies:モデルを構成する要素をあえて削除し、その要素がモデルの性能にどう貢献しているのかを評価すること