教科書 › 第III部 深層学習:何の前提を足すか
CHAPTER 6

どこを見るかを入力が決める ── 注意機構

★ 会員11分

第5章で2つの前提を見ました。畳み込みは「近くだけが関係する」、再帰は「順番に処理する」。どちらもどこを見るかを構造が先に決めています。畳み込みなら窓の中、再帰なら1つ前。入力が何であっても、見る場所は変わりません。

注意機構は、そこを入力ごとに決めます。前提を1つ外して、代わりに「どこを見るか」自体を計算で出す。この章は、その代償も含めて何が起きるかを測ります。

1. 「どこを見るか」の表を作る

長さ TT の列に対して、ii 番目が jj 番目をどれだけ見るかを並べた T×TT \times T の表を考えます。

  • 畳み込み:この表は固定の帯です。∣i−j∣≤1|i-j| \le 1 の所だけに値があり、どの入力でも同じ。
  • 注意機構:この表を入力から計算します。
FIG 1同じ列に対する「どのトークンがどのトークンを見ているか」の表。左が畳み込み、右が注意。記号(A/B/C)を押すとその位置の中身が変わり、表がどれだけ動いたかを測る——畳み込みは1マスも動かず、注意だけが動く

図は中身を変えたときに表がどれだけ動いたかを測ります。畳み込みは常に 0——位置しか見ていないので、中身を何に変えても同じ表です。注意は動きます。

注意すべきは、ここで言えるのがそれだけだということです。学習していないこの図では、同じ記号どうしの重みが高くなる保証はありません(実測では、むしろ低く出る引き方もあります)。「中身に応じて表が変わる」は構造の性質で、「意味のある所に注目する」は学習の結果です。この章で示せるのは前者だけで、後者は重みを見ただけでは言えません——最後の節に戻ってきます。

2. 式 ── 3つの役割に分ける

Attention(Q,K,V)  =  softmax ⁣(QK⊤dk)V\mathrm{Attention}(Q, K, V) \;=\; \mathrm{softmax}\!\left(\frac{QK^{\top}}{\sqrt{d_k}}\right) V
(1)

同じ入力から3つを作ります。

  • クエリ QQ:「私は何を探しているか」
  • キー KK:「私は何として見つかるか」
  • バリュー VV:「見つかったとき何を渡すか」

QK⊤QK^{\top} が「探しているもの」と「見つかるもの」の内積=似ている度合い(第0部の第1章の式(1))。softmax で合計1の重みに直し(第0部の第3章のカテゴリカル分布)、その重みで VV を混ぜる。

探す側と見つかる側を別の行列で作るのがひとつの肝です。同じベクトルで両方をやると「自分自身に一番似ている」が常に成り立ってしまい、表の対角線しか光らなくなります。

3. なぜ dk\sqrt{d_k} で割るのか ── 実測

式(1)の分母は、書き忘れても動きます。動きますが、学習が進まなくなります。理由は分散です。

q,kq, k の各成分が平均0・分散1なら、内積 q⋅kq \cdot k の分散は dkd_k になります(独立なら分散が足せる=第0部の第3章)。実測すると

dkd_k q⋅kq\cdot k の分散(実測)
8 7.92
64 64.69
512 506.14

次元ぶんだけ散らばる。 散らばった値を softmax に入れると、一番大きい1つだけが生き残ります。キー16個での実測です。

dkd_k 割らない:最大の重み 割らない:エントロピー dk\sqrt{d_k} で割る:最大の重み 同:エントロピー
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

(一様なら最大 1/16=0.06251/16 = 0.0625、エントロピー 4.0 bit。)

dk=512d_k = 512 で割らないと、エントロピーが 0.0000 bit——16個のうち1個に完全に潰れます。こうなると softmax の勾配もほぼ0になり(第0部の第2章で見た、傾きが寝た所)、どこを見るかを学習できません。dk\sqrt{d_k} で割ると 3.60 bit が残り、学習の余地が残ります。

§

この先は会員限定です

全42章と全ラボが読み放題。月額¥490、いつでも解約できます。

コメント

コメントにはログインが必要です