欢迎光临
我们一直在努力

深度学习篇---Transformer交叉注意力机制

Transformer交叉注意力机制详解

1. 什么是交叉注意力?

交叉注意力(Cross-Attention)是连接编码器(Encoder)和解码器(Decoder)的"桥梁",让解码器在生成每个词时,能够"关注"到输入序列中的相关部分。

生活类比:就像同声传译员,在说中文的同时,要时刻关注 speaker 的英文原话,确保翻译准确。交叉注意力就是让模型在生成每个词时,都能"回头看"原始输入。

2. 交叉注意力的核心思想

2.1 基本概念
  • 查询(Query, Q):来自解码器当前生成位置

  • 键(Key, K):来自编码器输出(输入序列的表示)

  • 值(Value, V):来自编码器输出(输入序列的内容)

通俗理解:

  • Q是"我现在想说什么"

  • K是"输入中有哪些关键信息"

  • V是"这些关键信息的具体内容"

2.2 工作原理

解码器位置 → 生成查询 → 在编码器输出中检索 → 获取相关信息 → 生成下一个词

3. 交叉注意力的详细计算过程

3.1 数学公式

Attention(Q, K, V) = softmax(QK^T/√d_k) × V

其中:

  • Q ∈ ℝ^(目标长度 × d_k) # 解码器查询

  • K ∈ ℝ^(源长度 × d_k) # 编码器键

  • V ∈ ℝ^(源长度 × d_v) # 编码器值

3.2 分步理解

# 伪代码:交叉注意力计算过程
def cross_attention(decoder_query, encoder_keys, encoder_values):
# 1. 计算相似度:每个解码位置与所有编码位置的匹配程度
similarity = decoder_query @ encoder_keys.T # [目标长度, 源长度]

# 2. 缩放并归一化为注意力权重
attention_weights = softmax(similarity / sqrt(d_k)) # [目标长度, 源长度]

# 3. 加权求和:根据权重获取编码器信息
context = attention_weights @ encoder_values # [目标长度, d_v]

return context, attention_weights

4. 实际工作示例

以英译中"I love China"为例:

第1步:生成"我"

解码器输入:<sos>
查询:<sos>的表示

相似度计算:
– 与"I"的相似度:0.8 ← 重点关注
– 与"love"的相似度:0.1
– 与"China"的相似度:0.1

结果:主要从"I"获取信息 → 生成"我"

第2步:生成"爱"

解码器输入:<sos> 我
查询:"我"位置的表示

相似度计算:
– 与"I"的相似度:0.2
– 与"love"的相似度:0.7 ← 重点关注
– 与"China"的相似度:0.1

结果:主要从"love"获取信息 → 生成"爱"

第3步:生成"中国"

解码器输入:<sos> 我爱
查询:"爱"位置的表示

相似度计算:
– 与"I"的相似度:0.1
– 与"love"的相似度:0.2
– 与"China"的相似度:0.7 ← 重点关注

结果:主要从"China"获取信息 → 生成"中国"

5. Mermaid总结框图

6. 交叉注意力的关键特性

特性说明重要性
不对称性 Q和K/V来源不同 连接编码器和解码器
动态聚焦 每个解码步关注不同源位置 灵活对齐
可解释性 权重可展示对齐关系 理解模型行为
无位置限制 可以关注任意距离的源词 长距离依赖

7. 与其他注意力机制对比

8. 实际应用中的交叉注意力

8.1 机器翻译中的对齐可视化

源语言: I love China
目标语言: 我 爱 中国

注意力权重热力图:
I love China
我 ■■ □ □
爱 □ ■■ □
中国 □ □ ■■

8.2 多模态应用
  • 图文生成:文本解码器关注图像区域

  • 语音识别:文本解码器关注音频特征

  • 视频描述:语言解码器关注视频帧

9. 交叉注意力的变体

变体特点优势
多头交叉注意力 多个子空间并行 捕获不同类型的关系
稀疏交叉注意力 只关注部分源位置 减少计算量
分层交叉注意力 多尺度关注 处理长序列

10. 通俗理解总结

把交叉注意力想象成一个"智能对焦系统":

  • 解码器 = 正在写作文的学生

  • 编码器 = 参考资料书

  • 查询(Q) = 学生当前想写的内容("接下来要写什么?")

  • 键(K) = 参考书的目录("哪些章节相关?")

  • 值(V) = 参考书的具体内容("具体信息是什么?")

  • 注意力权重 = 学生看各章节的时长分配

整个过程:学生每写一句话,都会快速浏览参考书,找到最相关的部分,提取信息,然后写出下一句。写完一句,再看下一句需要什么信息,循环直到完成整篇作文。

这种机制让Transformer能够灵活地在输入和输出之间建立联系,是实现序列到序列任务的核心技术。

赞(0)
未经允许不得转载:171主机测评 » 深度学习篇---Transformer交叉注意力机制
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址