Attention Is All You Need まとめ

Attention Is All You Need

NLPの最近の論文で一番有名かもしれない「Attention Is All You Need」の論文を読んでみたんので、まとめます。
自分のアウトプット用にまとめているだけなので、
詳しく知りたい方は、下記の記事を読まれることをおすすめします。
かなりわかりやすくかつ詳しく解説されていること間違いないしです。
論文解説 Attention Is All You Need (Transformer)

【論文】
Attention Is All You Need

【コード】
Tensorflow
https://github.com/tensorflow/tensor2tensor

 

論文概要

attentionを使用した新しいモデルTransformerを提案しています。
英語からドイツ語に翻訳するタスク及び英語からフランス語に翻訳するタスクにおいて最高のスコアを出しています。

 

モチベーション

RNNを使いたくない?

 

Transformer

Transformerとは簡単に言うと、RNNのモデル構造を使用せずにself-atttencionをベースにしたモデルと言えます。
モデル構造は、Encoder6層、Decoder6層。

self-atttencion(intra-attention)

アテンションの説明については、Ryobotさんの下記説明が非常にわかりやすかった。

query(検索クエリ) に一致する key を索引し,対応する value を取り出す操作

query, key, valueがすべて同じところからくるattentionのこと指します。

Scaled Dot-Product Attention

activationにsoft-maxを使用している。
下記式が示すように、Dot-Product Attentionから√dkを割ってあげることで、scaleさせている。
Dot-Product Attentionは、queryとkeyの内積です。

$$Attention(Q, K, V) = softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V$$

multi-head attention

multi-head attentionの中には、Scaled Dot-Product Attentionもあります。
query, key, valueをそれぞれ異なる学習された線形射影を用いて8回、線形的にdk、dkおよびdv次元に射影しています。
次に、これらの投影されたバージョンのquery, key, valueのそれぞれについて、アテンション関数を並列に実行して、dv次元の出力値を生成します。
式は下記の通りです。

$$MultiHead(Q,K,V) = Concat(head_{1}, …head_{h})W^{O} $$
$$where head^{i} = Attention(QW_i^QKW_i^KVW_i^V)$$

また図でmaskされている箇所があるのは、デコーダ内での左方向の情報の流れを防ぐ必要があるためです。

Position-wise Feed-Forward Networks

2つのCNNを通しているのと同じこと?

Scaled Dot-Product Attentionが左側、
multi-head attentionが右側になります。
Image from Gyazo
論文より引用

Transformerのモデル構造
Image from Gyazo
論文より引用

 

実験・結果

学習

WMT 2014というデータセットを使用しました。。
勾配降下法は、Adamを使用し、step数は10万回で学習。

結果

下記を見ても分かる通り、transformerの結果がベストスコアだとわかる
Image from Gyazo
論文より引用

 

参考になる記事

https://github.com/spro/practical-pytorch/blob/master/seq2seq-translation/seq2seq-translation-batched.ipynb
作って理解する Transformer / Attention

1 Comment

  1. […] Attentionについては、下記記事で簡単にまとめています。 Attention Is All You Need まとめ […]

Comments are closed.