在 Cross-Attention(交叉注意力)中,Q、K、V 来自两个不同的序列,这是它与 Self-Attention 最本质的区别。
即:Q 来自一边,K 和 V 来自另一边。
为什么这样设计
注意力的本质是「用 Query 去匹配 Key,再取出对应的 Value」。在 Cross-Attention 中:
这样解码器就能在生成每一步时,动态地从源序列中提取相关信息。
1、Transformer 机器翻译(编码器-解码器)
编码器输出 → K, V
解码器当前状态 → Q
解码器生成每个词时,用 Q 去查询编码器对源句子的表示。
2、Transformer 解码器中的 Masked Self-Attn + Cross-Attn
解码器每一层包含两个注意力子层:
3、多模态(如 Stable Diffusion / Flamingo)
文本特征 → K, V
图像特征 → Q
用图像特征去查询文本条件,实现文本引导图像生成。
4、语音识别、VQA 等
Q 是「提问方」,K/V 是「被查询方」。Cross-Attention 就是让一个序列去查询另一个序列。
评论专区
评论加载中...登录后即可发表评论