多头注意力相对单头的优势,本质上不是"参数更多",而是表达能力的结构性差异。单头注意力对整句话只产生一组注意力分布,所有位置共享同一套权重;而注意力权重经过 softmax 归一化后总和为一,这意味着它是一个零和分配——把权重给了某类关系,就必然挤压其他关系。当一句话里同时存在指代、修饰、并列等多种依赖时,单头只能在这些关系之间做折中,结果往往是每类关系都学得不充分。
多头的做法是把查询、键、值分别投影到多个低维子空间,每个头拥有独立的投影矩阵,各自计算一组注意力分布,最后把各头输出拼接再做一次线性变换。这样,不同的头可以在各自的子空间里专注不同模式:一个头捕捉句法结构,一个头对齐实体间的语义关系,另一个头处理上下文中的长距离依赖。源内容里"几个人同时盯着同一幕"的比喻,对应的正是这种并行机制——多个分布同时存在,互不挤占。
一个常见疑问是:把单头的维度加大,总参数量相当,是否等价?答案是否定的。维度再大,softmax 仍然只有一组,归一化约束没有被解除,模型依旧无法在同一层对多个目标同时给出高权重。多头相当于绕开了这个约束,用结构换取了关系类型的多样性。此外,多个头之间还存在一定的冗余效应:个别头学到的模式重叠或失效时,其余头仍能维持关键信息的传递,模型的鲁棒性随之提高。
需要注意的是,多头的收益存在边际递减。头数、层数、隐藏维度这些超参数应当与数据规模匹配,小任务上盲目堆高 heads 数量,只会让部分头退化为近似无意义的分布,还增加训练不稳定的风险。实践中更可靠的做法是先以较小配置跑通任务,再逐档调整头数并观察损失曲线。
判断头数是否合理,一个直接的办法是可视化各头的注意力图:如果多数头呈现出高度相似的模式,说明容量过剩;如果不同头稳定地关注不同位置与关系类型,则说明分工有效。注意力图是多头机制最直观的验证入口,值得在每次调参后检查一遍。
参与讨论
暂无评论,快来发表你的观点吧!