BERTを超えたXLNetの紹介

この記事では、「BERTを超えた!」と話題のXLNetとその基幹となっている技術について説明します。

概要

https://arxiv.org/abs/1906.08237

自然言語処理のタスク学習の流れと事前学習の種類

深層学習を用いた自然言語処理は翻訳、QAタスク、文書分類など多岐にわたります。

GRUを用いた自己回帰言語モデル。単語を順々に読込み、順々に予測する (画像の引用元:https://jeddy92.github.io/JEddy92.github.io/ts_seq2seq_intro/)
自己符号化をもとにした事前学習手法であるBERT。 (画像の引用元(https://arxiv.org/pdf/1810.04805.pdf))

XLNetと関連研究

Transformer

https://arxiv.org/pdf/1706.03762.pdf

Transformerの全体図。Multi-Head Attentionとposition-wise Feed Forward Networksを組み合わせたブロックをEncoder, Decoderそれぞれで6つ積層させたモデル。
dot product Attention
Transformer を文に適用した際の模式図

Transformer-XL

https://arxiv.org/pdf/1901.02860.pdf

通常のTransformerの学習・推論。固定長(=4)の情報しか扱えない。
Transformer-XLの学習と推論。過去の情報を固定して使うことで、固定長以上の情報を扱える。

ELMo

https://arxiv.org/pdf/1802.05365.pdf

ELMOの概念図。https://arxiv.org/pdf/1810.04805.pdfより

BERT

https://arxiv.org/pdf/1810.04805.pdf

(左)順方向・逆方向それぞれの方向から”tennis”を予測した際の条件付き確率 (右)ELMoの模式図
BERT, GPT, ELMoの比較

XLNet

さて、やっと本題のXLNetに入ります。

  1. 後述するようにBERTのような自己符号化モデルでは、予測対象の単語が複数あった場合、自己回帰モデルのように予測対象の単語間の依存関係をとることができない

単語の予測順序の入れ替え

自己回帰言語モデルの弱点である「双方向の情報を同時に扱えない」という点を克服するために、「単語の予測順序を入れ替える」手法をXLNetでは使っています。しかし、単語を入れ替えた文書をそのまま入れるのではなく、Transformer-XLで提案されたRelative Positional Encodingsを使って元の文書における位置情報を残しておくことがポイントです。

Two Stream Self-Attention

基本的にはTransformer-XLと同様にTransformer Encoder(Self-Attention)をモデルで用います。しかし入れ替えにより単語順序がランダムになっているため、このままでモデルを構築すると、次の単語の出現確率はどの単語でも同じになってしまい、上手く学習できません(入れ替わりがあるため、”次”という位置に意味がない)。

(a)Content Stream Attention, (b)Query Stream Attention (c ) overview , e(x_i)は単語の埋め込み

実例

では、XLNetで”I play tennis today”という文を入れ替えた[tennis, play, today, I]という語順で予測を実施する場合を考えてみます。

“I play tennis today”を[tennis, play, today, I]と順序を入れ替えた状態で、[tennis]から”play”を予測した図
“I play tennis today”を[tennis, play, today, I]と順序を入れ替えた状態で、[tennis, play]から”today”を予測した図
“I play tennis today”を[tennis, play, today, I]と順序を入れ替えた状態で、[tennis, play, today]から”I”を予測した図
“I”を予測する際のQuery Stream Attentionの概略図
“play”の時刻におけるContent Stream Attentionの概略図

BERTとの比較

まず、順方向・逆方向両方の情報を扱えるBERTとXLNetを比較を、具体例として”New York is a city”という文を推論する場合で考えてみます。

BERT, XLNetの目的関数

自己回帰言語モデルとの比較

次に自己回帰言語モデルとXLNetを比較しています。

結果

多いので、一部を抜粋して掲載します。

最後に

GithubのREADMEに記載されていますが、XLNetではTransformer-XLのように過去のシーケンスを保持するためか大量の高性能GPUが必要のようです(著者達はTPUで実験)。BERTやBigGANsもそうですが、最近のSOTAモデルは「金(大量のGPU/TPU)で殴る」ものが多い気がします。家の低性能GPUでも学習して遊べるSOTAモデルでないかなぁと切実に思う今日この頃です。

謝辞

Twitterを通して@stomohide様より誤っている部分のご指摘と、その箇所に関する議論をしていただきました。この場を借りて厚くお礼申し上げます。

Data Scientist (Engineer) in Japan Twitter : https://twitter.com/AkiraTOSEI LinkedIn : https://www.linkedin.com/mwlite/in/亮宏-藤井-999868122