種明かしはこれ。すべての単語が、ほかのすべての単語を見られる。 あなたは文を一語ずつ読む。モデルは違う——全部の単語を一気に机の上にばらまき、それぞれにこう尋ねさせる。この中で、私に関係あるのは誰? このひと手がアテンション。チャットもコードも画像も、ほとんど全部この動力で回っている。あとは単語の尋ね方の話にすぎない。
単語は単体では何の意味も持たない——文脈の中でしか決まらない。 「bank」——川岸? それとも銀行? 単語だけじゃ判断のしようがない。モデルは各単語を、これまで背負ってきた意味すべてがにじんだ一本のベクトルとして抱えている。今ここで効いている意味を選ぶには、隣を見る。騒がしいパーティーと同じ。百の声を等しく聞いたりしない——大事な一声にチューニングを合わせ、残りはぼんやり流す。
どの単語も三つを差し出す。欲しいもの、売り込み、中身。 Q=xWQ,K=xWK,V=xWVQ = xW_Q,\quad K = xW_K,\quad V = xW_V Query=私が探しているもの。Key=私はこういう中身。Value=選んでくれたら渡すもの。検索バー、棚のラベル、そして箱の中身。どの単語も自分のQueryで部屋を探し、ほかの全員のKeyを読む。ムクドリの大群と同じ。群れ全体を追う鳥は一羽もいない——それぞれが隣だけを読んで動く。
AはBをどれだけ気にかけるべき? ベクトル同士を掛ければわかる。 scores=QK⊤\text{scores} = QK^{\top} AのQueryとBのKeyを取って掛ける——内積、たった一つの数。向きが揃うほど大きくなる。これをすべてのペアでやり、各行をsoftmaxにかけると、スコアは合計1の重みに変わる。どの単語にも配られた、決まったスポットライトの予算。一灯のステージライトと同じ。主役に80%、ほかの二人にひとすじ、残りはゼロ。
落とし穴がひとつ。√dで割らないと、詰まる。 weights=softmax (QK⊤d)\text{weights} = \mathrm{softmax}\!\left(\dfrac{QK^{\top}}{\sqrt{d}}\right) ベクトルが長いと内積はとんでもなく大きくなり、巨大な数のsoftmaxはオール・オア・ナッシングにパチンと振れる——一つの重みが≈1、残りは≈0。これで勾配がフラットになり、学習が止まる。直し方は拍子抜けするほど簡単。先に√dで縮める。限界を超えて音量を上げたスピーカーと同じ——大きくなるどころか、歪むだけ。ゲインを下げれば、ディテールが戻ってくる。
単語の新しい意味は、注意を向けた相手のブレンド。 Attention(Q,K,V)=softmax (QK⊤d)V\mathrm{Attention}(Q,K,V)=\mathrm{softmax}\!\left(\dfrac{QK^{\top}}{\sqrt{d}}\right)V スポットライトの予算を使う。各単語のValueを、向けた注意の量で重みづけして、足し合わせる。すると単語はもう自分だけのものじゃない——気にかけた相手の混ぜ物になる。「river」のそばの「bank」は、「money」のそばの「bank」とは別物。下の一行が、まさにTransformerそのもの——絵じゃなく、本体だ。絵の具を混ぜるのと同じ。いくつもの顔料を、この一筆にちょうど要る色へと引き寄せる。
全部いっぺんに起きる——しかもアテンションは順番をまるで知らない。 その一。すべてのQueryが、たった一回の行列積ですべてのKeyにぶつかる——超並列。だからこそこのアーキテクチャはGPUを食い尽くし、スケールが一気に伸びた。その二。単語をシャッフルしても、計算は同じ答えを返す。アテンションが見ているのは単語の袋であって、並びじゃない——順番はあとから別に貼りつける。ぶちまけたジグソーと同じ。ピースは全部あるけど順序はゼロ。「dog bites man(犬が人を噛む)」と「man bites dog(人が犬を噛む)」を見分けられる唯一の理由は、各ピースに先に書き込んだ小さな座標だ。
🌱 座標を留めただけの単語の袋を読んでいるなら、モデルは本当に読んでいるの? あなたは文を順番にたどり、一語が次の一語へとあなたを引っぱる。Transformerは全体をいっぺんに見て、位置のタグから順序を組み直す。それが超能力——1番目の単語は、2番目と同じくらい気軽に1,000番目の単語と話せる。それは同時に弱点でもある。中の何ひとつ順序を頑として要求しない。だから文が長くなるほど、あとから留めた頼りない位置感覚が背負う重みは増していく。順序こそがアテンション単体では感じ取れない唯一のものなら——次の飛躍は、もっと大きなモデルじゃないのかもしれない。自分が今どこにいるかを、もっとうまく伝える方法なのかもしれない。