Day 4 - Transformer のまとめ
この記事は個人的なお勉強用のメモです。
講義
NN 機械翻訳の問題点
長さに弱い。
理由
・翻訳元の文の内容をひとつのベクトルで表現
・文長と翻訳精度の関係性
資料の 2 つのグラフからわかるとおり、
Encoder-Decoder モデルの方が 統計的機械翻訳モデルよりも
BLEU スコアが低い。
Attention(注意機構)
概要
翻訳先の各単語を選択する際に、翻訳元の文中の各単語の
隠れ状態を利用
重みをすべて足すと 1
例
h1 は重めに
h2 は軽めに
これにより、翻訳元と翻訳先とで単語ごとに注意を払う。
文中のある単語の意味を理解する時に、文中の単語のどれに注目すれば良いかを表すスコアのこと。
仕組み
- Query
入力。検索したいクエリ - Key
Key の中から似た文章を検索
正規化されたベクトルを出力 - Value
正規化されたベクトルを文章にする
Key Value Attension とも。
Transformer
概要
- Seq2seq と同じく、Encoder-Decoder モデル
- RNN を使わない(使うのは Attension のみ)
- 並列化しやすい
構造
Encoder と Decoder
Encoder 側
- Input Embedding
- Positional Encoding(1. 単語ベクトルに単語の位置を追加)
- Encoder
- Multi-Head Attention(2. 複数のヘッドで行う Dot Product Attention、Self-Attention)
- Add & Norm
- Feed Forward(3. 単語の位置ごとに独立処理する全結合)
- Add & Norm
Decoder 側
- Output Embedding
- Positional Encoding
- Decoder
- Masked Multi-Head Attention(4. 未来の単語を見ないようマスク)
- Add & Norm
- Multi-Head Attention
- Add & Norm
- Feed Forward
- Add & Norm
- Linear
- Softmax
Attention の種類
Source Target Attention(ソース・ターゲット注意機構)
Query:Target
Key:Source
Value:Source
Self-Attention(自己注意機構)
Query:Source
Key:Source
Value:Source
「バナナ」「が」「好き」
単語間の注意を求める。
Position-Wise Feed-Forward Networks(PFFN)
位置情報を保持したまま、順伝播させる。
Scaled dot product attention
全単語に関する Attention をまとめて計算する。
Attention(Q,K,V)=softmax \Biggl(\frac{QK^T}{\sqrt{d_k}} \Biggr)V
※ $Q,K,V$ が式のどこに位置するかに注意。
※ $\sqrt{d_k}$ で割る理由は、割らない場合にソフトマックス関数の勾配が小さくなってしまうため。
\begin{align}
Q・K^T&=
\begin{pmatrix}
q_1\\
q_2\\
q_3\\
\end{pmatrix}
\begin{pmatrix}
k_1 k_2 k_3
\end{pmatrix}
\\
&=
\begin{pmatrix}
q_1 k_1 & q_1 k_2 & q_1 k_3\\
q_2 k_1 & q_2 k_2 & q_2 k_3\\
q_3 k_1 & q_3 k_2 & q_3 k_3\\
\end{pmatrix}
\end{align}
\begin{align}
Attention(Q,K,V)
&=softmax(QK^T)・ V \\
&=
\begin{pmatrix}
0.1 & 0.2 & 0.7\\
0.4 & 0.3 & 0.3\\
0.8 & 0.1 & 0.1
\end{pmatrix}
\begin{pmatrix}
v_1\\
v_2\\
v_3\\
\end{pmatrix}
\\
&=
\begin{pmatrix}
0.1v_1 + 0.2v_2 + 0.7v_3\\
0.4v_1 + 0.3v_2 + 0.3v_3\\
0.8v_1 + 0.1v_2 + 0.1v_3\\
\end{pmatrix}
\end{align}
Multi-Head Attention
重みパラメータの異なる8個のヘッドを使用
Decoder
- 6 層(Encoderと同じ)
- 自己注意機構とソース・ターゲット注意機構の両方
- 自己注意機構の key と value はエンコーダから、query はデコーダから。
Add & Norm
Add:Residual Connection
入出力の差分を学習
実装上は出力に入力をそのまま加算するだけ
効果:学習・テストエラーの低減
Norm:Layer Normalization
平均 0、分散 1 に正則化
効果:学習の高速化
Positional Encoding
単語列の語順情報を追加
$\sin$ と $\cos$ を利用(0~1の範囲)
PE_{(pos,2i)}=\sin\Biggl(\frac{pos}{10000^{2i/512}}\Biggr)\\
PE_{(pos,2i+1)}=\cos\Biggl(\frac{pos}{10000^{2i/512}}\Biggr)\\
※ かっこの中は同じ。違いは $\sin$ と $\cos$ のみ。
実装演習
「自分の」は正しいが、それ以降は微妙な翻訳。
こちらは BLEU の評価。
いいのか悪いのか判断しづらい。
Author And Source
この問題について(Day 4 - Transformer のまとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/amateur2020/items/e1e2cbb36ff5d01a8338著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .