注意力机制:大模型的认知引擎

注意力机制是大语言模型的核心组件,决定了模型如何"关注"输入信息。经过多年发展,注意力机制已从最初的 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$),实测结果:

方案MMLUHumanEval推理速度KV Cache
MHA82.171.31.0x100%
GQA (g=8)81.870.91.35x12.5%
MQA80.368.71.52x1.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 4GQAh=64, g=82KB
DeepSeek V4MLAd_c=3840.6KB
GPT-5MHA + GQA 混合分层配置变化
Claude 4GQAh=48, g=61.4KB
Gemini 2.5Ring Attention + GQAh=64, g=82KB
Qwen 3GQA → MLA 迁移中h=64, g=82KB → 0.6KB

七、总结

注意力机制的设计已经从"一种方案走天下"进化到了"因场景制宜"的精细阶段。核心趋势是:

  1. KV Cache 压缩是第一优先级 — MLA 代表了当前最优方案
  2. 质量-效率权衡的帕累托前沿不断前移 — GQA 仍然是最佳平衡点
  3. 分布式注意力(Ring Attention)成为超长上下文的标配
  4. 注意力机制正在与 SSM 融合,边界逐渐模糊

理解这些注意力机制的原理和权衡,是设计高效大模型推理系统的关键基础。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。