Multi-Head Attention と位置エンコーディングの内部
アテンションが「なぜ複数ヘッドなのか」「順序をどう知るのか」を原理から押さえれば、Transformer の挙動と弱点が腑に落ちる。分割・結合と位置表現の核心を一気に整理。
- 1.Multi-Head は単一の大きなアテンションを複数の小さなヘッドに分割する仕組み。各ヘッドが独立した Q・K・V 部分空間を持ち、文法・係り受け・共参照など別々の関係を並列に捉えて、最後に結合・線形変換で統合する。
- 2.アテンション自体は集合演算で順序を区別できない(置換等価)。だから位置エンコーディングで「何番目か」を明示的に注入する。これが無いと語順が消える。
- 3.位置の与え方は正弦波(固定)・学習可能(テーブル)・RoPE(回転)の3系統。RoPE は Q・K を位置で回転させ相対位置を内積に埋め込むため、長文の外挿に強く現行 LLM の主流。
なぜ「ヘッドを分ける」必要があるのか
LLM と Transformer で見たアテンションは、本質的に Attention(Q,K,V)=softmax(QKᵀ/√d_k)·V という1本の重み付き平均でした。ところが実際の Transformer は、これを1本ではなく 複数のヘッド(head)に分割 して並列に計算します。これが Multi-Head Attention(MHA) です。
理由は単純で、1組の Q・K・V では「1種類の関係」しか測れない からです。softmax は重みの総和を1に正規化するため、ある語が「主語との一致」と「直前の修飾語」を同時に強く参照したくても、1本のアテンションでは注意が薄まり、どちらかに引っ張られます。観点が違えば最適な参照先も違う——文法的なつながり、意味的な近さ、共参照(「それ」が何を指すか)は別物です。そこで参照のチャネルを物理的に増やすのが MHA の発想です。
Multi-Head Attention=「注目の仕方を h 通り並行で走らせ、後でまとめる」仕組み。各ヘッドが独立した視点で参照先を選び、結合段でそれらを統合する。1本では潰れてしまう複数の関係を、同時に保持できるのが核心です。
分割と結合:次元はどう動くのか
MHA の計算は「分割 → 各ヘッドでアテンション → 結合 → 線形変換」の4段です。モデル次元を d_model、ヘッド数を h とすると、各ヘッドの次元は d_k = d_model / h になります(例: d_model=512, h=8 なら d_k=64)。総計算量がヘッド数によらずほぼ一定 になるよう、わざと次元を割り算している点が重要です。ヘッドを増やしてもコストは増えません。
入力 X: [seq_len, d_model]
1. 投影: 各ヘッド i ごとに学習重み W_q[i], W_k[i], W_v[i] (各 d_model×d_k)
Q_i = X·W_q[i], K_i = X·W_k[i], V_i = X·W_v[i] → 各 [seq_len, d_k]
2. 各ヘッド: head_i = softmax(Q_i·K_iᵀ / √d_k)·V_i → [seq_len, d_k]
3. 結合: Concat(head_1, ..., head_h) → [seq_len, d_model]
4. 出力投影: MultiHead = Concat(...)·W_o (W_o: d_model×d_model) → [seq_len, d_model]
ポイントは2つあります。第一に、各ヘッドは 別々の W_q/W_k/W_v を持つ ため、同じ入力から異なる Q・K・V 部分空間へ射影されます。これがヘッドごとに「見る観点」が変わる源泉です。第二に、結合しただけでは各ヘッドの出力が並んでいるだけなので、最後の W_o がヘッド間の情報を混ぜて統合 します。W_o を忘れるとヘッドは独立したまま協調しません。
概念上は h 個のループですが、実装では W_q/W_k/W_v を d_model×d_model の大きな1枚にまとめ、結果を [seq_len, h, d_k] に reshape してヘッド軸を分けます。GPU では「ループ h 回」ではなく「1回の大きな行列積+テンソルの並べ替え」として一括処理され、ここが Transformer の並列性の源です。
各ヘッドは何を捉えているのか
学習後のヘッドを可視化すると、ヘッドごとに役割分担が生じることが知られています。あくまで創発的(明示的に割り当てたわけではない)ですが、代表的なパターンは次のようなものです。
| ヘッドの型 | 何に注目するか | 役割の例 |
|---|---|---|
| 位置的ヘッド | 直前・直後など相対位置が固定の語 | 局所的な並びの把握 |
| 構文的ヘッド | 動詞と主語、前置詞と目的語など係り受け | 文法構造の追跡 |
| 共参照ヘッド | 代名詞と先行詞(「それ」→「箱」) | 指示関係の解決 |
| 希薄/冗長ヘッド | 特定トークンに集中、または分散 | 枝刈り候補になりやすい |
重要なのは、これらが 設計者の指示ではなく、次トークン予測の誤差を下げる過程で自然に分化する 点です。逆に言えば、すべてのヘッドが有用とは限りません。研究では一部のヘッドを除いても性能がほぼ落ちないことが示されており、ヘッドの冗長性 はモデル圧縮(プルーニング)の手掛かりになります。なお近年は推論メモリ削減のため、K・V を複数ヘッドで共有する GQA(Grouped-Query Attention) や MQA(Multi-Query Attention) が主流化しており、「ヘッドごとに完全独立な K・V」は必須ではなくなっています。
位置エンコーディング:なぜ順序を別途与えるのか
ここで根本的な問題に突き当たります。アテンションは入力を「順序のない集合」として扱う のです。softmax(QKᵀ)·V は内積と重み付き和だけで構成され、入力トークンを並べ替えると出力も同じように並べ替わるだけ——つまり 置換等価(permutation equivariant) です。「猫が犬を追う」と「犬が猫を追う」を、アテンション単体は区別できません。
トークン化 を経て 埋め込み(Embedding) に変換された各トークンは、意味のベクトルは持っていても 「何番目か」の情報を持ちません。RNN は順番に処理するので位置が自然に分かりましたが、Transformer は全トークンを一度に見るため、位置を 明示的に注入 する必要があります。これが 位置エンコーディング(positional encoding) です。
位置エンコーディングを外すと、Transformer は 語順を完全に無視 します。BoW(bag-of-words)的な意味の混合は残りますが、「主語と目的語の入れ替え」「時系列の前後」といった、順序が意味を決めるタスクは壊滅します。アテンションの強力さ(距離に依存しない参照)の裏返しが、この「順序が消える」性質です。
3つの方式:正弦波・学習可能・RoPE
位置をどう表現するかには大きく3系統あります。原理がそれぞれ異なります。
(1) 正弦波(sinusoidal、固定) — 元論文の方式。位置 pos と次元 i から、波長を変えた sin/cos で位置ベクトルを作り、トークン埋め込みに 加算 します。
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
次元ごとに周期が異なる(低次元は短周期、高次元は長周期)ため、2進カウンタのように位置を一意に符号化 できます。学習パラメータが不要で、訓練時より長い系列にもそのまま値を計算できる利点があります。
(2) 学習可能(learned、テーブル) — 位置ごとに専用の埋め込みベクトルを 学習 する方式(BERT/GPT-2 系)。データに最適化される反面、テーブルに無い位置(訓練最大長より先)には対応できず、長文への外挿が効きません。
(3) RoPE(Rotary Position Embedding、回転) — 現行 LLM(LLaMA, Qwen など)の主流。埋め込みに足すのではなく、Q と K のベクトルを位置に応じた角度だけ回転 させます。2次元ずつをペアにして pos·θ だけ回転させると、ヘッド内の内積 Q_m·K_n が 相対位置 (m-n) だけに依存 する形になります。
| 観点 | 正弦波(固定) | 学習可能 | RoPE(回転) |
|---|---|---|---|
| 注入の仕方 | 埋め込みに加算 | 埋め込みに加算 | Q・K を回転(乗算的) |
| 表す位置 | 絶対位置 | 絶対位置 | 相対位置を内積に内包 |
| 学習パラメータ | 不要 | 必要(位置数ぶん) | 不要 |
| 長文への外挿 | ある程度可能 | 原理的に不可 | 強い(補間で延長も容易) |
| 主な採用 | 原論文 | BERT / GPT-2 | 現行の主要 LLM |
RoPE が支持される理由は、絶対位置を与えながら、アテンションの内積には相対距離として効く という両取りにあります。さらに回転角を縮める 位置補間(position interpolation) で、訓練時の数倍のコンテキスト長へ後付け拡張しやすく、長文化の流れと噛み合いました。
- MHA の各ヘッド次元は
d_k = d_model / h。ヘッドを増やしても総計算量は概ね一定(次元を割るため)。 - アテンションは 置換等価 なので位置情報を外部注入する——これが位置エンコーディングの存在理由。
- 正弦波=固定・絶対、学習可能=外挿不可、RoPE=回転で相対位置を内積に埋め込み外挿に強い、の対比は頻出。
- 結合後の
W_oがヘッド統合を担う点を落とさない。
まとめ
Multi-Head Attention は「1本では潰れる複数の関係を、視点を分けて並行に捉え、W_o で統合する」仕組みでした。次元を d_model/h に割ることで、ヘッドを増やしてもコストを増やさずに表現の幅だけを広げています。一方、アテンションは順序を持たない集合演算なので、位置エンコーディングで「何番目か」を注入 して初めて語順を扱えます。固定の正弦波から学習可能テーブルを経て、相対位置を回転で埋め込む RoPE が長文時代の主流になった——この流れを押さえると、コンテキスト長の拡張や長文性能の議論が一段クリアに見えます。土台が曖昧なら ニューラルネットワーク と LLM と Transformer に戻ると、点が線でつながります。
AI/機械学習 Article
Multi-Head Attention と位置エンコーディングの内部を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
Transformer
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5
導入後に効く点
アテンション自体は集合演算で順序を区別できない(置換等価)。だから位置エンコーディングで「何番目か」を明示的に注入する。これが無いと語順が消える。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 5
判断チェックリスト
- 自社の用途が「Transformer / アテンション」に近いか確認する。
- 強みである「Multi-Head は単一の大きなアテンションを複数の小さなヘッドに分割する仕組み。各ヘッドが独立した Q・K・V 部分空間を持ち、文法・係り受け・共参照など別々の関係を並列に捉えて、最後に結合・線形変換で統合する。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。