どこを見るかを入力が決める ── 注意機構
第5章で2つの前提を見ました。畳み込みは「近くだけが関係する」、再帰は「順番に処理する」。どちらもどこを見るかを構造が先に決めています。畳み込みなら窓の中、再帰なら1つ前。入力が何であっても、見る場所は変わりません。
注意機構は、そこを入力ごとに決めます。前提を1つ外して、代わりに「どこを見るか」自体を計算で出す。この章は、その代償も含めて何が起きるかを測ります。
1. 「どこを見るか」の表を作る
長さ の列に対して、 番目が 番目をどれだけ見るかを並べた の表を考えます。
- 畳み込み:この表は固定の帯です。 の所だけに値があり、どの入力でも同じ。
- 注意機構:この表を入力から計算します。
図は中身を変えたときに表がどれだけ動いたかを測ります。畳み込みは常に 0——位置しか見ていないので、中身を何に変えても同じ表です。注意は動きます。
注意すべきは、ここで言えるのがそれだけだということです。学習していないこの図では、同じ記号どうしの重みが高くなる保証はありません(実測では、むしろ低く出る引き方もあります)。「中身に応じて表が変わる」は構造の性質で、「意味のある所に注目する」は学習の結果です。この章で示せるのは前者だけで、後者は重みを見ただけでは言えません——最後の節に戻ってきます。
2. 式 ── 3つの役割に分ける
同じ入力から3つを作ります。
- クエリ :「私は何を探しているか」
- キー :「私は何として見つかるか」
- バリュー :「見つかったとき何を渡すか」
が「探しているもの」と「見つかるもの」の内積=似ている度合い(第0部の第1章の式(1))。softmax で合計1の重みに直し(第0部の第3章のカテゴリカル分布)、その重みで を混ぜる。
探す側と見つかる側を別の行列で作るのがひとつの肝です。同じベクトルで両方をやると「自分自身に一番似ている」が常に成り立ってしまい、表の対角線しか光らなくなります。
3. なぜ で割るのか ── 実測
式(1)の分母は、書き忘れても動きます。動きますが、学習が進まなくなります。理由は分散です。
の各成分が平均0・分散1なら、内積 の分散は になります(独立なら分散が足せる=第0部の第3章)。実測すると
| の分散(実測) | |
|---|---|
| 8 | 7.92 |
| 64 | 64.69 |
| 512 | 506.14 |
次元ぶんだけ散らばる。 散らばった値を softmax に入れると、一番大きい1つだけが生き残ります。キー16個での実測です。
| 割らない:最大の重み | 割らない:エントロピー | で割る:最大の重み | 同:エントロピー | |
|---|---|---|---|---|
| 8 | 0.894 | 3.14 bit | 0.379 | 3.03 bit |
| 64 | 0.9987 | 0.0136 bit | 0.300 | 3.32 bit |
| 512 | 0.9996 | 0.0000 bit | 0.211 | 3.60 bit |
(一様なら最大 、エントロピー 4.0 bit。)
で割らないと、エントロピーが 0.0000 bit——16個のうち1個に完全に潰れます。こうなると softmax の勾配もほぼ0になり(第0部の第2章で見た、傾きが寝た所)、どこを見るかを学習できません。 で割ると 3.60 bit が残り、学習の余地が残ります。
コメント
コメントにはログインが必要です