交叉注意力是机器学习和深度学习中的一种机制,它计算两个不同序列(通常是源序列和目标序列)元素之间的注意力权重。它是Transformer架构的核心组成部分,使解码器在生成每个词元时能够聚焦于编码器输出的相关部分。与在同一序列内关联位置的自注意力不同,交叉注意力跨序列关联位置,使其在机器翻译、文本摘要和图像描述等任务中至关重要。
这一概念源于早期为循环神经网络(RNN)开发的注意力机制,这些网络难以保留序列远距离部分的信息。注意力机制受人类视觉和认知聚焦的启发,使模型能够直接权衡每个输入元素的重要性。突破性进展出现在2017年Transformer的引入,它用可并行化的注意力取代了循环结构,交叉注意力成为编码器-解码器模型(如BERT、T5和生成式预训练Transformer(GPT))的关键组成部分。
历史
交叉注意力的根源可追溯到20世纪90年代初,当时快速权重编程器或快速权重控制器提出了一种机制,其中“慢”神经网络通过外积输出另一个网络的“快”权重。这一思想后来被命名为线性化自注意力,奠定了概念基础。2014年,Bahdanau式注意力(加性注意力)被引入基于RNN的机器翻译,使解码器能够与编码器隐藏状态对齐。2015年,Luong式注意力(乘性注意力)紧随其后,提供了更高效的评分函数。
重大突破来自自注意力的出现,其中序列中的每个元素都关注所有其他元素,从而能够捕获全局依赖关系。这一思想是Transformer架构的核心,该架构在2017年由Google和多伦多大学的研究人员发表的论文《Attention Is All You Need》中引入。Transformer用注意力机制取代了循环结构,交叉注意力成为编码器-解码器模型的标准组成部分,为BERT、T5和GPT等模型奠定了基础。
机制
在典型的编码器-解码器Transformer中,编码器处理源序列(例如,英语句子)并生成一组隐藏表示。解码器逐个词元生成目标序列(例如,法语)。在每个解码步骤中,解码器使用交叉注意力计算编码器输出的加权和,其中权重反映每个源词元与当前目标词元的相关性。
交叉注意力操作涉及三个矩阵:查询(Q)来自解码器的先前输出,键(K)和值(V)来自编码器的输出。注意力权重通过Q和K之间的缩放点积的softmax计算,然后用于加权V。这使解码器能够选择性地聚焦于相关的源信息,类似于人类翻译者可能会回看源句子中的特定单词。
解释注意力权重
交叉注意力权重可以可视化为对齐矩阵,显示每个目标词元最受哪些源词元影响。在翻译中,对齐是将源句子中的单词与翻译后的句子匹配的过程。不考虑词序而进行逐字翻译的网络会在矩阵对角线上显示最高分数。对角线以外的优势表示更细致的对齐。
例如,将“I love you”翻译成法语:在第一次解码传递中,94%的注意力权重在“I”上,生成“je”;在第二次传递中,88%在“you”上,生成“t'”;在第三次传递中,95%在“love”上,生成“aime”。这产生了一个对齐矩阵,其中“love”与“aime”对齐。有时对齐是多对多的,例如“look it up”对应“cherchez-le”。软注意力权重将权重分布在多个词元上,比硬注意力(将一个权重设为1,其余设为0)效果更好,因为隐藏向量的加权和通常比选择单个最佳向量提供更丰富的上下文。
变体
交叉注意力有几种变体,区别在于注意力分数的计算方式:
- 加性注意力(Bahdanau式):使用前馈网络计算对齐分数。
- 乘性注意力(Luong式):使用查询和键向量之间的点积。
- 位置注意力:结合位置编码以考虑词元顺序。
- 分解位置注意力:通过跨维度分解注意力来降低复杂度。
对于卷积神经网络,注意力机制可以作用于空间维度(空间注意力)、通道维度(通道注意力)或其组合。这些变体重新组合编码器侧输入,以将效果重新分配到每个目标输出,通常使用点积的相关性风格矩阵进行重新加权。
优化
Flash注意力
注意力矩阵的大小随输入词元数量呈二次方增长,对于长序列需要大量GPU内存。Flash注意力于2022年引入,在不牺牲准确性的情况下减少内存需求并提高效率。它将注意力计算划分为适合GPU更快片上内存的较小块,减少存储大型中间矩阵的需求,从而降低内存使用并提高计算效率。
FlexAttention
FlexAttention是Meta开发的一种注意力内核,允许用户在softmax之前修改注意力分数,并动态选择最优注意力算法。这种灵活性支持自定义注意力模式,如稀疏性或掩码,而不牺牲性能。
应用
交叉注意力广泛应用于自然语言处理、计算机视觉和语音识别。在NLP中,它改善了问答和摘要等任务中的上下文理解。在视觉中,视觉注意力帮助模型聚焦于相关图像区域,增强目标检测和图像描述。在语音识别中,交叉注意力将声学特征与文本输出对齐。
作为视觉Transformer解释的注意力图
从原始视觉Transformer(ViT)论文开始,将注意力分数可视化为热图(显著性图或注意力图)已成为检查ViT模型决策过程的常规方法。可以计算任何层中任何注意力头的注意力图,较深层显示更具语义意义的可视化。注意力展开是一种递归算法,通过计算连续注意力图的点积来组合所有层的注意力分数。
由于视觉Transformer通常以自监督方式训练,注意力图通常不具有类别敏感性。当分类头附加到ViT骨干网络时,类别判别注意力图(CDAM)结合了注意力图和相对于类别词元的梯度。一些最初为卷积神经网络开发的类别敏感可解释性方法可以适应ViT,提供关于哪些图像区域影响预测的见解。