Attention Mechanism(アテンション機構)

article technology high #attention-mechanism#self-attention#cross-attention#scaled-dot-product#softmax#flashattention#sparse-attention#mla
Created: 2026-05-25 Updated:

Bahdanau additive 注意から scaled dot-product・MHA/MQA/GQA・FlashAttention・Longformer/BigBird・Performer・DeepSeek MLA まで attention 機構の系譜と効率化変種を整理する。

Attention Mechanism(アテンション機構)

アテンション機構はクエリ qq と一連のキー kik_i の類似度を softmax で確率分布化し、対応する値 viv_i の加重和を返す微分可能な「ソフトな辞書参照」である。Bahdanau 2015 (arXiv:1409.0473) が encoder-decoder の固定長ボトルネック解消として導入し、Vaswani 2017 (arXiv:1706.03762) の scaled dot-product 化で再帰を捨て、現代 LLM の中核演算となった。本稿は加法注意から MLA・FlashAttention まで attention 自体の系譜と効率化変種を整理する。Transformer 全体構造は tech-35、位置注入は tech-34 を参照。

アテンション以前 — encoder-decoder と Bahdanau 注意

2014 年の Sutskever seq2seq は入力系列を encoder LSTM の最終隠れ状態 1 本に圧縮し decoder へ渡したため、長文で情報が潰れた。Bahdanau 2015 はこのボトルネックを解消すべく、decoder の各ステップ tt で encoder の全ての隠れ状態 h1,,hTh_1, \dots, h_T を参照する加法注意 (additive / Bahdanau attention) を導入した:

etj=vtanh(W1st1+W2hj),αtj=softmaxj(etj),ct=jαtjhje_{tj} = v^\top \tanh(W_1 s_{t-1} + W_2 h_j), \quad \alpha_{tj} = \mathrm{softmax}_j(e_{tj}), \quad c_t = \sum_j \alpha_{tj} h_j

ctc_t が context vector で decoder へ追加入力する。Luong 2015 (arXiv:1508.04025) は加法を捨て内積・bilinear (general)・concat の 3 スコアを比較し dot-product を推奨。注意 = 学習可能なソフト辞書参照という抽象化が固まり、再帰 + 注意のハイブリッドが NMT で支配的になる。

数式と形式 — additive, dot-product, scaled dot-product

クエリ次元 dkd_k のもとで主要な 3 形式は

additive: e=vtanh(Wqq+Wkk),dot: e=qk,scaled dot: e=qkdk\text{additive: } e = v^\top \tanh(W_q q + W_k k), \quad \text{dot: } e = q^\top k, \quad \text{scaled dot: } e = \frac{q^\top k}{\sqrt{d_k}}

加法は MLP 1 層分の演算で高品質だが GEMM に乗らず GPU で遅い。素の内積は速いが dkd_k が大きいと Var(qk)=dk\mathrm{Var}(q^\top k) = d_k で softmax 飽和し勾配がほぼ消える。Vaswani 2017 は dk\sqrt{d_k} で割り分散を 11 に戻す scaled dot-product を採用、Attention(Q,K,V)=softmax(QK/dk)V\text{Attention}(Q, K, V) = \mathrm{softmax}(QK^\top / \sqrt{d_k}) V という単一行列積に統一した。これが GPU GEMM に乗ることが Transformer 並列性の鍵である。

自己注意 vs cross-attention vs 因果マスク

自己注意 (self-attention)Q,K,VQ, K, V を同一系列 XRn×dX \in \mathbb{R}^{n \times d} から Q=XWQ,K=XWK,V=XWVQ = XW_Q, K = XW_K, V = XW_V と射影し n×nn \times n の注意行列を作る。cross-attentionQQ を decoder 側・K,VK, V を encoder 出力から作り、機械翻訳や T5 系・拡散モデルのテキスト条件付けに使う。形状は ndec×nencn_{\text{dec}} \times n_{\text{enc}} で非対称。

マスキングはソフトマックス前に -\infty を加算して特定セルを参照禁止にする操作で 2 種類ある:

  • 因果マスク (look-ahead / causal mask): 上三角 -\infty で未来トークン参照禁止。decoder-only LLM の自己回帰生成に必須。
  • パディングマスク: バッチ内可変長を埋めた [PAD] トークンの列を -\infty にして KV 側から排除。

