一句话定义
多头注意力(Multi-Head Attention)是把注意力计算拆成若干组并行进行、最后再拼合起来的机制:每一组叫一个「头」(head),各自在不同的子空间里学习关注不同的关系。
它到底在干什么
先回顾自注意力(AI 词典:Self-Attention">Self-Attention):句子里每个词都会生成三个向量——Query(查询)、Key(键)、Value(值)。用 Q 和 K 的点积算出「谁该关注谁」的权重,再拿这些权重去加权求和 V,就得到这个词的新表示。
问题是:一套 Q/K/V 投影只能学出一种关注模式。而一句话里同时存在多种关系——指代、语法、语义相似、修饰……
多头注意力的做法很朴素:把这套流程复制 h 份。每一份都有自己独立的投影矩阵,把输入映射到一个更小的维度(如果模型维度是 512、8 个头,每个头就管 64 维),各自独立算一遍注意力,然后把所有头的输出拼接(concat)起来,再过一个线性层融合成最终结果。
打个比方:审一份合同,一个人从头到尾只能带一种关注习惯。多头注意力像一个评审小组——甲专门盯付款条款,乙专门盯交付时间,丙专门盯违约责任。三人各拿一支不同颜色的高亮笔,标完把纸叠在一起,才是一张完整的风险地图。看球赛也一样:有人盯球,有人盯防守阵型,有人盯裁判,拼起来才是比赛全貌。
有个常被忽略的细节:因为每个头的维度缩小到了 d_model / h,多头并不会带来 h 倍的计算开销,总量和单头全维度大致相当。
和相邻概念的区别
| 单头注意力 | 多头注意力 | |
|---|---|---|
| 关注模式 | 一种 | 多种,并行 |
| 单个头维度 | 完整维度 | 完整维度 ÷ 头数 |
| 计算量 | 一份大矩阵 | h 份小矩阵,总量相近 |
| 输出方式 | 直接加权求和 | 拼接后再线性映射 |
还要区分两件容易混淆的事:
- 多头注意力 vs 多查询/分组查询注意力(MQA / GQA):后者是推理阶段让多个头共享 K、V 来省显存的工程优化,目的不是「多个视角」。
- 多头注意力 vs 卷积的多通道:多通道是不同卷积核扫同一份输入,多头是对同一份输入做多种投影,关注的是词与词之间的关系而非局部窗口。
对实际工作意味着什么
对从业者:头数是个超参,不是越多越好;实践中有些头被剪掉后效果几乎不变,说明存在冗余。可视化注意力图能帮你观察模型在关注什么,但别把某一条注意力线当成因果解释。
对职场使用者:模型能同时抓住指代、句法、语义这些不同线索,正是它能处理长句、多义词、跨句指代的原因之一。你写提示词时把关键约束分点、分行写清楚,本质上是给它更多「可被不同头分别捕获」的信号。具体实现细节各家框架略有差异,以官方文档为准。
