Multi-Head 注意力:多套问法并行
本文基于模型知识整理(生成时未联网核对),多头机制建议对照原论文 §3.2.2 复核。
一句话定义
Multi-Head 注意力把 Q/K/V 各投影到 h 个低维子空间(d_model → h×d_head),在每个子空间独立做注意力,再把 h 个输出拼接回原维度——多套"提问方式"并行:有的头盯句法、有的头盯共指、有的头看相邻位置,各司其职后信息融合。
为什么重要
单头注意力的 softmax 是"平均化"的——所有信息被一个权重分布混合,多任务会互相干扰;多头让模型在同一层同时维护多种关系(句法头/共指头/位置头——注意力可视化研究反复观察到这些功能分工)。多头是"容量"与"分工"的结构化表达,也是模型可解释性研究的主要对象。
前置知识
kp-002(缩放点积注意力)。
核心概念
- 计算流程:
$$\text{head}_i=\text{Attention}(XW_i^Q,XW_i^K,XW_i^V)$$ $$\text{MultiHead}(X)=\text{Concat}(\text{head}_1,\dots,\text{head}_h)W^O$$ 每头维度 d_head = d_model/h(如 512/8=64),拼接后经输出矩阵 W^O 融合。
- 多头≠总计算量增加:分头降低每头维度(d_model 恒定切分),总 QKV 参数与单"大维度注意力"相同——多头是同预算下的结构化分工,不是加法。
- 头的功能分化(实证):可视化研究发现的典型头型——位置头(只看相邻/前一词)、句法头(动词→宾语)、共指头(代词→先行词)、稀有词头(拷贝低频 token)。不同层分工不同:底层偏局部句法、高层偏语义。
- 多头冗余与剪枝:实验表明部分头可剪除而不明显掉点(冗余容量)——这也是压缩(kp-024)与结构化剪枝的对象。
- MQA/GQA 预告(推理优化 kp-023):让多个 Q 头共享一组 KV 头——牺牲少量质量换取推理时 KV Cache 大幅缩小,是现代 LLM 的标配改造。
原理与机制
为什么"低维多头"优于"单头全维":单头 softmax 强制"一个分布管所有任务"——句法与语义权重互相拉扯(softmax 行只能有一个加权和);多头允许每头独立分布,h 种关系并行表达再融合。类比 kp-030 线代:把 d_model 维空间切成 h 个子空间,每个子空间有自己的"相关性几何"。
输出投影 W^O 的作用:拼接只是并排;W^O(h·d_head × d_model)学"如何融合各头的结论"——可以加权、可以让某些头主导。可学习融合是多头优于"简单平均"的关键。
与 CNN 多通道的类比:多头≈多个注意力通道,每头有自己的"感受野模式"——这也是 ViT(kp-020)能把注意力当卷积替身的部分原因。
图示
X (n × 512)
├─ 头1 (64维): 句法头 → Attention₁
├─ 头2 (64维): 共指头 → Attention₂
├─ ⋯ 头8 (64维): 位置头 → Attention₈
↓ Concat (n × 512)
↓ ×Wᴼ (融合)
输出 (n × 512)
总参数与单头全维注意力相同 (切分不增量)
直观类比
单头注意力像"一个人同时盯句法和语义"——顾此失彼;多头像"一个编辑部":语法编辑、事实核查、风格编辑各审一遍稿件(并行子空间),主编(W^O)汇总意见出终稿。人多不贵(总预算相同),但分工产出质量高得多。
实例或案例
- BERT 的头分析(Clark et al. 2019):直接可视化出句法头/共指头/位置头——多头分工的最著名实证。
- 指示向量头(induction head):两层组合的"复制前面 pattern"头——被提出作为 ICL(kp-029)的机制候选。
- Llama 的 GQA:32 个 Q 头共享 8 组 KV——推理加速的工业改造(kp-023)。
常见误区
- 误区一:"多头=集成多个 Transformer"。只是同一层内的子空间并行;参数共享同一输入 X,不训练多个模型。
- 误区二:"头数越多必然越好"。头过多则每头维度过小(表达能力不足),且冗余头浪费内存;典型 h=8~32、d_head≥64。
- 误区三:"每个头的功能是设计者指定的"。分工是训练自发涌现的(事后可观察);指定头功能的方式是给特定头加先验/约束的研究方向而非默认行为。
与其他知识点的关系
- kp-002:单头机制本体。
- kp-023:MQA/GQA 推理优化。
- kp-029:induction head 与 ICL 机制。
- kp-008:FFN 与注意力在 Block 中的分工(混合 vs 加工)。
自测题
- d_model=512、h=8:每头维度与总注意力参数(相对单头全维)?
答:d_head=64;参数量与单头 512 维注意力相同(Q/K/V/O 各 512×512)——切分不加预算。
- 为什么需要输出矩阵 W^O?
答:拼接只是并排罗列;W^O 学习跨头的线性融合(加权/选择),是"分工后整合"的可学习环节。
- 举例说明"头自发分工"的实证证据。
答:BERT 头可视化中的句法头(动词→宾语高权重)、共指头(代词→先行词)、位置头(只看前一词)——训练后自然涌现。
延伸阅读
- Vaswani 等 2017 §3.2.2。
- Clark 等, "What Does BERT Look At?"(2019,头功能分析)。
- Elhage 等, "A Mathematical Framework for Transformer Circuits"(2021,induction head 与头的组合理论)。