両者は同時適用可能で、Mij=0M_{ij} = 0 または -\infty の加算行列として実装する。

マルチヘッド・MQA・GQA・MLA

Multi-Head Attention (MHA)Q,K,VQ, K, Vhh 個の dk=dmodel/hd_k = d_{\text{model}}/h 次元部分空間に並行射影し独立に attention 計算後に連結 + 出力射影。総 FLOP は単一ヘッドと同等で各ヘッドが構文依存・共参照・近接を別々に担う。

Multi-Query Attention (MQA) (Shazeer 2019, arXiv:1911.02150) は KV を 1 ヘッド共有し 2h22h \to 2 に KV キャッシュを縮める。HBM 帯域律速を緩和し約 10× スループットだが品質劣化事例あり。

Grouped-Query Attention (GQA) (Ainslie 2023, arXiv:2305.13245) は中庸案で GG KV グループを h/Gh/G クエリで共有 (G=1G = 1 なら MQA・G=hG = h なら MHA)。LLaMA 2 70B が G=8G = 8 で MHA 同等品質を示し以後標準。

Multi-head Latent Attention (MLA) (DeepSeek-V2, arXiv:2405.04434) は KV を低ランク joint 圧縮し ctKV=WDKVhtRdcc_t^{KV} = W_{DKV} h_t \in \mathbb{R}^{d_c} (dchdkd_c \ll h \cdot d_k) のみキャッシュ、kt=WUKctKV,vt=WUVctKVk_t = W_{UK} c_t^{KV}, v_t = W_{UV} c_t^{KV} で復元する。GQA より小容量で MHA 級品質を達成、RoPE は別チャネル化が必要。

効率化系譜 — FlashAttention・Sliding Window・Sparse・低ランク・カーネル

素の自己注意は O(n2d)O(n^2 d) FLOP と O(n2)O(n^2) メモリで、長文脈の律速。系統別に 5 アプローチがある。

FlashAttention (Dao 2022, arXiv:2205.14135) は近似なしのIO-aware 厳密注意n×nn \times n 行列を HBM に書かず Q/K/V をブロック分割し SRAM へロード、online-softmax で正規化定数 m,m, \ell を逐次更新して出力を直接合成する。HBM I/O を O(n2)O(n^2) から O(n2d/M)O(n^2 d/M) (MM は SRAM 容量) に削減、2〜4× wall-clock・5〜20× メモリ削減。FA-2 (arXiv:2307.08691) で A100 50〜73%、FA-3 で H100 約 75% 理論ピーク。

Sliding Window Attention (SWA) は各トークンが直近 ww 個のみ参照、メモリ O(nw)O(n w)。Longformer (Beltagy 2020, arXiv:2004.05150) はこれに少数のグローバルトークンを全結合し 4K → 32K を実現。BigBird (Zaheer 2020, arXiv:2007.14062) は local + global + ランダムで Turing-completeness を保証。Mistral 7B が SWA + rolling KV cache で商用化。

低ランク系: Linformer (Wang 2020, arXiv:2006.04768) は K,VK, V を学習射影で nkn \to k に圧縮し O(nk)O(nk)。注意行列が経験的に低ランクである観察に基づく。

カーネル/線形系: Performer (Choromanski 2021, arXiv:2009.14794) は softmax カーネルを FAVOR+ で正のランダム特徴 ϕ(q),ϕ(k)\phi(q), \phi(k) に非バイアス近似し softmax(QK)Vϕ(Q)(ϕ(K)V)\mathrm{softmax}(QK^\top)V \approx \phi(Q)(\phi(K)^\top V) の積順序入替で O(n)O(n) 化。Linear Transformer (Katharopoulos 2020, arXiv:2006.16236) は ϕ(x)=elu(x)+1\phi(x) = \mathrm{elu}(x) + 1 で同目的。

ハッシュ系: Reformer (Kitaev 2020, arXiv:2001.04451) は LSH で近傍のみ計算 O(nlogn)O(n \log n)

理論的視点 — set function / kernel / graph attention

自己注意は置換同変な集合関数 (permutation-equivariant set function) で、入力順序を変えると出力も同じ置換が掛かる。これが位置符号化を別経路で注入する必然性を生む。

