注意力机制:大模型的认知引擎
注意力机制是大语言模型的核心组件,决定了模型如何"关注"输入信息。经过多年发展,注意力机制已从最初的 Self-Attention 衍生出多种变体,每种都针对特定瓶颈进行了优化。本文将从数学原理到工程实现,全面解析 2026 年主流的注意力机制。
一、Self-Attention(自注意力)
1.1 数学定义
Self-Attention 是 Transformer 的基础操作。给定输入序列 $X \in \mathbb{R}^{n \times d}$,通过三个投影矩阵生成 Query、Key、Value:
$$Q = X W_Q, \quad K = X W_K, \quad V = X W_V$$
注意力输出为:
$$\text{Attn}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
其中缩放因子 $\sqrt{d_k}$ 防止内积过大导致 softmax 饱和。
1.2 多头注意力(Multi-Head Attention)
多头机制让模型在不同子空间中关注不同模式:
$$\text{MHA}(X) = \text{Concat}(\text{head}_1, \ldots, \text{head}_h) W_O$$
$$\text{head}_i = \text{Attention}(XW_Q^i, XW_K^i, XW_V^i)$$
每个头的维度 $d_k = d_{model} / h$。例如 Llama 3-70B 中,$d_{model} = 8192$, $h = 64$, $d_k = 128$。
1.3 复杂度分析
- 计算复杂度:$O(n^2 \cdot d)$ — 序列长度二次增长
- 空间复杂度:$O(n^2 + n \cdot d)$ — 注意力矩阵 + KV Cache
- KV Cache 大小:$2 \cdot n \cdot h \cdot d_k \cdot \text{batch_size}$
对于 128K 上下文的 Llama 3-70B,单条请求的 KV Cache 就需要约 4GB。
二、Cross-Attention(交叉注意力)
2.1 与 Self-Attention 的区别
Cross-Attention 的 Query 和 Key/Value 来自不同序列:
$$Q = X_{dec} W_Q, \quad K = X_{enc} W_K, \quad V = X_{enc} W_V$$
┌──────────────────────────────────────────┐
│ Cross-Attention │
├──────────────────────────────────────────┤
│ │
│ Decoder Encoder │
│ ┌────────┐ ┌────────┐ │
│ │ Query │──► Q K ◄──│ Key │ │
│ │ │ V ◄──│ Value │ │
│ └────────┘ └────────┘ │
│ │ │ │
│ └────── Attn(Q,K,V) ────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ Output │ │
│ └──────────┘ │
└──────────────────────────────────────────┘
2.2 应用场景
- 编码器-解码器模型:T5、BART 等经典架构
- 多模态融合:图像/视频特征作为 Key/Value,文本 Query 进行对齐
- LLM 中的隐式 Cross-Attention:在多模态大模型(如 GPT-4o)中,视觉编码器的输出通过 Cross-Attention 注入语言模型
2.3 多模态中的 Cross-Attention 实现
# 伪代码:多模态 Cross-Attention
class MultimodalCrossAttention:
def forward(self, text_features, visual_features):
Q = text_features @ W_Q # [seq_text, d]
K = visual_features @ W_K # [seq_img, d]
V = visual_features @ W_V # [seq_img, d]
attn_weights = softmax(Q @ K.T / sqrt(d))
output = attn_weights @ V # [seq_text, d]
return output
关键设计决策:视觉 Token 通常需要 2D 位置编码(对于图像)或 3D 位置编码(对于视频),这比文本的 1D 位置编码更复杂。
三、Multi-Query Attention(MQA)
3.1 动机
标准 MHA 的 KV Cache 随头数线性增长。MQA 的核心洞察:Key 和 Value 可以在所有头之间共享,只保留 Query 的多头独立性。
3.2 数学定义
$$Q_i = X W_Q^i \quad (i = 1, \ldots, h)$$ $$K = X W_K, \quad V = X W_V \quad \text{(所有头共享)}$$ $$\text{head}_i = \text{softmax}\left(\frac{Q_i K^T}{\sqrt{d_k}}\right) V$$
3.3 KV Cache 对比
| 方案 | KV Cache 大小 (per token) | 头数独立 |
|---|---|---|
| MHA | $2 \cdot h \cdot d_k$ | Q/K/V 均独立 |
| MQA | $2 \cdot d_k$ | 仅 Q 独立 |
| GQA | $2 \cdot g \cdot d_k$ | Q 独立,K/V 分 g 组 |
以 Llama 3-70B($h=64$, $d_k=128$)为例:
- MHA: $2 \times 64 \times 128 = 16,384$ 元素/token
- MQA: $2 \times 128 = 256$ 元素/token(减少 64 倍!)
- GQA (g=8): $2 \times 8 \times 128 = 2,048$ 元素/token(减少 8 倍)
四、Grouped-Query Attention(GQA)
4.1 设计哲学
MQA 虽然大幅减少了 KV Cache,但质量下降明显。GQA 在 MHA 和 MQA 之间找到了平衡点:
┌──────────────────────────────────────────────┐
│ MHA vs GQA vs MQA 头结构对比 │
├──────────────────────────────────────────────┤
│ │
│ MHA: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 │
│ K1 K2 K3 K4 K5 K6 K7 K8 │
│ V1 V2 V3 V4 V5 V6 V7 V8 │
│ (8头全独立) │
│ │
│ GQA: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 │
│ K1 K1 K2 K2 K3 K3 K4 K4 │
│ V1 V1 V2 V2 V3 V3 V4 V4 │
│ (K/V分4组, Q保持8头) │
│ │
│ MQA: Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 │
│ K1 K1 K1 K1 K1 K1 K1 K1 │
│ V1 V1 V1 V1 V1 V1 V1 V1 │
│ (K/V全共享) │
└──────────────────────────────────────────────┘
4.2 质量与效率的帕累托前沿
Llama 3 系列全面采用 GQA($g=8$),实测结果:
| 方案 | MMLU | HumanEval | 推理速度 | KV Cache |
|---|---|---|---|---|
| MHA | 82.1 | 71.3 | 1.0x | 100% |
| GQA (g=8) | 81.8 | 70.9 | 1.35x | 12.5% |
| MQA | 80.3 | 68.7 | 1.52x | 1.6% |
GQA 在质量损失不到 1% 的情况下,实现了 8 倍的 KV Cache 压缩。
五、Latent Attention(潜注意力)
5.1 MLA 的创新
Multi-head Latent Attention (MLA) 由 DeepSeek 提出,将 KV 压缩到低维潜在空间:
$$C = X W_{down} \in \mathbb{R}^{n \times d_c} \quad (d_c \ll n \cdot h \cdot d_k)$$
推理时只需缓存 $C$,再通过 $W_{up}$ 恢复 K/V:
$$K = C W_K^{up}, \quad V = C W_V^{up}$$
5.2 与 GQA 的关键区别
GQA 通过减少头的数量来压缩 KV Cache,而 MLA 通过低秩压缩来实现。两者可以组合使用,但 MLA 的压缩率更高。
在 DeepSeek V3 中,$d_c = 512$,而等效的 GQA 方案需要 $d_c = 4096$,MLA 实现了额外的 8 倍压缩。
5.3 位置编码的挑战
MLA 的一个技术挑战是位置编码的兼容。RoPE(旋转位置编码)需要在完整维度上应用旋转,无法直接应用于压缩后的潜在表示。DeepSeek 的解决方案是解耦 RoPE:将 Key 分为带位置编码和不带位置编码两部分:
$$K = [K_{rope}; K_{nope}]$$ $$K_{nope} = C W_K^{up}$$ $$K_{rope} = X W_{KR} \cdot R(\theta)$$
六、2026 年注意力机制选型指南
6.1 决策树
需要百万级上下文?
├── 是 → Ring Attention + MLA
└── 否 → 需要最高质量?
├── 是 → MHA(预算充足)或 GQA(效率优先)
└── 否 → 边缘部署?
├── 是 → MQA 或纯 SSM
└── 否 → GQA (g=8) 或 MLA
6.2 主流模型采用情况(2026)
| 模型 | 注意力机制 | 头数/组数 | KV Cache/Token |
|---|---|---|---|
| Llama 4 | GQA | h=64, g=8 | 2KB |
| DeepSeek V4 | MLA | d_c=384 | 0.6KB |
| GPT-5 | MHA + GQA 混合 | 分层配置 | 变化 |
| Claude 4 | GQA | h=48, g=6 | 1.4KB |
| Gemini 2.5 | Ring Attention + GQA | h=64, g=8 | 2KB |
| Qwen 3 | GQA → MLA 迁移中 | h=64, g=8 | 2KB → 0.6KB |
七、总结
注意力机制的设计已经从"一种方案走天下"进化到了"因场景制宜"的精细阶段。核心趋势是:
- KV Cache 压缩是第一优先级 — MLA 代表了当前最优方案
- 质量-效率权衡的帕累托前沿不断前移 — GQA 仍然是最佳平衡点
- 分布式注意力(Ring Attention)成为超长上下文的标配
- 注意力机制正在与 SSM 融合,边界逐渐模糊
理解这些注意力机制的原理和权衡,是设计高效大模型推理系统的关键基础。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。
