← 返回题目列表

多头注意力中为什么会出现冗余 Head?如何分析与裁剪?

高频 困难 第 13 / 25 题 更新于 2026/09/17
Transformer多头注意力Head Pruning模型压缩

简化版

多头注意力给模型多个独立投影子空间,但训练不会保证每个 Head 学到不同功能,因此会出现注意力图相似、输出相关或裁掉后损失很小的冗余 Head。判断冗余不能只看注意力热图,要结合 Head 输出、梯度敏感度、消融后的任务指标和层间补偿。裁剪应逐步进行并微调,同时实测硬件延迟;参数减少不一定带来加速。

详细版

一个 Head 的输出为 softmax(QKᵀ/√d_h)V,多个 Head 拼接后经 W_O 混合。冗余可能来自过参数化、相同训练信号、W_O 抵消和不同 Head 学到可替代模式。常用重要性包括输出范数、梯度×激活、注意力熵、Head 间 CKA/余弦相似度和剪枝消融。

score_h ≈ E|activation_h × ∂L/∂activation_h|

真正决策以干预为准:屏蔽单 Head 或 Head 组合,比较验证损失与下游任务变化。单独看一个 Head 影响小,不代表很多 Head 可同时删,因为存在交互。结构化裁剪保持规则维度,微调恢复;若推理内核仍按原形状计算,理论 FLOPs 下降也不会转成真实延迟收益。

完整版教学

一、多头设计没有“强制分工”

多头注意力将隐藏维分成多个投影,每个 Head 有独立 Q/K/V 权重。它提供学习不同关系的容量,却没有损失项要求一个 Head 负责句法、另一个负责指代。

训练只优化最终任务,多个 Head 学到相似或可替代特征也能达到低损失。过参数化还可能让模型拥有容错余量。

记忆钩子:多头提供“可以分工”的槽位,不保证训练后“一头一职”。

二、冗余有多种定义

注意力权重相似只是路由相似,V 投影不同仍可能产生不同输出;注意力图不同,经过 W_O 后也可能贡献相近。应明确测的是权重冗余、表示冗余还是功能冗余。

冗余类型观测局限
注意力图相似A 矩阵相关忽略 V 与 W_O
输出相似Head 输出 CKA/余弦相似不等于可删除
参数相似Q/K/V 权重距离重参数化会误导
功能冗余裁剪后指标不降成本高但最直接

面试回答应把描述性分析与因果消融区分开。

三、注意力熵能看什么

对某 query,Head 的注意力熵为:

H = -Σ_i p_i log p_i

低熵表示集中关注少数位置,高熵表示分散。两者都不自动等于好或坏:复制头可能低熵,聚合上下文的头可能高熵。

熵适合描述模式,不足以作为唯一剪枝分数。一个高熵 Head 仍可能提供关键全局平均信息。

四、梯度敏感度估计删除影响

把 Head 输出乘门控 g_h,用 |g_h × ∂L/∂g_h| 近似关闭该 Head 对损失的一阶影响。跨验证样本平均,得到任务相关重要性。

一阶近似忽略 Head 间交互和后续微调恢复。梯度还依赖数据分布:在翻译集不重要的 Head,可能在代码任务关键。

应在目标任务、语言和长度切片上计算,而非用一小批通用文本下结论。

五、消融是更可信的功能测试

推理时将某个 Head 输出置零,观察困惑度、准确率和任务指标。若关闭后变化小,它在当前分布上可替代;再做组合消融检查多个“低重要”Head 同时关闭。

假设 32 个 Head 中单删任意一个损失都低于 0.1%,不代表可删 31 个。它们可能互为备份,组合删除会突然跨过容量阈值。

可用贪心迭代:每轮删少量、重新评估、短暂微调,再决定下一轮。

六、结构化裁剪如何落地

删除完整 Head 是结构化裁剪,可缩小 Q/K/V 投影和 W_O 对应块。保持每层 Head 数规则化,通常比任意稀疏 mask 更容易获得内核支持。

原:16 heads × 64 dim = 1024
删 4 heads 后:12 × 64 = 768 attention output

残差隐藏维仍可能要求 1024,需重构 W_O 从 768 投影回 1024。模型配置、权重加载和张量并行切分都要同步更新。

七、参数和 FLOPs 下降不等于更快

Attention 之外还有 FFN、访存和 kernel launch。Head 数变成硬件不友好的 13,可能导致矩阵形状低效;小 batch 下启动开销甚至占主导。

指标必须实测原因
模型大小结构是否真正重写
FLOPs理论计算变化
延迟/吞吐内核与硬件适配
显存激活和 KV Cache 变化

剪枝价值由端到端指标决定,不由权重中零的数量决定。

八、微调与回归验证

剪枝改变中间表示,通常需在代表性数据上微调恢复。微调可能让剩余 Head 接管功能,也可能造成原能力回退。

比较剪前、立即剪后、微调后三个点,分别看语言建模损失、下游任务、长上下文和安全行为。若只报告微调后平均分,会遗漏某语言或长度切片损失。

生产还需验证导出、量化和推理引擎兼容,避免获得一个理论更小却无法部署的模型。

九、常见误区与追问

  • 误区:注意力图相似就能直接删一个 Head。 V 投影与输出混合可能不同。
  • 误区:注意力熵高说明 Head 无用。 分散注意也可能执行全局聚合。
  • 误区:单 Head 消融无影响就可批量删除。 Head 间替代与组合效应会放大损失。
  • 误区:Head 数减少就一定同比加速。 FFN、访存和硬件形状会限制收益。
  • 误区:一个任务上的重要性可代表全部任务。 Head 功能随语言、长度与任务变化。
  • 追问:最可信的冗余证据是什么? 目标分布上的组合消融、微调恢复与端到端指标。
  • 追问:为什么结构化剪枝更实用? 它能改变规则矩阵形状,更容易被现有内核加速。
  • 追问:GQA 是否等于剪 Head? 不是;GQA 共享 K/V Head,Query Head 仍可保留,目标主要是 KV Cache。

十、加强记忆

Attention Head 冗余记住“图像相似只是线索,功能消融才是证据”:多头没有强制分工,权重、输出和功能冗余是不同概念;用梯度与表示指标筛候选,再做单头和组合消融,逐步结构化裁剪并微调。最终同时验证任务切片、模型形状、KV/显存和真实硬件延迟,避免把理论少算当成部署加速。