自注意力与交叉注意力:区别与实战理解
📅 主题:Self-Attention vs Cross-Attention,在 Transformer 里各自做什么
一、先说结论
- 自注意力(Self-Attention):在同一序列内部建模关系,回答“这一段内容内部谁和谁相关”。
- 交叉注意力(Cross-Attention):在两个序列之间建模关系,回答“当前生成内容应该关注输入的哪一部分”。
一句话:
自注意力管“内部理解”,交叉注意力管“跨序列对齐”。
二、自注意力(Self-Attention)是什么
在自注意力中,Q、K、V 来自同一个序列。
例如句子 我 喜欢 机器 学习,每个 token 都会和这句话里的其他 token 计算相关性。
作用:
- 建立全局依赖(不受固定窗口限制)
- 让每个 token 拿到“上下文增强表示”
- 支撑语义理解、指代消解、关系建模
常见位置:
- Encoder 层:标准自注意力(可看全句)
- Decoder 层:掩码自注意力(只能看已生成部分)
三、交叉注意力(Cross-Attention)是什么
在交叉注意力中:
- Q 来自 当前序列(通常是 Decoder 隐状态)
- K、V 来自 另一序列(通常是 Encoder 输出)
这意味着:Decoder 在生成每个 token 时,会去“查阅”输入序列表示。
作用:
- 实现输入与输出的对齐(alignment)
- 避免生成时脱离输入内容
- 对翻译、摘要、问答这类 seq2seq 任务非常关键
四、结构对比(最重要)
| 对比项 | 自注意力 | 交叉注意力 |
|---|---|---|
| Q 来源 | 当前序列 | 当前序列(通常 Decoder) |
| K/V 来源 | 当前序列 | 另一序列(通常 Encoder 输出) |
| 目标 | 建模序列内部关系 | 建模输入-输出关系 |
| 典型用途 | 语义理解、上下文融合 | 条件生成、信息对齐 |
| 主要出现位置 | Encoder、Decoder | Decoder(Encoder-Decoder 架构) |
五、Decoder 里为何两者都需要
以标准 Encoder-Decoder Transformer 为例,Decoder 每层通常有两块注意力:
- Masked Self-Attention
- 让模型只看已生成 token,保持自回归一致性
- Cross-Attention
- 让当前生成步骤读取输入信息,防止“只会续写不会对齐”
如果只有第一块,模型更像“语言模型续写”;
有了第二块,模型才具备“根据输入生成输出”的能力。
六、直观例子:翻译任务
任务:把 I love machine learning 翻译成中文。
当 Decoder 生成“机器”这个词时:
- 自注意力:关注已生成的“我”“喜欢”等,保证中文句子自身连贯;
- 交叉注意力:回看输入中
machine、learning附近信息,决定该词和后续词如何对应。
最终效果是:既满足中文表达流畅,又和原文语义对齐。
七、在大模型架构里的体现
7.1 Decoder-only(GPT 类)
- 主体是(因果)自注意力
- 通常没有显式 Cross-Attention 模块
- 若接入外部上下文(RAG 片段),一般通过拼接到上下文窗口,让自注意力统一处理
7.2 Encoder-Decoder(T5/BART 类)
- Encoder 用自注意力理解输入
- Decoder 同时用掩码自注意力 + 交叉注意力生成输出
- 在翻译、摘要等 seq2seq 任务上更天然
八、工程视角:常见问题与优化
输出不对齐输入
- 可能是检索片段质量差、输入上下文噪声大,或对齐信号弱
- 优化:提高输入质量、减少噪声、明确“仅依据输入回答”的约束
长上下文成本高
- 注意力复杂度随长度增长快(尤其全局注意力)
- 优化:KV Cache、分块检索、滑窗策略、稀疏注意力等
关注错位
- 模型可能过度关注开头或结尾
- 优化:调整上下文排布,把关键证据放在问题附近,必要时加引用要求
九、与 RAG / Agent 的关系
RAG:检索到的文档片段本质是给模型提供外部上下文。
在 Decoder-only 模型里,这些片段通过自注意力被利用;在 Encoder-Decoder 体系里,也可通过类似“输入编码 → 输出对齐”的机制发挥作用。Agent:在多步任务中,模型每一步都在“基于当前上下文做选择”。
自注意力决定其如何整合历史和当前状态;若有显式输入-输出对齐链路,交叉注意力会直接影响行动决策质量。
十、小结
- 自注意力解决“同一序列内部如何彼此关注”。
- 交叉注意力解决“当前生成如何关注外部输入”。
- 在 Encoder-Decoder 中,二者是互补关系:一个保连贯,一个保对齐。
- 理解这两类注意力,有助于解释模型在翻译、摘要、RAG、Agent 场景中的行为差异。
- 做应用优化时,除了调 Prompt,更要调输入质量与上下文结构,让“该被关注的信息”更容易被注意到。
掌握这组概念后,Transformer 的核心注意力机制链路就完整了。