Skip to content

为什么 Transformer 采用多头注意力机制? ​

  • 标签:Transformer、自注意力机制、多头注意力机制

🏛 业务架构师 ​

Transformer 采用多头注意力的原因,我从四个价值讲:

  1. 多视角并行建模:一组注意力只能学一种关联模式;多头让不同头专注不同关系——研究可视化显示有的头管句法依赖(主谓)、有的管指代消解、有的管位置邻近——多视角拼出更丰富的表征。类比:一份商业报告需要财务、法务、市场多个视角同时审,单一视角必然遗漏。

  2. 子空间表达力:每个头在低维子空间(d_model/h 维)独立计算注意力,相当于把高维语义空间分解为多个"专业频道"分别匹配再融合——比单个全维注意力更容易学到多样化的对齐模式。

  3. 计算经济性:多头切分后的总计算量约等于一个全维度的单头(h 个 d/h 维 ≈ 1 个 d 维)——几乎不多花钱,白得多样性,这是"免费午餐"式的设计。

  4. 稳定性与冗余:多头提供表达冗余,个别头学坏不致命(可剪枝)——事实上模型压缩常做"头剪枝",说明确实存在冗余头,但这冗余也是训练鲁棒性的来源。

业务引申(体现架构素养):多头思想的本质是"分而治之的并行专家"——这个模式在企业架构里处处对应:微服务按业务能力拆分、Agent 的多专家路由(MoE 模型干脆把它做进了结构:专家网络按 token 动态分工)。而 GQA/MQA 对 KV 头的合并压缩说明:多样性主要在 Q 侧,K/V 可以共享——这种"该省省该花花"的精细化设计是推理成本优化的关键杠杆。

🏗 系统架构师 ​

多头注意力 = 并行的多组独立 QKV 子空间,各自做注意力后拼接融合——我给三个层面的"为什么":

  • 多子空间的关系建模(表达力):语言的关系模式是多维度的——句法依赖、指代消解、位置邻近、语义关联。单头注意力只有一个投影空间,一个 softmax 分布只能表达一种"关注模式";多头让每个头在独立低维子空间里专注一种关系模式(可视化研究证实:不同头稳定地学到不同依赖类型),拼接后线性融合——集成多个"视角"优于单一"视角";
  • 参数与计算的高效性(工程账):d_model 切成 h 份(每头 d/h 维),多头总计算量与单头全维基本持平——几乎免费的多样性。这是关键设计:不是"多算几遍",而是"同一预算换个切法";
  • 鲁棒性与冗余:单个头失效或被对抗扰动,其他头提供冗余表达;训练后剪枝掉一半头性能下降有限(冗余是容错)——工程上还衍生了 GQA/MQA(推理时共享 K/V 头省 KV Cache)这类成本优化。

类比: Committee 决策——一个专家(单头)给出一种注意力分配;委员会(多头)各看各的重点,最后综合(output projection)。

工程延伸:头数是超参(8/32/64 常见),头多每头维度小表达受限;现代推理优化的主线(MQA/GQA/MLA)都是在"多头表达力 × KV Cache 内存"之间做交易——侧面证明多头机制的价值大到值得专门优化。

💻 全栈开发专家 ​

多头注意力 = 在多个不同的表示子空间里并行做注意力,再融合。为什么采用,四层理由:

  1. 多视角模式捕获:单个注意力头只能学一种对齐模式(比如「主语-谓语」关系)。语言理解需要同时跟踪多种关系:句法依赖、共指消解、位置邻近、语义关联。多头让每个头在 d/h 维的低维子空间里专注一种模式——可视化研究确实发现不同头有明确分工(有的头几乎只看前一个 token,有的头盯句法父亲)。

  2. 总计算量不变,容量却增加:h 个头各用 d/h 维,拼接后过 W_O 融合——FLOPs 与单头全维相同,但 W_Q/W_K/W_V 分成了 h 组不同的投影,等价于 h 个不同的「视角函数」,模型表达容量实质性提升。这是免费午餐。

  3. 注意力分布的多样性:softmax 天然倾向「聚焦少数位置」,单头是一种聚焦模式;多头允许同时存在「聚焦头」和「分散头」(关注全局上下文),对歧义消解(一词多义)和长句理解尤其重要。

  4. 工程可并行:h 个头的矩阵乘天然可批量(拼成大矩阵一次算),GPU 友好。

反例佐证(面试加分):如果把头数减到 1(全维),模型能力显著下降——不是「注意力不够强」,而是「视角单一」;反过来头数无限加也不行(每头维度太小,d_head<16 表达塌缩)。

现代演进:MQA/GQA 共享 K/V 头压缩 KV cache(推理优化),但 Q 头保持独立——侧面印证多视角主要体现在「查询侧」。