Input
Attention Heads (parallel)
Concatenate & Project
Multi-Head Self-Attentionとは
Multi-Head Attention は、複数の Attention Head を並列に実行し、
それぞれが異なる部分空間で情報を抽出します。
これにより、モデルは入力の様々な側面に同時に注目できます。
処理の流れ
Phase 1: 各ヘッドでQ, K, V生成
入力Xを各ヘッド専用のWq, Wk, Wvで変換。
各ヘッドの次元: d_k = d_model / num_heads
Phase 2: Attention計算
各ヘッドで独立にSelf-Attentionを計算。
Score = Q·K^T / √d_k → Softmax → ×V
Phase 3: Concat
全ヘッドの出力を連結。
サイズ: seq × d_model
Phase 4: 出力射影
連結した結果にWoを掛けて最終出力。
Output = Concat × Wo
数式
MultiHead(Q, K, V) = Concat(head_1, ..., head_h) · Wo
where head_i = Attention(X·Wq_i, X·Wk_i, X·Wv_i)
なぜ複数のヘッドを使うのか
- 多様な表現: 各ヘッドが異なるパターン(構文、意味、位置関係など)を学習
- 表現力の向上: 単一のAttentionより豊かな特徴を捉えられる
- 計算効率: 次元を分割するため、計算量は単一Attentionとほぼ同じ