为什么Transformer用多头注意力而非单头:子空间多样性
要理解多头注意力的优势,首先需要拆解“注意力”的核心功能。它在处理序列数据(如一句话)时,能计算每个元素(如词)与其他所有元素的相关程度。这依赖于三个关键角色:查询、键、值。
-
理解查询、键与值
- 查询:代表当前正在被分析的词,它发出“需要信息”的请求。
- 键:代表句子中所有词(包括它自己)的“身份标签”或“索引”,用于和查询进行匹配。
- 值:代表每个词的实际信息内容。
- 核心计算:通过计算查询与所有键的点积相似度,得到一组“注意力分数”。这些分数经过缩放和归一化后,被用来加权求和所有词的值,从而为当前词生成一个融合了全局上下文的新表示。
一个单头注意力机制只执行一次上述过程,生成一个最终的上下文向量。这存在一个根本性瓶颈。
1. 剖析单头注意力的局限性
单头注意力模型可以理解为只使用一个“观察视角”来解读整个句子。
-
识别信息纠缠
- 一个词的不同语义关系(如句法依赖、指代关系、情感关联)被压缩进同一个向量空间进行表示。
- 这就像试图用一个通用滤镜同时完美呈现照片的锐度、色彩和氛围,实现起来非常困难。不同性质的信息会相互干扰,导致模型难以学到清晰、独立的特征。
-
定位能力瓶颈
- 模型被迫从单一投影角度提炼所有可能的重要关系。这极大地限制了其表达能力,尤其在处理复杂句子结构或需要并行关注多种模式时。
2. 引入多头机制:实现子空间多样性
为了解决上述问题,Transformer引入了多头注意力。其核心思想是:不追求用一个强大的头做所有事,而是创建多个独立的“注意力头”,让每个头专注于学习数据的不同方面。
-
拆分输入空间
- 首先,将输入的查询、键、值向量通过不同的线性投影矩阵,映射到多个更低维度的子空间。假设有
h个头,则每个头的向量维度变为原来的1/h。 - 例如,原始的
d_model维向量被分割到h个d_k维的子空间中,其中d_k = d_model / h。
- 首先,将输入的查询、键、值向量通过不同的线性投影矩阵,映射到多个更低维度的子空间。假设有
-
并行执行独立注意力
- 每个头独立地在各自的子空间内执行与单头完全相同的注意力计算。
- 每个头拥有自己独立的
W_i^Q,W_i^K,W_i^V权重矩阵,因此它们学习到的“相似度计算规则”和“信息提取模式”是不同的。 - 这个过程可以视为
h个不同的单头注意力在并行工作。
-
拼接与投影输出
- 所有头的输出结果(
h个独立的上下文向量)被拼接起来。 - 最后,通过一个额外的线性投影矩阵
W^O,融合所有头的信息,输出最终的上下文表示。
- 所有头的输出结果(
3. 理解子空间多样性的具体收益
多头机制带来的“子空间多样性”直接转化为模型更强的能力。
-
实现关系解耦与专精
- 头1 可能学习到关注名词和其修饰形容词的依赖关系。
- 头2 可能学习到捕捉长距离的指代关系(如代词“他”指代前文出现的“张三”)。
- 头3 可能学习到识别句子的主谓宾核心结构。
- 头4 可能学习到更微妙的情感或语气关联。
- 这种分工让模型能同时从多个维度解析句子,信息在不同的特征子空间中被独立处理,减少了干扰。
-
增强特征捕获的鲁棒性
- 即使某个头因数据特性而表现不佳,其他头仍能维持对其他重要关系的捕获。这类似于集成学习的思想,提升了模型的整体稳定性和泛化能力。
-
类比解释
- 将单头注意力比作一个“全能专家”,虽然全面,但可能对每个问题都只给出一个综合的、未必最优的答案。
- 将多头注意力比作一个“专家委员会”,每个专家(注意力头)在自己擅长的细分领域(子空间)内进行深度分析,最后综合所有专家的报告得出一个更全面、更精准的结论。
4. 对比单头与多头的最终效果
-
评估单头
- 能力:有限,被迫在单一视角下权衡所有信息。
- 表示:输出一个融合了所有可能关系的、相对“粗糙”的上下文向量。
- 风险:关键信息可能被其他无关信息稀释或掩盖。
-
评估多头
- 能力:强大,通过并行子空间实现了对数据多维度、多层次关系的精细捕捉。
- 表示:最终输出是多个专注视角信息的复合体,包含了更丰富、更解耦的上下文特征。
- 优势:显著提升了模型对复杂模式的理解能力,使其能够更准确地建模语句内部的深层结构,这是Transformer性能卓越的关键基石之一。

暂无评论,快来抢沙发吧!