Tsai 2019 (arXiv:1908.11775) は注意をカーネル法として再解釈し Attention(q,K,V)=iκ(q,ki)vi/jκ(q,kj)\mathrm{Attention}(q, K, V) = \sum_i \kappa(q, k_i) v_i / \sum_j \kappa(q, k_j)κ\kappa は指数カーネル exp(qk/dk)\exp(q^\top k / \sqrt{d_k})、と定式化。Performer の FAVOR+ 設計の理論基盤である。

Graph Attention Network (GAT) (Veličković 2018, arXiv:1710.10903) は注意をグラフ隣接ノードに限定し αij=softmaxjN(i)(LeakyReLU(a[WhiWhj]))\alpha_{ij} = \mathrm{softmax}_{j \in \mathcal{N}(i)}(\mathrm{LeakyReLU}(a^\top [Wh_i \| Wh_j])) で集約に学習可能重みを与える。自己注意の全結合グラフ特殊化と見做せ、GNN と Transformer の橋渡しになる。

位置情報の注入

自己注意は順序を区別しないため正弦波絶対・T5 相対バイアス・RoPE・ALiBi・YaRN/LongRoPE などで位置を別チャネル注入する。詳細は Positional Encoding — tech-34 を参照。本稿の比較表は「位置 = RoPE 等で別経路」を前提とする。

代替・補完技術 — SSM・Mamba・Hyena

O(n2)O(n^2) 依存を回避する非注意アーキテクチャも 2023 年以降復権した。Mamba/S6 (Gu & Dao 2023, arXiv:2312.00752) は状態空間モデル (SSM) を選択的ゲート化し O(n)O(n) で 1M トークンまでスケール。Hyena (Poli 2023, arXiv:2302.10866) は long convolution + gating で O(nlogn)O(n \log n) 領域を狙う。ただし連想想起 (associative recall) タスクで attention が依然優位 (Arora 2024, arXiv:2402.18668)、ハイブリッド (Jamba, Zamba) や attention 主軸 + Mamba 補助が現実解。

2026 年の選択指針

変種メモリ計算量主用途
MHA (素)O(n2)O(n^2)O(n2d)O(n^2 d)短文・基準実装
MQA / GQAKV 1/h1/h1/(h/G)1/(h/G)O(n2d)O(n^2 d)LLM デコード高速化
MLAKV 低ランク dcd_cO(n2d)O(n^2 d)長文脈 KV 圧縮
FlashAttentionO(n)O(n) ワーキングO(n2d)O(n^2 d) 厳密学習・推論の万能高速化
Sliding WindowO(nw)O(n w)O(nwd)O(n w d)長文脈 (局所優位)
Longformer / BigBirdO(n+gn)O(n + g \cdot n)O(n(w+g))O(n(w+g))文書 QA・長文分類
LinformerO(nk)O(n k)O(nkd)O(n k d)学習効率重視
PerformerO(n)O(n)O(nd2)O(n d^2)超長系列・厳密性緩和可
ReformerO(nlogn)O(n \log n)O(nlognd)O(n \log n \cdot d)単一 GPU 長文脈

実装は PyTorch 2.x の scaled_dot_product_attention (FA2/FA3 自動選択)、xformers、FlashAttention 公式 CUDA、Triton が主流。長文脈学習では FA + RoPE + GQA + (SWA or 全結合) が事実上の標準。

二言語用語対照表

日本語English
加法注意 / 乗法注意Additive / Multiplicative attention
スケールド・ドット積注意Scaled dot-product attention (SDPA)
自己注意 / クロス注意Self-attention / Cross-attention
因果マスク / パディングマスクCausal mask / Padding mask
マルチヘッド注意Multi-head attention (MHA)
マルチクエリ / グループドクエリ注意Multi-query / Grouped-query attention
マルチヘッド潜在注意Multi-head Latent Attention (MLA)
スパース注意 / 線形注意Sparse attention / Linear attention
スライディングウィンドウ注意Sliding window attention (SWA)
カーネル法 / ランダム特徴Kernel method / Random features
置換同変 / 集合関数Permutation-equivariant / Set function

参考文献

Local graph