RoBERTa(論文の詳細③ Training Procedure Analysis)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #16

f:id:lib-arts:20190818234338p:plain

言語処理へのDeepLearningの導入をご紹介するにあたって、#3〜#8においては、Transformer[2017]やBERT[2018]について、#9~#10ではXLNet[2019]について、#11~#12ではTransformer-XL[2019]について取り扱ってきました。

XLNet②(事前学習におけるAutoRegressiveとPermutation)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #10 - lib-arts’s diary

Transformer-XL(論文のAbstractの確認)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #12 - lib-arts’s diary

#13以降では2019年7月にリリースされたBERTベースでハイパーパラメータ(学習にあたってのlossやデータセット)のチューニングを行なった事前学習モデルであるRoBERTa[2019]について取り扱っていきます。

[1907.11692] RoBERTa: A Robustly Optimized BERT Pretraining Approach

#13では上記のAbstractをベースにRoBERTa[2019]の概要について、#14ではRoBERTa[2019]の論文のIntroductionとBackgroundについて、#15ではRoBERTa[2019]の論文のSection3のExperimental Setupについて確認しました。

RoBERTa(論文のAbstractの確認)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #13 - lib-arts’s diary

RoBERTa(論文の詳細① Introduction&Background)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #14 - lib-arts’s diary

#16ではRoBERTa[2019]の論文のSection4のTraining Procedure Analysisについて確認していきます。
以下目次になります。

1. Training Procedure Analysis(Section4 冒頭)
2. Static vs. Dynamic Masking(Section4.1)
3. Model Input Format and Next Sentence Prediction(Section4.2)
4. Training with large batches(Section4.3)
5. Text Encoding(Section4.4)
6. まとめ

 

1. Training Procedure Analysis(Section4 冒頭)
まずは冒頭部について確認していきます。

f:id:lib-arts:20190828212243p:plain

上記ではSection4の概要について言及されています。冒頭の文を和訳すると、「このSectionではBERTの事前学習を成功させるにあたってどの選択が重要かについて探索と定量化を行う。」となります。すなわち、BERTの学習における様々な設定を検討していくことを示唆しており、各サブセクションでそれぞれの視点から考察を行なっています。
基本的にはBERT_{BASE}のモデルからスタートしており、それぞれのパラメータとしてはL=12(隠れ層が12層)、H=768(隠れ層が768次元)、A=12(Attention Headが12)、1億1,000万のパラメータ数(VGG16と大体同じくらい)であることも示されています。


2. Static vs. Dynamic Masking(Section4.1)
Section4.1ではBERTの事前学習におけるマスキングについて話がまとまっています。

f:id:lib-arts:20190828221010p:plain

上記をパラグラフ単位で読解していきます。まず第一パラグラフについてまとめます。BERTの元論文で用いられているマスキングはデータの前処理の際に作成して静的(static)と表されているように学習の間は固定するとされています。同様のマスクの使用を防ぐために、学習データを10倍に複製し10通りのマスクを生成し、学習40エポックにおいて変更するとされています。これにより学習において4度のみの同じマスクの出現に抑えたとされています。
第二パラグラフではこれに対して、提案手法であるdynamic maskingを紹介しています。dynamic maskingではデータをモデルに入力するたびにマスクのパターンを生成するとされています。これによりより多くの学習ステップやデータセットを用いることができるようになったと記述されています。

f:id:lib-arts:20190828221945p:plain

結果の比較としては上記のTable1で示されています。大元のBERTとstatic、dynamicをそれぞれ比較を行なっています。実験結果としてdynamicの方が良いので以降はdynamic maskingを用いるとされています。


3. Model Input Format and Next Sentence Prediction(Section4.2)
Section4.2ではBERTの事前学習(pretraining)の際にMasked Language Modelと同様に用いられているNext Sentence Prediction(NSP)について記載されています。

f:id:lib-arts:20190828232006p:plain

結論から述べると、このNSPは用いないで実装する方が良いという結果になったため、RoBERTaでは用いないで実装がされています。以下パラグラフ単位で読解を行っていきます。第一パラグラフでは、オリジナルのBERTについて言及した上でその学習にあたってのlossの一つとしてNSP(Next Sentence Prediction)について言及しています。NSPは二つの文が連続した文かどうかの判定を行うタスクです。
第二パラグラフでは、BERTのオリジナル論文においてNSPの重要性について触れられた(実験においてNSPを用いないと大きく精度が下がったとされています)後に、逆接として直近の研究でNSPの必要性に疑問が投げかけられているとされています。
第三パラグラフでは、第二パラグラフで生じた不一致(NSPが必要か否か)をより理解するにあたって、下記でまとめる学習のフォーマットについて検討したとあります。

