LLM(大規模言語モデル)で用いられているAttentionの仕組みについて。
1. Attentionとは何か?(ひとことで言うと)
Attentionとは、「文章中の『どの単語』に『どれくらい注目すべきか』を計算し、動的に意味をつなぐ仕組み」です。
従来のモデルとの違い
- 昔のAI: 文章を最初から順番に読むだけ。「それ」が出てきた頃には、前の文脈を忘れていることがありました。
- Attention: 処理する瞬間に、文章全体を見渡して、関連する単語だけにスポットライトを当てます。
2. 仕組みの核心:Q, K, V(クエリ、キー、バリュー)
Attentionは、単語同士の関連性を計算するために、各単語に以下の3つの役割(ベクトル)を持たせます。
| 役割 | 名前 | イメージ | 意味 |
|---|---|---|---|
| Q | Query | 虫眼鏡・検索メモ | 「僕と関係ある言葉はどこ?」(探す側) |
| K | Key | 名札・背表紙 | 「私はこういう役割の言葉だよ!」(探される側) |
| V | Value | 本の中身・書類 | 「私の意味(情報)はこれだよ」(実際に渡す中身) |
文章中のすべての単語が、この3つ(Q, K, V)を持っています。全員が「探す側」であり、「探される側」であり、「情報源」なのです。
具体例:「私はカニが食べたい」
「食べたい」という単語が処理されるとき…
- Q(食べたい)の発信: 「『#食材』の特徴を持つやつはどこだ!?」
- K(カニ)の反応: 「はい! 私のKには『#食材』タグがついてます!」(ヒット!)
- V(カニ)の取り込み: 「じゃあ、君のV(カニの味・イメージ)をよこせ!」
→ これにより、「食べたい」という単語に「カニ」の意味が混ざり合い、「カニを食べる口」という具体的な文脈が生まれます。
3. 計算のプロセス(どうやって混ぜる?)
「全単語に対して計算して足し合わせる」と言われますが、単純に全部掛け算するわけではありません。「2段階の手順」が重要です。
手順①:QとKで「配合比率(重み)」を決める
まず、Q と K を掛け合わせ(内積)、相性スコア(%)を出します。これをAttention Weightと呼びます。
- 「食べたい」のQ × 「カニ」のK = 関連度 90%
- 「食べたい」のQ × 「私」のK = 関連度 5%
手順②:その比率で V を混ぜ合わせる
決まった比率に従って、V(中身の情報)だけを鍋に入れて煮込みます。
新しい意味 = (90% × カニのV) + (5% × 私のV) + …
DJのミキサーの例え:
- QとKは、どの曲を流すか決める「ボリュームつまみを回す手」。
- Vは、実際にスピーカーから流れる「音楽そのもの」。
- 結果として、必要な音楽(V)だけが大音量で流れます。
4. 内部表現とパラメータ
ベクトルと行列
- Q, K, Vの実体は、人間には解読不能な「数字の列(ベクトル)」です。
- これらは、元の単語ベクトル(Embedding)に、学習済みの「変換行列 (W_Q, W_K, W_V)」を掛けることで作られます。
Multi-Head Attention(マルチヘッド)
巨大なベクトルを1つ使うのではなく、次元数を小さく分割して(例:512次元→64次元×8個)、複数の視点で計算します。
- メリット: 文法、時間関係、代名詞など、異なる特徴を並列で捉えられる。
- 実態: 人間に分かりやすく分担されているとは限らず、「文法60%+時間40%」のように役割が入り混じっている(Entanglement)ことが多いです。
「230B」などの数字の意味
モデルのサイズ(例:230B = 2300億パラメータ)は、主に「変換行列 W に含まれる数字の総数」を指します。
この数字が大きいほど、より複雑な文脈やニュアンスを捉えるための「計算回路」が緻密で大量にあることを意味します。
まとめ
Attentionとは Q(探す)と K(タグ)を使って「単語間の関連度」を計算し、その度合いに応じて V(意味)をブレンドする、動的な情報合成システム です。
この計算を何層にも重ね、数千億個のパラメータで行うことで、LLMは人間のような高度な言語理解を実現しています。
