神经网络Transformer架构中的交叉注意力
字数 1428 2025-11-20 08:29:51
神经网络Transformer架构中的交叉注意力
交叉注意力是Transformer架构中的一种关键机制,它允许模型在处理一个序列时,动态地关注另一个不同序列的相关信息。与自注意力(仅关注同一序列内部的关系)不同,交叉注意力实现了序列间的信息融合。
-
基本概念与动机
- 核心问题:在序列到序列的任务中(如机器翻译、文本摘要),生成目标序列的每个元素时,需要参考源序列中的哪些部分?例如,将英文“I love you”翻译成中文时,生成“爱”这个词应重点关注源序列中的“love”。
- 解决方案:交叉注意力机制应运而生。它使得解码器(负责生成目标序列)在生成每一个新词时,能够有选择地从编码器(已处理完源序列)的输出中提取最相关的信息。
-
工作机制与计算过程
- 输入来源:
- 查询(Query, Q):来自目标序列。在Transformer的解码器中,这通常是解码器自注意力层的输出,代表了当前欲生成位置的信息需求。
- 键(Key, K)和值(Value, V):均来自源序列。具体来说,是编码器最终输出的序列表示,其中K用于计算相关性,V是待提取的实际信息。
- 计算步骤:
- 相似度计算:将目标序列的每个查询(Q)与源序列的所有键(K)进行点积,计算出一个分数。这个分数代表了目标序列当前位置与源序列每个位置的相关程度。
- 缩放与归一化:将上一步得到的分数除以键向量维度的平方根(√d_k),以防止点积结果过大。然后,通过Softmax函数进行归一化,得到一组权重(注意力权重),这些权重之和为1。
- 加权求和:将归一化后的注意力权重与源序列对应的值(V)相乘并求和,最终得到一个加权的上下文向量。这个向量就融合了源序列中对于当前目标位置最重要的信息。
- 输入来源:
-
在Transformer架构中的具体角色
- 交叉注意力层是Transformer解码器中的一个核心组件,位于解码器的自注意力层和前馈神经网络层之间。
- 工作流程:
- 编码器处理完整个源序列,输出其编码后的表示(作为K和V)。
- 解码器在生成目标序列的第t个词时,首先通过其自注意力层处理已生成的前t-1个词,得到当前解码位置的表示(作为Q)。
- 该表示(Q)与编码器的输出(K, V)一起输入到交叉注意力层。
- 交叉注意力层计算出注意力权重,并生成一个聚焦于源序列关键部分的上下文向量。
- 这个上下文向量随后被送入解码器的前馈网络,最终用于预测第t个词。
-
优势与应用场景
- 优势:
- 动态对齐:它能够自动学习源序列和目标序列之间的软对齐,无需硬性的规则。
- 上下文感知:生成每个目标词时,都能获取一个针对性的、融合了全局源序列信息的上下文。
- 应用场景:
- 机器翻译:经典的序列到序列任务,是交叉注意力的主要应用领域。
- 文本摘要:生成摘要时,关注原文中的关键句子或短语。
- 问答系统:根据问题(源序列)从文档(另一源序列)中找出答案时,可用交叉注意力聚焦相关文本片段。
- 多模态任务:如图像描述生成,将图像特征作为K和V,将生成的文本作为Q,实现文本对图像区域的关注。
- 优势:
-
与相关机制的对比
- 与自注意力的区别:自注意力的Q、K、V均来自同一个序列,用于捕捉序列内部的结构(如语法、指代)。交叉注意力的Q来自一个序列(目标),K、V来自另一个序列(源),用于建立序列间的桥梁。
- 与多头注意力的关系:交叉注意力同样可以采用多头机制。多头交叉注意力允许模型同时从源序列的不同表示子空间中关注信息,从而捕获更丰富的关系。