はじめまして,インターン生の三澤遼です。本記事では,BERT以降の事前学習済みモデルを体系化し,主要なモデルについて解説します。TransformerやBERTについて事前知識があると理解しやすいと思います。
- BERT以降のNLP分野の発展
- 学習方法の改良について
- 事前学習
- 下流タスクでの学習
- まとめと今後
- ELYZAでは仲間を募集しています!
- 参考
BERT以降のNLP分野の発展
BERT以前の典型的な言語モデルには,特定のタスクを解くために大量のラベル付きデータが必要であるという問題がありました。その解決のため,近年は汎用的な言語能力の獲得を目的として,特定タスクにモデルを適応する前に大規模コーパスで学習をする事前学習が主流となっています。これによって,応用先のタスクについてのデータが少量であっても高性能なモデルを訓練することが可能になります。
2018年に登場したBERTが事前学習モデルの代表例です。BERTの登場以降,その応用モデルが数々開発され,タスクによっては人間を超えるような性能が実現されました。深層学習が威力を発揮していた画像や音声分野を超えるようなブレイクスルーが自然言語処理分野で起ころうとしていると言われています。
これまでの事前学習モデル研究の方向性を分類したのが図1です。
本投稿では,図1の「性能の追求」について「学習方法改良」の観点から解説します。「計算量・計算コストの削減」,「適応範囲の拡大」については次回以降の投稿をチェックして下さい!
学習方法の改良について
一般的に学習には事前学習と下流タスク(応用先のタスク)での学習という2つの段階があり,それぞれの段階での学習を改善するための研究が行われています。学習方法や,それを組み込んだモデルについて解説していきます!
ちなみに,先月の論文で,事前学習 (pre-training) 後,下流タスクに適応する (fine-tuning) 前に更に学習を行うpre-finetuningが提案されました。この論文の要約を弊社のTwitterで投稿したので是非チェックしてください!
事前学習
BERTではMasked Language ModelingとNext Sentence Predictionによる事前学習が導入されました。まずはMasked Language ModelingをLanguage Modelingと比較しながら解説し,その後,これを改善または刷新した学習方法を解説していきます!Next Sentence Predictionは,Contrastive Learningのセクションで解説します。
Masked Language Modeling
Masked Language Modelingは,従来使われていたLanguage Modeling(言語モデリング)の一方向性を解消するためにBERTで初めて導入されました。言語モデリングが,文字列の頭から次々に文字を予測していくのに対し,Masked Language Modelingでは,入力文字列のいくつかの単語をターゲットとしてマスクし,文字列を両方向(左から右,右から左の両方)から見てそれを予測します。いわゆる,穴埋め問題を解くということです。
Language ModelingとMasked Language Modelingを例を用いて比較したのが表1です。Language Modelingは,一方向性があり時系列を遡って予測できないため,入力を2分割し末尾側をターゲットとして扱います(Thank you for invitingを入力としてme to your party last weekを予測します)。一方,Masked Language Modelingはテキスト中の任意の単語(表1ではforとinviting)をマスクすることができます。
本セクションでは,Masked Language Modelingを改善した方法で学習したモデルとそこから派生した方法 (Translation Language Modeling, Sequence-to-Sequence Masked Language Modeling) 及びそれらを用いたモデルを紹介します。Language Modelingを用いたモデルにはGPT-3があり,下流タスクでの学習についての解説で紹介します。
改良版Masked Language Modeling
RoBERTa (2019-07)
RoBERTaは,BERTの事前学習方法を見直しました。特に,Masked Language Modelingにおいて,系列を入力するたびにマスクのパターンを変える動的マスキングを導入しました。BERTでは同じ入力には同一のマスクをする静的マスキングを利用していましたが,これではマスキングのバリエーションが減り過学習が起こるためです。
また,BERTで導入されたNext Sentence Predictionを排除しました。この理由についてはNext Sentence Predictionのセクションで解説します。
その他マイナーな変更も加えることにより,4タスクでSOTAを達成しました。
Translation Language Modeling
図2のように,原文(英語)と翻訳文(フランス語)のどちらもマスクをします。Translation Language Modelingは,英語でマスクを埋めるために,周辺語だけでなく翻訳文にも注意を払うことで原語と翻訳語の対応も学習させるタスクです。
XLM (2019-01)
XLMで初めてTranslation Language Modelingが導入されました。Translation Language ModelingをMasked Language Modelingと併用したXLMは,XNLIという多言語の推論タスクでSOTAの正解率を4.9%上回りました。
Sequence-to-Sequence Masked Language Modeling
一般的なMasked Language Modelingが,マスクに当てはまる文字列を,エンコーダーからベクトルとして出力し,そこから確率を計算して予測するのに対し,Sequence-to-Sequence Masked Language Modelingは,エンコーダーで出力されたベクトルを,デコーダーを用いて文字列へと変換し予測するタスクです。簡単に言うと,Masked Language Modelingではモデルの出力がベクトル,Sequence-to-Sequence Masked Language Modelingでは出力が文字列と言うことです。
T5 (2020-07)
T5は,Sequence-to-Sequence Masked Language Modelingで事前学習するだけでなく,応用先のタスクにおいても入力と出力を文字列として統一しました。図3はその例を示しています。1つ目は,英語からドイツ語への翻訳タスク,2つ目のcolaはCorpus of Linguistic Acceptabilityの略で,テキストが文法的に正しいかを判別するタスク(のためのデータセット)です。3つ目のstsbはSemantic Textual Similarity Benchmarkの略であり,2文の類似度を評価するタスクで,4つ目は要約タスクです。いずれのタスクにおいても,入出力ともに文字列となっています。
このSequence-to-Sequenceの統一的なフレームワークを用いることで,提案されてきた様々な事前学習方法の有効性を包括的に評価しました。
その他,1兆単語で事前学習したことなどにより,ほとんどのタスクでSOTAを達成しました。言語理解能力を測るSuperGLUEというベンチマークで,去年の末までは人間を除いて1位でした。現在は,RoBERTaを改善したDeBERTaやT5の改良版が人間超えを達成しています。
次の2つのセクションでは,Language ModelingやMasked Language Modelingの改良を目的として提案された,これらとは異なる事前学習方法 (Permuted Language Modeling, Denoising Auto Encoder) を解説していきます!
Permuted Language Modeling
Permuted Language Modelingとは,入力文字列の単語を,文字列の頭からではなく,ランダムな順番で予測する方法のことです。図4の例では,予測する順番をThank, you, for, visiting, this, blogから,you, this, blog, visiting, for, Thankに替え,visiting以前に与えられたyou, this, blogに基づき,visitingを予測しています。
重要なのは,入力文字列自体は並び替えることなく,予測の順番を変えているということです。これは,各単語が元文字列中で何番目に出てきたかを同時に入力しているため可能です。 入力文字列を並び替えないのは,応用先のタスクにおいて単語が並び替えられた入力は見ないからです。
入力を左から右にしか見れないLanguage Modelingとは違い,予測の順番をランダムにすることにより,文脈依存性の理解力が向上します。
また,Masked Language Modelingの,マスクとして用いられる[MASK]が応用先のタスクにおいて現れないため事前学習とファインチューニングの間に解離が生じるという問題も解消します。
つまり,Permuted Language ModelingはLanguage ModelingとMasked Language Modelingの課題を克服しました。
XLNet (2020-01)
XLNetは,Permuted Language Modelingを初めて導入し,QA・推論タスク・感情分析を含む20個のタスクでBERTを上回りました。
ちなみに,XLNetの論文では'Permutation' Language Modelingと書いてありましたが,'Masked' Language Modelingとの対応を考え,参考[1]に則りPermuted Language Modelingとしました。
Denoising Auto Encoder
Denoising Auto Encoderとは,入力にノイズを加え元々の入力を復元するモデルです。事前学習においては,
1単語ごとにマスク (token masking)
入力文字列の順番入れ替え (sentence permutation)
単語を一つ選んで(図5のC)先頭になるようにローテーション (document rotation)
単語削除 (token deletion)
0単語の場合も含め,連続する単語に単一マスクの使用 (text infilling)
といった手段で入力を改変し,元の入力を復元する方法が採られています。
BART (2019-10)
BARTは,Denoising Auto Encoderとして,順番入れ替え + 連続する単語に単一マスクによる入力系列の改変を採用しました。改変された入力をBERTのような双方向エンコーダーでエンコードした後,それをGPTのような自己回帰デコーダーに通して元の入力系列を復元します。
RoBERTaと同様なパフォーマンスを実現し,抽象的な対話・QA・翻訳タスクでSOTAを達成しました。
Contrastive Learning
本セクションは,Next Sentence Prediction及びそれを改善した方法についての解説です。
Masked Language Modelingといったこれまでに紹介した事前学習方法では,モデルは1文を受け取って,その文中の単語間の関係や文全体を理解するタスクが課せられました。Contrastive Learningでは,モデルは2つの文を入力として受け取って比較し,それらに関係があるかどうかを理解する能力を身につけます。
Next Sentence Prediction
図6のように,訓練用コーパス(例 : Wikipedia)中から取り出した2文(文A,文Bとします)を入力とします。文Bは,それぞれ50%の確率で文Aに続く文か同コーパス内の別文書からの文になっていて,2文目が1文目に続く文かどうかを判別するタスクです。 しかし,RoBERTaについての論文など様々な論文でNext Sentence Predictionを外すことによってむしろ性能が向上することが報告されています。その理由として,次に紹介するSentence Order Predictionを提案した論文では,2文目が別の文書からの文である場合,1文目と2文目のトピックが異なっており,簡単なトピック分類タスクになっていることが挙げられています。先述したように,テキスト間の関係性を理解する能力を身につけさせることが目的なので,これは望ましくないですね。
Sentence Order Prediction
Next Sentence Predictionの代替として提案された,学習データから連続する2文を抽出し,文の順番が入れ替わっているかどうかを予測する方法です。
ALBERT (2020-02)
Sentence Order PredictionはALBERTで初めて導入されました。このモデルでは,パラメーターを大幅に削減する方法も導入されていますが,具体的な方法は次回の投稿で解説します。他モデルよりもパラメーターが少ないにも拘らず,ほとんどのタスクでSOTAを達成しました。
Replaced Token Detection
Replaced Token Detectionとは,図7のように,入力テキストの一部の単語を別の単語で置換し,各単語が置換されているかどうかを文脈から予測する方法です。
Masked Language Modelingは,入力単語数に比べれば非常に少ないマスクについてのタスクです。それに対し,Replaced Token Detectionは入力テキスト全体に対するタスクであるため,計算効率が上昇します。
ELECTRA (2020-03)
ELECTRAは,Replaced Token Detectionを用いて40万ステップで学習した場合,RoBERTaやXLNetとパラメーター数はほとんど同じで,計算量は1/4であるにも拘らず, SQuADという読解力を測るベンチマークにおいて同等の結果を達成しました。
下流タスクでの学習
In-context Learning
In-context Learningとは,特定のタスクにおいてパラメーターを更新する(=個別タスクに適応する,fine-tuningするとも言います)ことなく,タスクをその説明や入出力例を見る中で学習することです。図8の例では,sequence #1で足し算,#2で文字並び替え,#3で英語からフランス語への翻訳といったタスクを学習しています。In-context Learningと,図8のようなouter loopでの学習(大規模コーパスを用いた事前学習)を組み合わせた学習はメタ学習と呼ばれています。
特に,In-context Learningにおいて与えられる入力が0,1,または十分少ない場合をそれぞれZero-shot Learning,One-shot Learning,Few-shot Learningと呼び,これらは事前に言語知識を身につけておき,タスクの説明や例を見る中で学習するという点において,人間と似ています。更に,事前学習済みモデルであったとしても特定のタスクに適応するためにラベル付きデータが必要であり,アノテーションに多大なコストがかかるという問題も解消します。
GPT-3 (2020-7)
GPT-3は,膨大なパラメーターを有すとともに大規模なデータセットで学習することによって,Few-shot Learningであっても高性能を達成しました。パラメーター数は,BERT-BASEの約500倍である1750億であるため,計算コストは非常に高く学習には約4億9千万円かかり,1つのGPUを使った場合,355年かかるとされています(参考[11]より)。 たった64個のタスク例しか与えられない場合でも,例えばTriviaQAという読解力や問題解答力を測るベンチマークでファインチューニングされたSOTAモデルを超えました。
また,GPT-3は,文字列の頭から次々に現れそうな文字を予測していくLanguage Modelingによって事前学習しているため,言語生成能力に長けています。タイトルやサブタイトルが与えられると記事の生成をすることも可能です。図9はGPT-3が生成した記事ですが,88%もの人がこれを人間が書いたと判断しました。
GPT-3は研究だけでなく,社会実装の観点でも注目されています。弊社のTwitterで,北米での社会実装例をまとめたブログを紹介しているので,チェックしてみてください!
まとめと今後
本投稿では,BERT以降の研究の方向性を分類し,事前学習の方法に関して解説しました。
紹介したGPT-3やT5などが高い言語能力を有する一方で,パラメーター数が膨大で実応用が困難であるという問題があります。そこで重要となるのがモデル圧縮というパラメーター削減の技術で,これは次回の「Part 2 計算量・計算コストの削減」で紹介します。
是非,次回以降もご一読ください!
ELYZAでは仲間を募集しています!
ELYZAでは、「未踏の領域で、あたりまえを創る」をミッションに掲げ、自然言語処理(NLP)・リテールテックの2領域にフォーカスして、「研究開発」・「共同研究」・「サービス開発」の3つの活動を行っております。
研究開発に興味がある方も、機械学習を活用したサービス開発に興味がある方も、是非お気軽にご連絡ください。
参考
- Qiu, Xipeng, et al. "Pre-trained models for natural language processing: A survey." arXiv preprint arXiv:2003.08271 (2020).
- Liu, Yinhan, et al. "RoBERTa: A Robustly Optimized BERT Pretraining Approach." arXiv preprint arXiv:1907.11692 (2019).
- Lample, Guillaume, and Alexis Conneau. "Cross-lingual language model pretraining." arXiv preprint arXiv:1901.07291 (2019).
- Raffel, Colin, et al. "Exploring the limits of transfer learning with a unified text-to-text transformer." arXiv preprint arXiv:1910.10683 (2019).
- Yang, Zhilin, et al. "XLNet: Generalized Autoregressive Pretraining for Language Understanding." Advances in neural information processing systems. 2019.
- Paper Dissected: “XLNet: Generalized Autoregressive Pretraining for Language Understanding” Explained
- Lewis, Mike, et al. "BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension." arXiv preprint arXiv:1910.13461 (2019).
- Lan, Zhenzhong, et al. "ALBERT: A lite bert for self-supervised learning of language representations." arXiv preprint arXiv:1909.11942 (2019).
- Clark, Kevin, et al. "Electra: Pre-training text encoders as discriminators rather than generators." arXiv preprint arXiv:2003.10555 (2020).
- Brown, Tom B., et al. "Language models are few-shot learners." arXiv preprint arXiv:2005.14165 (2020).
- Jay Alammar, How GPT3 Works - Visualizations and Animations.