核心要点

  • 注意力(self):Q、K、V 都来自同一序列,建模序列内部各位置之间的依赖关系。

  • 交叉注意力(cross):Q 来自一个序列,K、V 来自另一个序列,用于编码器-解码器信息交互。

  • 因果注意力(causal):在自注意力基础上加掩码,屏蔽未来位置,保证自回归生成只看历史。

  • 三者底层都是 QK 点积缩放后经 softmax 加权 V,区别在 QKV 来源与是否加 mask。

标准回答

统一机制

三种注意力都遵循同一公式:用 Query 与 Key 做缩放点积得到相关性分数,经 softmax 归一化为权重,再对 Value 加权求和。区别只在 Q/K/V 的来源和掩码方式。

自注意力(Self-Attention)

Q、K、V 由同一序列线性变换得到,每个位置都能关注序列中所有位置,用来建模句子内部的长距离依赖。是 Transformer 编码器的核心。

交叉注意力(Cross-Attention)

Q 来自一个序列(如解码器当前状态),K、V 来自另一个序列(如编码器输出)。它让解码器在生成时「查询」源序列的信息,是机器翻译等编码器-解码器架构、以及多模态对齐的关键。

因果注意力(Causal / Masked Self-Attention)

在自注意力上加一个上三角掩码,把每个位置对「未来位置」的注意力分数置为 -∞,softmax 后权重为 0。这样位置 t 只能看到 1..t,保证自回归生成时不偷看未来,是 GPT 类解码器的标配。

常见误区

⚠️ 常见踩坑

把因果注意力当成独立机制——它就是加了未来位置掩码的自注意力;也别混淆交叉注意力的 Q/K/V 来源,Q 来自目标序列、K/V 来自源序列。

追问

追问 1为什么自回归生成必须用因果掩码?

训练时整句并行输入,若不加掩码,预测第 t 个 token 时模型会看到 t 之后的真实词,造成信息泄漏,学到的能力在推理时(逐词生成、无未来信息)无法复现。因果掩码强制每个位置只依赖历史,使训练与自回归推理一致。

追问 2交叉注意力在多模态模型里怎么用?

常用于让一种模态查询另一种模态,例如让文本作为 Query 去注意图像编码器输出的视觉特征(K、V),实现图文对齐;图像生成中也可让视觉 token 交叉注意文本提示。本质是用一段序列的表示去检索、融合另一段序列的信息。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。