Attention の式
これ、結局何を計算してるん
Attention の式
これ、結局何を計算してるん
>>1
出どころは Vaswani らの「Attention Is All You Need」(2017年)
ざっくり言うと「いま見てる単語にとって、どの単語がどれだけ大事か」を重みにして、情報を混ぜ合わせる計算
>>2
Q と K と V は何なん
>>3
単語ごとに3種類のベクトル(数字の並び)を作る
Q(クエリ):「自分はこういう情報を探してる」
K(キー):「自分はこういう情報を持ってる」
V(バリュー):「実際に渡す中身」
Q と K の内積(成分どうしを掛けて足したもの)が大きいほど相性がいい
>>4
数字で1回やってみて
>>5
単語3つ、ベクトルは2次元()でやる
注目してる単語の
キーは 、、
内積は1、0、1。これを で割ると約0.707、0、0.707
>>6
ソフトマックス(数値を足して1になる重みに変える関数)に通すと
重みは約0.401、0.198、0.401
>>7
バリューが 、、 なら
これが、この単語の新しいベクトル。相性のいい単語1と3の中身が多めに混ざってる
>>8
わざわざ で割るのはなんでや
>>9
論文の説明では、Q と K の成分が平均0・分散1でばらばらなら、内積の分散は になる
論文の設定は やから、割らんと内積の標準偏差は くらいになる
値が大きすぎるとソフトマックスがほぼ1か0に張り付いて、学習のときの勾配(パラメータをどっちに動かすかの手がかり)がほとんど0になる。それを防ぐため
>>10
64ってのはどこから
>>11
基本モデルは単語ベクトルが512次元で、Attention を8つ並列に走らせる(マルチヘッド)
ヘッドごとに違う関係(文法的なつながり、指示語が指すもの、など)を拾えるようにしてる
>>12
それで何がよくなったん
>>13
それまで主流やった RNN(単語を1つずつ順番に処理するネットワーク)は、前の単語の計算が終わらんと次に進めん
Attention は全部の単語の組み合わせを一度に計算できるから、並列で速く学習できる
英独翻訳の BLEU(翻訳の一致度を測る指標)で28.4を出して、それまでの最高(複数モデルを組み合わせたものも含む)を2以上上回った
>>14
全部の組み合わせを計算するってことは、長い文やと重くならん?
>>15
なる。単語数を とすると、組み合わせは 通り
1000単語なら100万通り、2000単語なら400万通り。長さ2倍で4倍
論文の表でも、自己注意の1層あたりの計算量は になってる
>>16
Attention の重みを見れば、モデルが何を考えてるか分かるんやろ
>>17
そこは言い過ぎ。論文も「解釈しやすいモデルになるかもしれない」くらいの書き方で、ヘッドの例をいくつか図で見せてるだけ
重みが大きい=判断の理由、とまでは言い切れん
>>18
Q と K の相性で重みを決めて、V を混ぜる。式の意味はやっと分かったわ