この回のゴール
- Q, K, V (Query / Key / Value) の役割を腹落ちさせる
- Scaled Dot-Product Attention の数式をコードと図で追う
- Multi-Head Attention が何を解決しているか理解する
1. 前回の限界と動機
前回の埋め込みは「1 単語 = 1 ベクトル」で 静的 でした。
「その銀行から 100m 先の銀行に行く」
この文で最初の「銀行」と 2 番目の「銀行」は全く違う意味の可能性(川岸 vs 銀行)。同じ単語でも文脈次第で意味が変わる。
👉 各単語の表現を 文脈に応じて動的に 作り替えたい。そのために「文中の他の単語のうち、どれにどれだけ注目するか」を決める仕組みが Attention です。
2. 人間の直感的な理解
「彼女はそのリンゴを食べた、なぜなら それ が熟れていたから」
「それ」 が何を指すか → 周囲の単語をスキャンして「リンゴ」に注目する。この「どの単語にどれだけ注目するか」を数式で定式化したのが Attention。
3. Q, K, V: 情報検索のメタファー
Attention は ソフトな情報検索 と見なせます:
| 記号 | 役割 | 検索システムで言うと |
|---|---|---|
| Query (Q) | 「何を探しているか」 | 検索クエリ |
| Key (K) | 「各候補が持つ索引」 | 各文書のタグ |
| Value (V) | 「各候補の中身」 | 各文書の本文 |
各単語は 3 つのベクトルを持つ:
$$ Q = X W^Q, \quad K = X W^K, \quad V = X W^V $$
ここで $X$ は入力埋め込み、$W^Q, W^K, W^V$ は学習される重み行列。
4. Scaled Dot-Product Attention
核心の式 (論文 "Attention is All You Need" より):
$$ \text{Attention}(Q, K, V) = \text{softmax}\left( \frac{Q K^\top}{\sqrt{d_k}} \right) V $$
これを分解すると:
ステップ 1: 関連度スコア
$$ S = Q K^\top $$
各クエリ(行)と各キー(列)の内積 → どれくらい似ているか のスコア行列。
ステップ 2: スケーリング
$$ S' = S / \sqrt{d_k} $$
$d_k$ は key の次元。次元が大きいと内積も大きくなり、softmax が極端になる。$\sqrt{d_k}$ で割って安定化。
ステップ 3: Softmax で確率化
$$ A = \text{softmax}(S') $$
各行が「どの単語にどれだけ注目するか」の確率分布(合計 1)。
ステップ 4: Value の加重和
$$ \text{出力} = A V $$
各クエリごとに、Value を注目重みで足し合わせる。結果として 文脈を取り込んだ新しい表現 ができる。
5. Causal Mask — GPT 系の工夫
GPT 系(自己回帰モデル)は「次の単語を予測」するので、未来の単語を見てはいけない。softmax の前に 未来の位置を $-\infty$ に置換:
$$ S'{ij} = \begin{cases} S'{ij} & i \ge j \ -\infty & i < j \end{cases} $$
これで「過去の単語にしか注目できない」状態になる。
6. Multi-Head Attention
1 つの Attention だけでは「文法」「意味」「長距離依存」など 複数の関係 を同時に扱えない。 👉 複数の Attention を並列 に走らせる:
$$ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h) W^O $$
各ヘッドは別々の $W^Q, W^K, W^V$ を持ち、別々の関係性 を学習する。
可視化すると Head 1 は構文(主語-動詞)、Head 2 は指示語の解決、Head 3 は長距離の文脈、のように ヘッドごとに異なる役割 を担います。
7. 計算量と文脈長の限界
Attention の計算量は系列長 $N$ に対して $O(N^2)$($QK^\top$ が $N \times N$)。
👉 これが コンテキスト長が伸ばせない本質的な理由。Claude 4 (200K tokens) でさえ、内部では FlashAttention、sparse attention など様々な効率化を組み合わせています。
まとめ
- Attention = 「文中のどの単語にどれだけ注目するか」を決める仕組み
- Q, K, V の 3 つのベクトルで「ソフトな情報検索」を行う
- $\text{softmax}(QK^\top/\sqrt{d_k}) V$ が核心の式
- Multi-Head で複数の関係性を並列に学習
- 計算量 $O(N^2)$ が長文脈の本質的なボトルネック
この回の限界(次への動機)
Attention 単体は 1 回の情報集約 しかできません。実用 LLM では何十層も重ねます。 👉 次回「Transformer の全体像」で、Attention + FFN + 残差 + LayerNorm + 位置エンコーディング を組み合わせた 完全なブロック構造 を学びます。
参考文献
- Vaswani et al. (2017) Attention Is All You Need — 伝説の論文
- The Illustrated Transformer — 図解の定番
- BertViz library — Attention 可視化ツール