Linear Attention
線形アテンションでは、ソフトマックスを特徴マップに置き換え、系列長に対する計算量を線形に抑え、デコード時に固定サイズの状態を保持します。DeltaNetとハイブリッドについて解説します。
線形アテンションは、標準的なソフトマックス自己アテンションの二次コストに代わり、系列長に対して計算コストが線形に増加するアテンション機構の一種です。ソフトマックスアテンションは各クエリをすべてのキーと照合するため、N個のtokenから、各ヘッドにつきN × Nのスコア行列が生成されます。また、テキストを生成するTransformerでは、トークンごとに増大するKVキャッシュを保持します。線形アテンションは、ソフトマックスによる類似度を特徴マップの内積φ(q)·φ(k)に置き換えます。これにより、モデルは行列積の順序を組み替え、過去のすべてのキーと値を固定サイズの状態に要約できます。Katharopoulosらが2020年に発表した論文Transformers are RNNsが、この手法の一般的な形式を示しました。現在では、ゲート付きの変種が標準的なアテンション層とともに、実運用の大規模言語モデル(LLM)で使われています。
線形アテンションの仕組み#
ソフトマックスアテンションはsoftmax(QKᵀ)Vを計算します。exp(q·k)はクエリ部分とキー部分に分解できないため、クエリとキーのすべてのペアをスコアリングする必要があります。elu(x) + 1などの特徴マップφを使うと、出力はφ(Q)(φ(K)ᵀV)となり、φ(Q)とφ(K)の各行の合計で正規化されます。行列積は結合則を満たすため、先にφ(K)ᵀVを計算できます。これはトークン数に関係なく、dをヘッド次元としてd × dの行列になります。計算量はO(N²d)からO(Nd²)に減少するため、系列がヘッド次元よりかなり長い場合に効果を発揮します。
因果モデルでは、同じ代数変形により、アテンションを行列値の状態を持つ再帰型ニューラルネットワーク(RNN)に変換できます。新しいトークンが追加されるたびに、外積φ(k)vᵀを状態に加え、そのトークンのクエリは状態を読み取ります。そのため、テキスト生成に必要なメモリとトークンあたりの時間は一定です。学習では並列形式、またはflash-linear-attentionライブラリなどのチャンク単位カーネルを使うため、GPUは引き続き系列全体を一度に処理できます。PyTorchでは、2つの形式が同じ出力を返します。
import torch
import torch.nn.functional as F
torch.manual_seed(0)
n, d = 2048, 64
q, k, v = torch.randn(3, n, d).unbind(0)
phi_q, phi_k = F.elu(q) + 1, F.elu(k) + 1 # positive feature map in place of softmax
# Parallel form: an n x n causal score matrix, as in softmax attention
scores = torch.tril(phi_q @ phi_k.T)
parallel = (scores @ v) / scores.sum(dim=-1, keepdim=True)
# Recurrent form: a fixed d x d state that each new token updates
state, norm, outputs = torch.zeros(d, d), torch.zeros(d), []
for t in range(n):
state += torch.outer(phi_k[t], v[t])
norm += phi_k[t]
outputs.append(phi_q[t] @ state / (phi_q[t] @ norm))
recurrent = torch.stack(outputs)
print("Same outputs:", torch.allclose(parallel, recurrent, atol=1e-4))
print(f"Recurrent state: {state.numel():,} numbers; KV cache after {n:,} tokens: {2 * n * d:,} numbers")Same outputs: True と出力されます。64 × 64の状態は、系列がどれだけ長くなっても4,096個の数値を保持します。一方、2,048トークン処理後の1ヘッド分のKVキャッシュは262,144個の数値を保持し、新しいトークンごとに128個ずつ増加します。
DeltaNet、ゲーティング、ハイブリッドモデル#
固定サイズの状態は、情報を失うメモリです。通常の線形アテンションは状態に情報を追加するだけなので、古い関連付けが蓄積して干渉し、長いコンテキストウィンドウから特定の事実を想起する性能がソフトマックスアテンションに劣ります。現在は、主に2つの対策が使われています。ゲーティングでは、各更新の前に学習した減衰率を状態に乗算することで、モデルが情報を忘れられるようにします。この仕組みはMamba-2などの状態空間モデル(SSM)にも共通しており、その著者らは2つのモデル群が互いに双対な形式であることを示しました。線形Transformerと高速重みプログラマーを結び付けた研究に由来するデルタルールでは、キーに現在保存されている値を読み取り、新しい値と予測値との差分だけを書き込みます。DeltaNetは2024年に、系列全体にわたるデルタルールの並列学習を実現しました。Gated DeltaNet(ICLR 2025)は減衰ゲートを追加し、Moonshot AIのKimi Linearは、各チャネルに個別に作用するようゲートを改良しています。
実運用モデルでは、正確な想起を保つため、これらの層に完全なアテンション層を交互に組み合わせます。Qwen3-NextおよびQwen3.5ファミリーは、Gated DeltaNet層3つの後にゲート付きソフトマックスアテンション層1つを置くブロックを繰り返します。Kimi Linearも、Kimi Delta Attentionとmulti-head latent attentionを同様の3:1の比率で組み合わせます。
線形アテンションと関連手法の比較#
- 自己アテンション:すべてのトークンペアをスコアリングする正確なソフトマックス形式です。計算時間は二次で、KVキャッシュは系列長に応じて増加します。
- Flash attention:オンチップメモリ上のタイル単位で、正確なソフトマックスアテンションを計算するGPUカーネルです。メモリトラフィックを削減しますが、演算数は二次のままです。
- スパースアテンション:ソフトマックスを維持したまま、最近のトークンの局所領域など、選択されたペアだけをスコアリングします。
- グループ化クエリアテンション(GQA):クエリヘッド間でキーと値を共有し、完全なソフトマックスアテンションを維持しながら、KVキャッシュを一定の比率で縮小します。
線形アテンションの用途#
最大の用途は長文脈言語モデルです。ハイブリッドモデルの線形層はデコード中に固定サイズの状態を維持し、少数のソフトマックス層だけが増加するKVキャッシュを保持するためです。2つ目の用途はビジョンです。画像解像度が高くなるほどトークン数が増えるためです。EfficientViTは、ReLUベースの線形アテンションを高解像度のセマンティックセグメンテーションに使用します。また、NVIDIAのSANAは、最大4096 × 4096ピクセルの画像を生成する線形拡散Transformerを構築しています。物体検出では、通常、特徴マップが最も小さい部分だけでアテンションを実行します。YOLO26は標準的なソフトマックスアテンションを維持し、C2PSAブロックとアテンション対応のC3k2ブロック1つだけで実行します。いずれも640ピクセル画像のストライド32にあたる20 × 20の特徴マップ上で動作するため、各アテンション層が処理するトークンは400個で、ヘッドあたりの完全なスコア行列の要素数は160,000です。