・Segment-Pair + NSP
・Sentence-Pair + NSP
・Full-Sentences
・Doc-Sentences

上記の4パターンで検証を行った結果が下記のTable2にまとめられています。

f:id:lib-arts:20190828233732p:plain

上記に対する本文の論述を確認します。

f:id:lib-arts:20190829154041p:plain

上記では、NSP lossを用いないケース(Doc-Sentences)とBERT_{base}を比較しており、NSP lossを取り去ることで少しながらもパフォーマンスの向上が図れたとされています。

f:id:lib-arts:20190829154059p:plain

また、上記ではDoc-SentencesとFull-Sentencesを比較し、多少ながらDoc-Sentencesが上回るものの、バッチサイズに着目して残りの実験ではFull-Sentencesを用いたとされています。

ここまでが論文に書かれている内容ですが、差自体が僅差なのでどちらが良いかの断言は行うべきではないものの、NSPを用いなくても用いた際と同様の結果が出ていることについては評価できるのではないかと思われました。


4. Training with large batches(Section4.3)
Section4.3では学習時のバッチサイズの増大について議論されています。

f:id:lib-arts:20190829155023p:plain

以下パラグラフ単位でリーディングしていきます。
第一パラグラフでは、従来のニューラル機械翻訳において学習率が適切に設定されれば大きなバッチを用いる学習では、最適化のスピードと精度(end-task performance)を向上させると述べた上で、BERTもそれは同様であるとしています。
第二パラグラフでは、バッチサイズとステップ数の関係性についてまとめています。バッチサイズが256の際のステップ数が1,000,000のケースは、バッチサイズが2,000の時は125,000ステップ、バッチサイズが8,000の時は31,000ステップに対応するとされています。この関係性を実際に計算してみると下記になります。

f:id:lib-arts:20190829160256p:plain

第三パラグラフでは、第二パラグラフで考えたケースにおけるパフォーマンスの検証をTable3でまとめています。

f:id:lib-arts:20190829160833p:plain

上記では、計算コストの効率自体は2K(2,000)の際が良いとされています。

f:id:lib-arts:20190829160856p:plain

とはいえ上記はあくまで同じ計算コストにおける話であり、最終文でバッチが大きい方が並列化なども行えることから以後の実験では8,000のバッチサイズを用いたとされています。
第四パラグラフでは、32K(32,000)のバッチサイズで行われた研究を参照しつつ、バッチサイズの大きさの限界については今後の研究トピックとする(leave further exploration)とされています。

通常のマシンスペックを考えるならバッチサイズが256の時点でかなり厳しいのですが、精度面でのSOTAを探索する研究のため、その辺の制約は取り払った上で様々な実験が行われています。


5. Text Encoding(Section4.4)
Section4.3では文書のEncodingについて議論されています。

f:id:lib-arts:20190829163422p:plain

以下パラグラフ単位でリーディングしていきます。
第一パラグラフでは、Byte-Pair Encoding(BPE)の紹介がされています。BPEは文字(character)レベルと単語(word)レベルの双方を考慮したエンコーディングで、単語全体だけを考慮するより、subwords unitsに着目することができるとされています。
これを少し具体的に考えると、英語の単語もいくつかの部分の組み合わせで出てきているので、必要な考察だと思われます。例えば"re"は「再」という意味、"bi"は「二つの」という意味、"cycle"は車輪という意味合いですが、"re"と"cycle"をくっつけるとrecycleでリサイクルの意味だし、"bi"と"cycle"をくっつけるとbicycleとなり、自転車の意味になります。このように英単語はいくつかの部分で構成される時もあるので、その際にこのsubwordsという考え方は有効です。
第二パラグラフでは、Byte-Pair Encoding(BPE)において用いられているunicodeでは今回の研究のように大きなコーパスを使用する際には不向きのため、bytesを用いたエンコードを用いることで回避する方法について言及されています。
第三パラグラフでは、これまでの話を受けて、characterを用いてBPEを行っているオリジナル論文のBERTに対し、この論文ではbyte-levelのBPEを用いたとされています。
第四パラグラフでは、両者の差異が現状はそれほど大きくないと述べた上で、詳細の研究は将来的な研究トピックとする(left to future work)とされています。


6. まとめ
#16ではRoBERTa[2019]の論文のSection4のTraining Procedure Analysisについて確認しました。Section4ではハイパーパラメータのチューニングに関して行われた様々な実験や各観点からの考察が行われていました。
#16ではSection5のRoBERTa以降について取り扱います。

 

↓また、当記事のシリーズの内容を元に再構成と少しだけ加筆を行い電子書籍化を行いました!pdf版が欲しいなどありましたら下記をご購入いただけたら大変嬉しいです!!