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

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

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

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

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

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

#11からはXLNetにおいて導入された考え方である、Transformer-XL[2019]について取り扱っていきます。

[1901.02860] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
#11では論文のAbstractを元にXLNetの概要を確認しました。

#12ではTransformer-XL[2019]の論文のSection3のModelについて確認していきます。
以下目次になります。(今回はSection3を中心にまとめると良さそうだったので、目次をベースに章立てを行いました。)

1. Model(Section3)
2. Vanilla Transformer Language Models(Section3.1)
3. Segment-Level Recurrence with State Reuse(Section3.2)
4. Relative Positional Encodings(Section3.3)
5. まとめ

 

1. Model(Section3)
Section3の冒頭部では問題定義の再確認に際し、言語モデルの立式が行われています。

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

上記のように、\mathbf{x}=(x_{1},x_{2},...,x_{T})という単語(tokens)の系列に対して同時分布P(\mathbf{x})の推定を行うのが言語モデルにおける変動するパラメータの値の推定(estimate)になります。また、このまま同時分布(joint probability)を取り扱うと大変なので、自己相関的に(auto-regressively)積の形式に分解する(factorize)ことについても言及されています。
同時分布を分解するにあたっては、P(\mathbf{x})=\Pi_{t} P(x_{t}|x_{1},x_{2},...,x_{t-1})のように立式を行います。これによって問題はそれぞれの条件付き確率の推定という簡単な形へと変更することができます。このように定義した言語モデルをここではスタンダードなニューラルネットワークを用いて表現するとされています。それ以後の記載はスタンダードなニューラル言語モデルの話なのでここでは省略します。


2. Vanilla Transformer Language Models(Section3.1)
Section3.1では"Vanilla Transformer Language Models"とタイトル付けされています。まず、Vanilla Transformerというのが初見だったのですが、下記のように"We call it"によって名付けているのが確認できます。

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

色付けされた直前の文がVanilla Transformerの説明になっているため簡単に和訳します。

One feasible but crude approximation is to split the entire corpus into shorter segments of manageable sizes, and only train the model within each segment, ignoring all contextual information from previous segments.

和訳:『実現可能ではあるが粗いレベルの近似として、コーパス(文書群)全体をより取り扱える長さのセグメントに分割し、それぞれのセグメントに対してモデルを学習させるというのがある。この際にそれまでに出現したセグメント(previous segments)の文脈的な情報は無視している。』
Section3.1のこれまでの論述はTransformerに置いて固定長しか取り扱えないという課題に対してどうアプローチするかというのが主題なので、上記はそれの解決策としてコーパス(文章)の分割を行うことで対応するということを示唆しています。このアプローチに対し、"Vanilla Transformer"という名前付けを行なっています。

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

Vanilla Transformerの学習や推論については上図のFigure1にまとまっています。Transformer-XLについて触れるにあたり、通常のTransformerについて論述されていたと考えると良さそうです。


3. Segment-Level Recurrence with State Reuse(Section3.2)
Section3.2では"Segment-Level Recurrence with State Reuse"ということで、状態の再利用によるセグメント単位の再帰について触れられています。

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

学習と推論の際のTransformerの利用については上図で概要を把握することができます。

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

上記ではN×Lの形式で参照範囲が増加することに触れられています。これを理解するにあたって、WaveNet[2016]などの際に触れた、causal convolutionについて対比で考えると参考になると思います。ちなみにこちらの形式だと受容野(receptive field)が層の数に比例して(線形)で増加しますがL×N、dilated causal convolutionにすると指数関数のオーダーで増加させることができることも合わせて考えておくと良いです(L^N)。ここでLはTransformerのMAXの長さ、Nは層の数を表現したものとされています。

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

数式的には上記のように二つの文を定義し、下記のような形で隠れ層(Transformerモジュール)について定義されています。

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


4. Relative Positional Encodings(Section3.3)
通常のPositional Encodingsではうまくいかないということで、Relative Positional Encodingsについてまとめられています。


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