模型架构 进阶

MHA

别名:Multi-Head Attention / 多头注意力

把注意力拆成多个头并行计算,让模型同时关注不同的位置和语义关系。

更新于 2026/11/08
Attention架构Transformer

一句话定义

多头注意力把同一组输入投影成多套 Query、Key、Value,分别做注意力,再把结果拼接起来。每个头可以学习不同的关注模式。

为什么需要多个头

单个注意力头只能输出一种加权方式。语言里同时存在局部搭配、指代关系、句法依赖和主题关联,一个头很难兼顾。多个头提供多个子空间,让模型并行捕捉不同类型的联系。每个头的投影矩阵不同,学到的是不同的关系模式,而不是同一套计算的简单重复。

关键机制

  1. 输入分别经过多组线性投影,得到每个头的 Q、K、V。
  2. 每个头独立计算缩放点积注意力。
  3. 所有头的结果拼接,再经过输出投影混合。
  4. 总维度通常与单头模型保持一致,因此计算量不会简单翻倍。

每个头的维度通常是 d/h;h 个头拼接后仍是 d,所以多头是在切分表示空间,而不是把计算量乘以 h。

MHA:多个头并行计算不同子空间

变体

  • MQA:所有头共享同一组 K/V,显著减小 KV Cache。
  • GQA:若干查询头共享一组 K/V,在效果和显存之间折中,被很多大模型采用。
  • 这些变体优化的核心都是 KV Cache 的显存占用,而不是注意力公式本身。

用在哪里

  • 几乎所有 Transformer 注意力层的默认结构;理解 MQA/GQA 前先理解 MHA。
  • 推理显存紧张时用 MQA/GQA 减少 KV Cache;训练/效果优先时 MHA 更直接。
  • 需要同时捕捉局部搭配、指代和主题关系时,多头比单头更合适。

常见误区

  • 头数越多越好:头数受总维度和计算预算约束,过多会让每个头维度过小。
  • 每个头都有清晰的人类可解释分工:实际分工往往是重叠和动态的。
  • 多头注意力就是多个独立的 Transformer 层:它们共享输入,只做并行的注意力子空间。

相关概念

  • Attention:单头注意力的基础。
  • KV Cache:多头结构直接影响的推理缓存。
  • FFN:注意力之后承接的非线性层。