9.3 多头注意力 -- 为什么需要多个头
9.3.1 生活比喻:一组专家同时分析一句话
想象一个刑事调查团队在分析同一句证词:“张三把包裹给了李四,因为他说里面有重要的文件。”
如果只有一个侦探(单头注意力),他只能得出一个结论:“张三→李四,传递了包裹”。这是对的,但不够。
如果有 8 个侦探(8 头注意力),他们可以同时发现不同的关系:
- 侦探 A 关注动作:“把…给”这个动词的主语是张三,宾语是李四
- 侦探 B 关注指代:“他”指的是张三(因为”包裹”在张三手里)
- 侦探 C 关注修饰:“重要的文件”修饰的是”包裹”
- 侦探 D 关注位置:每个词和它前面/后面的词的局部关系
- 侦探 E-H 关注各种语义关联和模式
最后,队长把 8 个侦探的报告拼接在一起,综合成一个全面的分析。这就是多头注意力的核心思想:用多个并行的注意力头,每个头从不同的”角度”关注输入,最后合并所有视角。
9.3.2 单头的局限:加权平均只能表达一种混合比例
从数学上看,单头注意力的输出是所有 Value 向量的加权平均:
Output = Σ_j α_j · V_j
其中 α_j 是 softmax 产生的一组权重(和为 1)。加权平均是一种”混合”操作——它只能表达一种混合比例。如果句子中有多种独立的关系需要同时建模(如”主谓关系”和”指代关系”和”修饰关系”),单一混合比例就不够用了。
考虑句子 “小明把苹果给了小红,因为她很饿”。单头注意力可能只学会了关注”她”到”小红”(共指消解),但无法同时关注”给”到”苹果”(动宾关系)和”饿”到”吃”(隐式因果)。一个头只能生成一组注意力权重,一组权重只能捕获一种关注模式。
9.3.3 多头的数学:并行投影到多个子空间
多头注意力并行运行 h 个独立的注意力操作,每个头有自己的投影矩阵:
head_i = Attention(Q · W_Q^i, K · W_K^i, V · W_V^i)
MultiHead(Q, K, V) = Concat(head_1, ..., head_h) · W_O
关键设计细节:
每个头看到的是输入的不同低维投影。 W_Q^i 是一个 (d_model × d_k) 的矩阵,它将 d_model 维的通用表示映射到 d_k 维的”查询子空间”。因为每个头的 W_Q^i、W_K^i、W_V^i 是不同的可学习参数,它们自然会被训练成关注不同类型的模式。
总计算量与单头基本一致。 每个头的维度 d_k = d_v = d_model / h。所以 h 个 d_k 维的注意力操作,其总计算量约等于 1 个 d_model 维的注意力操作(因为 QK^T 的复杂度是 O(n² · d),头数增加会拆分 d 但总 d 不变)。这种”维度折分”的设计非常精妙——用相同的计算预算,换取多种并行的关注模式 1。
W_O 负责”融合”。 拼接后的向量经过 W_O(一个 d_model × d_model 的矩阵)做最终投影,让不同头的信息在 d_model 维空间中交互和整合。
9.3.4 头的分工:从语法到语义的层次化关注
大量实证研究表明,不同注意力头确实学会了不同的关注模式,且这种分工在层与层之间呈现明显的层次化结构:
底层(第 1-3 层):头主要关注局部位置关系。这些”位置头”几乎纯粹基于相对距离——总是关注前一个 token(i-1)、后一个 token(i+1)或相邻的几个 token。模式类似 n-gram 特征提取。大约 15% 的头属于这一类 2。
中层(第 4-8 层):出现明确的句法结构关注。“句法头”关注主谓关系(主语 token 对谓语动词的注意力很高)、动宾关系、介词-宾语关系。Clark et al. (2019) 发现 BERT 中约 1/3 的头主要关注句法依赖。还有一些”分隔头”专门关注 [SEP]、[CLS] 等特殊 token(作为句子边界的锚点)3。
高层(第 9-12 层及以上):语义级别关注占主导。语义头关注语义相关的词对——“医生”和”医院”、“钢琴”和”演奏”。这些头对词序不敏感,更关注词义关联。注意力分布更分散、更全局。Voita et al. (2019) 的统计:高层约 52% 的头是语义型 4。
2023-2024 年的新发现:Li et al. (2024) 发现了一种新型头——检索头(Retrieval Heads),它们专门负责从长上下文中”检索”与当前 token 相关但距离很远的过去信息。这些头对长上下文能力至关重要,缺少检索头的模型在”大海捞针”(Needle-in-a-Haystack)测试中表现极差 5。
9.3.5 头数选择:从 8 到 64
| 模型 | 头数 (h) | d_model | d_k | 说明 |
|---|---|---|---|---|
| Transformer-base | 8 | 512 | 64 | 原始论文配置 |
| Transformer-big | 16 | 1024 | 64 | 原始论文大模型 |
| BERT-base | 12 | 768 | 64 | 经典理解模型 |
| BERT-large | 16 | 1024 | 64 | — |
| GPT-3 175B | 96 | 12288 | 128 | 大模型时代开端 |
| Llama 3 70B | 64 | 8192 | 128 | 2024 代表性配置 |
| Llama 4 | 64 (Q) / 8 (K/V) | 8192 | 128 | 2025,GQA 架构 |
| DeepSeek-V3 | 128 (Q) / 1 (K/V) | 7168 | 128 | MLA + MQA 架构 |
经验法则:保持 d_k = d_model / h 在 64 到 128 之间。 d_k = 32 则每个头的信息容量不足,无法捕获有意义的模式。d_k = 256+ 则单头就足以覆盖大部分关系,多头失去意义——训练出来的多个头会产生高度冗余的模式。
需要注意的是,这个经验法则仅适用于标准 MHA 中每个头独立 K/V 的情况。2026 年的主流 LLM 使用 GQA(分组查询注意力),其中 Q 头数和 K/V 头数可能不同(如 Llama 4 的 64 个 Q 头共享 8 组 K/V),此时 d_k 的计算方式有所不同。
9.3.6 头冗余与剪枝:大部分头是多余的
Michel et al. (2019) 的发现曾经震惊学界:BERT 中 80% 以上的注意力头可以在测试时被移除,模型性能几乎不下降。 这意味着大多数头学到的是冗余模式——不同头学会了几乎相同的关注分布 6。
剪枝策略分为三类:
- 迭代剪枝:每次移除一个头,微调几步恢复性能,再移除下一个。效果最好但最昂贵。
- 一次性剪枝:基于”头重要性分数”(如注意力权重的熵、梯度的 L1 范数、头输出的 L2 范数)一次性排名并移除 top-k 个最不重要的头。
- 层敏感性:不同层对剪枝的容忍度不同。底层和中层通常更敏感(移除后影响大),高层冗余度更高。
实践启示:训练时用多头提供冗余容量帮助优化(多个头提供了梯度信号的多样性),推理时可以通过 GQA/MQA 从架构层面减少 K/V 头数(而非事后剪枝),这是 2026 年的主流做法。关于 GQA 的详细讨论见 9.9 节。
额外参考:注意力机制的基础概念在 注意力机制 (Attention Mechanism) 中有更百科全书式的覆盖,Transformer 架构全景在 Transformer 架构 中。
← 上一节:9.2 自注意力机制 — 深度拆解 | 下一节:9.4 位置编码 — Transformer 的"序列感知" →
注释
-
Vaswani et al., 2017 ↩
-
Voita et al., “Analyzing Multi-Head Self-Attention”, 2019, https://arxiv.org/abs/1905.09418 ↩
-
Clark et al., “What Does BERT Look At?”, 2019, https://arxiv.org/abs/1906.04341 ↩
-
Voita et al., 2019 ↩
-
Li et al., “Retrieval Heads: The Secret Sauce of Long-Context LLMs”, 2024, https://arxiv.org/abs/2407.01219 ↩
-
Michel et al., “Are Sixteen Heads Really Better than One?”, 2019, https://arxiv.org/abs/1905.10650 ↩
-
Michel et al., 2019 ↩
-
Voita et al., 2019 ↩
-
Clark et al., 2019 ↩