読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】TransformerのAttention、式を見ても何してるか分からん【AI】

19レスカテゴリ:AI・機械学習
1: 名無しさん

Attention の式

これ、結局何を計算してるん

2: 名無しさん

>>1
出どころは Vaswani らの「Attention Is All You Need」(2017年)
ざっくり言うと「いま見てる単語にとって、どの単語がどれだけ大事か」を重みにして、情報を混ぜ合わせる計算

3: 名無しさん

>>2
Q と K と V は何なん

4: 名無しさん

>>3
単語ごとに3種類のベクトル(数字の並び)を作る
Q(クエリ):「自分はこういう情報を探してる」
K(キー):「自分はこういう情報を持ってる」
V(バリュー):「実際に渡す中身」
Q と K の内積(成分どうしを掛けて足したもの)が大きいほど相性がいい

5: 名無しさん

>>4
数字で1回やってみて

6: 名無しさん

>>5
単語3つ、ベクトルは2次元()でやる
注目してる単語の
キーは 、、
内積は1、0、1。これを で割ると約0.707、0、0.707

7: 名無しさん

>>6
ソフトマックス(数値を足して1になる重みに変える関数)に通すと

重みは約0.401、0.198、0.401

8: 名無しさん

>>7
バリューが 、、 なら

これが、この単語の新しいベクトル。相性のいい単語1と3の中身が多めに混ざってる

9: 名無しさん

>>8
わざわざ で割るのはなんでや

10: 名無しさん

>>9
論文の説明では、Q と K の成分が平均0・分散1でばらばらなら、内積の分散は になる
論文の設定は やから、割らんと内積の標準偏差は くらいになる
値が大きすぎるとソフトマックスがほぼ1か0に張り付いて、学習のときの勾配(パラメータをどっちに動かすかの手がかり)がほとんど0になる。それを防ぐため

11: 名無しさん

>>10
64ってのはどこから

12: 名無しさん

>>11
基本モデルは単語ベクトルが512次元で、Attention を8つ並列に走らせる(マルチヘッド)

ヘッドごとに違う関係(文法的なつながり、指示語が指すもの、など)を拾えるようにしてる

13: 名無しさん

>>12
それで何がよくなったん

14: 名無しさん

>>13
それまで主流やった RNN(単語を1つずつ順番に処理するネットワーク)は、前の単語の計算が終わらんと次に進めん
Attention は全部の単語の組み合わせを一度に計算できるから、並列で速く学習できる
英独翻訳の BLEU(翻訳の一致度を測る指標)で28.4を出して、それまでの最高(複数モデルを組み合わせたものも含む)を2以上上回った

15: 名無しさん

>>14
全部の組み合わせを計算するってことは、長い文やと重くならん?

16: 名無しさん

>>15
なる。単語数を とすると、組み合わせは 通り
1000単語なら100万通り、2000単語なら400万通り。長さ2倍で4倍
論文の表でも、自己注意の1層あたりの計算量は になってる

17: 名無しさん

>>16
Attention の重みを見れば、モデルが何を考えてるか分かるんやろ

18: 名無しさん

>>17
そこは言い過ぎ。論文も「解釈しやすいモデルになるかもしれない」くらいの書き方で、ヘッドの例をいくつか図で見せてるだけ
重みが大きい=判断の理由、とまでは言い切れん

19: 名無しさん

>>18
Q と K の相性で重みを決めて、V を混ぜる。式の意味はやっと分かったわ

管理人のひとこと