● Attention Is All You Need (Łukasz Kaiser et al., 2017)
○ 文章の単語同士の関連度を測る (Attention) 機構を組み込むことで
自然言語処理モデルの性能が大きく向上
Transformer
チノ ちゃん かわいい
推し
は
誰
?
入
力
文
参照情報
チノ
ちゃん
以外
ありえん
Slide 10
Slide 10 text
Transformerの構造
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 11
Slide 11 text
● 入力文をベクトル系列に変換
Transformerの構造
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 12
Slide 12 text
● 入力文をベクトル系列に変換
Transformerの構造
ご注文はうさぎですか?
ご, 注文, は, うさぎ, ですか, ?
0, 1, 2, 3, 4, 5
形態素解析
トークンID化
E
0
, E
1
, E
2
, E
3
, E
4
, E
5
ベクトル化
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 13
Slide 13 text
● 入力文をベクトル系列に変換
Transformerの構造
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Positional Encoding
● Attentionだけではトークンの
位置情報を考慮できない
● 位置ごとに異なる値を足して
位置関係を学習できるように
○ 加える値は完全決め打ち
Slide 14
Slide 14 text
● 一連の処理をまとめた”ブロック”を
何個も積み上げている
Transformerの構造
Multi-Head
Attention
残差結合
正規化
Feed Forward
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 15
Slide 15 text
● 一連の処理をまとめた”ブロック”を
何個も積み上げている
○ Multi-Head Attention
○ 残差結合
○ 正規化
○ Feed Forward
Transformerの構造
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 16
Slide 16 text
● 一連の処理をまとめた”ブロック”を
何個も積み上げている
○ Multi-Head Attention
○ 残差結合
○ 正規化
○ Feed Forward
Transformerの構造
入力ベクトル
出力ベクトル
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 17
Slide 17 text
入力ベクトル
出力ベクトル
残差結合
x’ = x + Attention(x)
● Attention結果に処理前の値を
加えることで勾配消失を防ぐ
● 残差結合はResNet(2015)で
効果が実証された
Attention以外の要素
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 18
Slide 18 text
入力ベクトル
出力ベクトル
ふつうのFeed Forward
Attention以外の要素
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 19
Slide 19 text
● 一連の処理をまとめた”ブロック”を
何個も積み上げている
○ Multi-Head Attention
○ 残差結合
○ 正規化
○ Feed Forward
Transformerの構造
入力ベクトル
出力ベクトル
キモとなるところ
Attention Is All You Need (Łukasz Kaiser et al., 2017)
QKV Attention
q query
変換したい
ベクトル key, value
ベクトルを変換する際
参照する情報
keyとvalueが辞書的に
一対一に対応している
(k
1
, v
1
), (k
2
, v
2
)
Slide 23
Slide 23 text
QKV Attention
qT
k
1
q
qT
k
2
key, value
ベクトルを変換する際
参照する情報
keyとvalueが辞書的に
一対一に対応している
(k
1
, v
1
), (k
2
, v
2
)
Slide 24
Slide 24 text
QKV Attention
qT
k
1
q
qT
k
2
queryとkeyとの関連度を
内積を取ることで数値化する
1.2
3.6
Slide 25
Slide 25 text
QKV Attention
qT
k
1
q
qT
k
2
0-1にスケールした後
softmaxを取り
関連度の和を1に正規化
1.2
3.6
0.4
0.6
scale
&
softmax
Slide 26
Slide 26 text
QKV Attention
qT
k
1
q
qT
k
2
1.2
3.6
0.4
0.6
scale
&
softmax
v
1
v
2
正規化した関連度で
valueに重みをつける
Slide 27
Slide 27 text
QKV Attention
qT
k
1
q
qT
k
2
1.2
3.6
0.4
0.6
v
1
v
2
scale
&
softmax
+
q’
Slide 28
Slide 28 text
k
1
q
k
2
QKV Attention
v
1
v
2
query
変換したい
ベクトル
key, value
ベクトルを変換する際
参照する情報
keyとvalueが辞書的に
一対一に対応している
q’
output
queryを元に
key, valueから
情報を引き出す
Slide 29
Slide 29 text
Attention定式化
Slide 30
Slide 30 text
Attention定式化
Q K V
1行ごとに別々の
q, k, vに対応
Slide 31
Slide 31 text
Q K V
Attention定式化
関連度計算
&
スケーリング
Slide 32
Slide 32 text
Q K V
Attention定式化
queryとkeyの
関連度で
valueを重み付け
Slide 33
Slide 33 text
TransformerのQとかKとかVってどこから来るの?
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 34
Slide 34 text
TransformerのQとかKとかVってどこから来るの?
query key value
● 矢印が三股になっている
→ 同じ情報をq, k, vに使ってる
● Self-Attention(自己注意機構)
Attention Is All You Need (Łukasz Kaiser et al., 2017)
Slide 35
Slide 35 text
Multi-Head Attention (Self-Attention発展)
● Q, K, Vをh個に分割
● h個分のAttentionを計算
● 計算したAttentionを結合
Attention Is All You Need (Łukasz Kaiser et al., 2017)