引入多个注意力头提出了一个重要问题:这些并行的注意力机制是否真的学习了不同的内容?如果每个头只是学习相同的模式,那么增加的计算复杂度相比单个、更大的注意力头将提供很少的优势。幸运的是,经验证据和分析表明,不同的头通常会专门化,学习关注输入序列中不同类型的关系。
为了使多头自注意力机制中的每个注意力头能够学习并专注于不同的关系类型,其实现方式是为每个头对查询(Q Q Q )、键(K K K )和值(V V V )应用独立的线性投影。头 i i i 的投影具体如下:
Q i = Q W i Q Q_i = Q W^Q_i Q i = Q W i Q
K i = K W i K K_i = K W^K_i K i = K W i K
V i = V W i V V_i = V W^V_i V i = V W i V
其中 W i Q ∈ R d m o d e l × d k W^Q_i \in \mathbb{R}^{d_{model} \times d_k} W i Q ∈ R d m o d e l × d k 、W i K ∈ R d m o d e l × d k W^K_i \in \mathbb{R}^{d_{model} \times d_k} W i K ∈ R d m o d e l × d k 和 W i V ∈ R d m o d e l × d v W^V_i \in \mathbb{R}^{d_{model} \times d_v} W i V ∈ R d m o d e l × d v 是头 i i i 的可学习权重矩阵。由于这些矩阵是独立初始化并通过反向传播更新的,因此每个头都有能力将输入嵌入投影到一个子空间,使某种特定关系在其中更明显或对模型目标更有用。
观察头部专门化
准确理解每个头学习到什么是一个活跃的研究区域,通常被称为“可解释性”。一种常用技术涉及可视化不同头针对给定输入序列生成的注意力权重。通过检查特定头内哪些标记强烈关注哪些其他标记,我们可以推断其优先处理的模式。
例如,考虑句子:“The quick brown fox jumps over the lazy dog。”我们可能会观察到如下模式:
头1 (局部关联): 注意力权重在相邻词之间可能最高,作用类似于二元语法模型。“quick”可能强烈关注“The”和“brown”。
头2 (句法关联): 注意力可能集中在句法相关的词语上,即使它们相距较远。“jumps”可能强烈关注其主语“fox”。
头3 (特定标记): 如果标点符号或特殊标记对任务携带重要信息,一个头可能会持续强烈关注它们。
头4 (内容相似性): 注意力可以关联具有相关含义或作用的词,例如“fox”和“dog”。
说明不同的头在句子“The quick brown fox jumps over the lazy dog”中可能关注不同关系。头1(蓝色,虚线)局部关注,头2(粉色,实线)连接动词和主语,头4(绿色,虚点)连接相关名词。
可视化通常使用热力图,其中行和列代表标记位置,颜色强度表示注意力分数 s o f t m a x ( Q i K i T d k ) softmax(\frac{Q_i K_i^T}{\sqrt{d_k}}) so f t ma x ( d k Q i K i T ) 。不同的头产生不同的热力图,突显其不同的关注点。
更严谨的分析涉及“探测”。这意味着在单个头的输出表示(Z i = A t t e n t i o n ( Q i , K i , V i ) Z_i = Attention(Q_i, K_i, V_i) Z i = A tt e n t i o n ( Q i , K i , V i ) )上训练简单的线性分类器或其他小型模型,以查看它们能多好地预测特定语言属性(例如,词性标注、句法依存)。成功预测某一属性表明该头编码了与之相关的信息。
学习模式的例子
分析训练好的Transformer的研究已发现头部之间有几种常见的专门化类型:
位置/局部关注: 有些头主要关注当前标记周围小窗口内的标记,有效捕捉局部上下文。这可能类似于卷积网络或N元语法模型的行为。
句法关联: 某些头善于追踪语法关系。它们可能学习连接动词与主语或宾语、形容词与修饰的名词,或介词与宾语,有时甚至跨越长距离。
指代/相关实体: 头可以关联文本中同一实体的提及,或连接语义相关的词语。
关注分隔符/特殊标记: 在使用特殊标记(如[CLS]、[SEP])的模型中,一些头通常会强烈关注这些标记,可能将其用作序列级别信息的聚合点。
稀有词处理: 一些头可能专门关注从稀有词到更常见、上下文信息丰富的词语的连接,帮助模型理解不常用词。
恒等/复制(较不常见): 偶尔,一个头可能学习强烈关注当前标记自身的位置,有效复制其表示。
头部多样性的益处
不同头专门化的能力提供了几个优势:
捕捉多样信息: 序列包含多层信息(句法、语义、位置)。多头注意力允许模型同时捕捉这些不同方面,而无需强制单个机制平均可能冲突的信号。
更丰富的表示: 通过拼接这些专门化头的输出(Z = C o n c a t ( Z 1 , . . . , Z h ) W O Z = Concat(Z_1, ..., Z_h)W^O Z = C o n c a t ( Z 1 , ... , Z h ) W O ),模型为每个标记构建更丰富、多方面的表示,融入了来自各种关系视角的见解。
改进的模型能力: 并行子空间允许模型表达比具有相同总维度的单个注意力机制更复杂的函数和依赖关系。
考量和注意事项
虽然头部专门化的思想很有吸引力并有证据支持,但有些方面需要考量:
可解释性具有挑战性: 为每个头分配单一、明确的功能通常很困难。头可能扮演多种角色,或者其行为可能复杂且依赖于上下文。可视化提供线索,但不是确切答案。
冗余: 并非所有头都必然学习独特的模式。可能存在一定程度的冗余,或者某些头对最终输出的贡献较小。修剪不那么重要的头是模型压缩的一个研究区域。
层级依赖性: 头学习到的模式可能因其在Transformer堆栈中的深度而异。较低层的头可能更关注局部句法,而较高层的头可能捕捉更复杂的语义或长距离依赖关系。
总而言之,多头结构不仅是关于并行计算;它是一种鼓励功能专门化的设计。通过允许不同的头关注不同表示子空间中的信息,模型可以整合多样的关系模式,从而形成更有效的序列表示。最终的线性投影(W O W^O W O )学习如何最好地结合这些专门化的视角,供前馈网络和后续层进行下游处理。