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

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

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

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

Attentionメカニズムと記憶ネットワーク|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #4 - lib-arts’s diary

AttentionメカニズムとTransformer|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #5 - lib-arts’s diary

BERTリポジトリのサンプル実行の流れ|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #6 - lib-arts’s diary

BERTリポジトリのコードリーディング①(概要を掴む)|言語処理へのDeepLearningの導入の研究トレンドを俯瞰する #7 - lib-arts’s diary

BERTはGLUEベンチマークを中心とする11のタスクでSOTAを達成し、事前学習(pre-trained)モデルとして大きな注目を浴びましたが、2019年6月に公開されたXLNetはBERTのパフォーマンスを上回ったと話題なので、#9以降ではXLNetについて取り扱っていきます。

[1906.08237] XLNet: Generalized Autoregressive Pretraining for Language Understanding

#9では論文のAbstractを元にXLNetの概要を確認しました。

#10ではBERTとの対比を考えるにあたり、AutoRegressiveとAutoEncodingについて上記の論文の情報をベースにBERTとの対比を通して内容の解説をしていければと思います。XLNetの考え方はAutoRegressiveに基づいていますが、組み合わせ(Permutation)を考慮することで双方向性を実現しています。
以下目次になります。

1. 事前学習におけるAutoRegressiveとAutoEncodingモデルの違い
2. AutoRegressiveと組み合わせ(Permutation)
3. Two-Stream Self-Attentionによる実装
4. まとめ


1. 事前学習におけるAutoRegressiveとAutoEncodingモデルの違い
1節においては言語処理の事前学習(Pre-training)における自己回帰(AutoRegressive)モデルと自己符号化(AutoEncoding)の違いについてまとめていきます。論文ではSection1のIntroductionとSection2.1のBackgroundで主に言及されているので、該当部分の記述を引用しつつまとめていきます。

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

まず上記がIntroductionの冒頭です。パラグラフの最終文において、事前学習の目的関数(pretraining objectives)の二つの成功例としてAutoRegressive言語モデルとAutoEncoding言語モデルが挙げられています。
次のパラグラフではAutoRegressiveの言語モデルに関して、数式で定義されています。

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

上記において、\Pi_{t=1}^{T} p(x_{t}|\mathbf{x})の形式で定式化されています(はてなTEXの記法的にキャプチャと同じ式を再現できなかったため、キャプチャの式の方が正しいです)。これは\Piがあることから、それぞれの単語の生成の確率のかけ算(product)を計算していることがわかります。以前の記事で言語モデルについて触れましたが、同時確率のp(\mathbf{x})をそのまま計算すると組み合わせ的な爆発により有意な統計的考察ができないため、同時確率を積の形に分解します。この際に言語処理が系列(難しければ数列の拡張と捉えておけば良いです)のモデリングであることを考慮し、条件付き確率の形に分解を行なっています(グラフィカルモデリングについて詳しく知りたければPRML下巻の8章の情報が豊富です)。ともかく、言語は系列(sequence)の\mathbf{x}=(x_{1},x_{2},...,x_{T})をそれぞれの単語の出現の条件付き確率の積の形に分解することだけわかればここでは十分です。
次のパラグラフではBERTを具体例として挙げながらAutoEncodingについて言及しています。

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

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

上記ではAutoEncodingは不完全な入力から元のデータを復元することで、双方向の文脈を再構築するとあります。これによる直接的な恩恵としては、AutoRegressiveのモデリングにおいて生じていた双方向の情報のgapについて性能を向上できたとあります。一方で[MASK]という不完全な入力(corrupted input)によるパフォーマンスの低下や、元のデータ(単語)の復元にあたって単語間の独立性を仮定するなど様々な欠点についても言及されています。
AutoRegressiveもAutoEncodingそれぞれ良い点と悪い点があり、それらの良い点を引き継ぐにはどうしたら良いかということで、XLNetが提案されています。

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

上記ではAutoRegressiveの拡張として、XLNetを定義したとあります。条件付き確率の形で同時確率を分解して一方向性の仮定をおいているAutoRegressiveにおいて、分解の順番(factorization order)の全ての取りうる組み合わせ(all possible permutations)を考慮することによって双方向性のモデリングを実現するとあります。また、AutoRegressiveモデルを拡張していることからXLNetは不完全なデータ入力(corrupted input)を与える必要がないとされています。

 ここまでの話がIntroductionで言及されていますが、Section2.1のBackgroundでもう少し詳しく言及されています。

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

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

Backgroundでは上記の(1)と(2)のようにAutoRegressiveの数式(1)の定義と、AutoEncodingの数式(2)の定義が行われています。
モデリングのそれぞれの良し悪しについて下記で言及されています。

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

独立性の仮定(Independence Assumption)と入力のノイズ(Input noise)はBERTの欠点、文脈依存のモデリング(Context dependency)については双方向のモデリングであるBERTの利点であるとされています。
これを受けて、XLNetではAutoRegressiveのモデルに双方向を導入するにあたり、分解の順番(factorization order)の組み合わせ(Permutation)について考慮しています。詳しくは2節でまとめていきます。


2. AutoRegressiveと組み合わせ(Permutation)
2節ではAutoRegressiveモデルに双方向性を実現するにあたって、組み合わせ(Permutation)を導入しています。

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

上記の第二パラグラフの言及がわかりやすいので、こちらをキャプチャしました。長さがTの系列\mathbf{x}にはT!の異なった順番(different orders)があるとされています。また、これを直感的に解釈して、「モデルのパラメータが全ての分解の順番を通して共有されるなら、モデルは全ての位置の情報を学習するだろう」と論述されています。

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

これを図で表現したのが上記です。系列\mathbf{x}を与えるのと同時にFactorization orderを与えることで、双方向性も考慮して学習が行えるように考えられています。


3. Two-Stream Self-Attentionによる実装
3節では実装についてまとめていきます。

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

上記にもあるように、組み合わせ(permutation)に基づいた言語モデリングの目的関数は望ましい特性を持っているものの、通常のTransformerの単純(naive)な実装ではうまく動かないだろうとされています。その解決策として、図の(c)のようなTwo-Stream Self-Attentionを導入したとあります。
ここで図の右側のAttention Masksはグラフ理論における到達可能行列(reachable matrix)を意味しています。図の例では3から全てのノードに到達でき、1からは自らを除く全てのノードに到達できないというのをマスクによって表現されています。このマスクにおいて色がついているものを1、ついていないものを0とすることで行列に直すことができます。
このようにマスクを介して処理を制御するのはよく見る実装ですが、有名どころだとMask RCNNなどが面白い例だと思います。

[1703.06870] Mask R-CNN

話が少々逸れてしまいましたので本題に戻ると、このようなマスクを介した処理を用いることによってTwo-Stream Self-Attentionを実現したと考えるのが良さそうです。


4. まとめ
#10ではXLNetの数式的な考え方の詳細として、「事前学習におけるAutoRegressiveとPermutation」について取り扱いました。
#11ではSection2.4で出てくるTransformer-XLについて、

[1901.02860] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
上記を踏まえながらまとめていきたいと思います。