Self-Attention 与 Cross-Attention:自己看自己 vs 跨序列查询
本文基于模型知识整理(生成时未联网核对),结构差异建议对照原论文 §3.1 复核。
一句话定义
Self-Attention 的 Q、K、V 全部来自同一序列(自己看自己——建序列内部关系);Cross-Attention 的 Q 来自一个序列(如解码器),K/V 来自另一个序列(如编码器输出)——跨序列查询(翻译时每个目标词去源句"取料")。两者的注意力公式相同,唯一的区别是 K/V 的来源。
为什么重要
这一区分决定架构形态:Encoder-only(BERT)只有 Self;Decoder-only(GPT)只有带因果掩码的 Self;Encoder-Decoder(T5/翻译)两者都有——Cross-Attention 是"读入 A 生成 B"类任务的枢纽(kp-010 架构分化的核心分叉点)。现代 LLM 时代 Decoder-only 大获全胜,但理解 Cross-Attention 仍是读多模态模型(如把图像特征作 K/V)的必备知识。
前置知识
kp-002(注意力公式)。
核心概念
- Self-Attention:Q=K=V 的来源都是 X 自己(各自经 W_Q/W_K/W_V 投影)。作用:序列内部的上下文混合——每个 token 吸收全序列相关信息。Decoder 版本加因果掩码(只允许看过去,kp-002)。
- Cross-Attention:Q 来自解码器当前序列 Y,K/V 来自编码器输出 X 的表示:
$$\text{CrossAttn}(Q=YW_Q,\ K=XW_K,\ V=XW_V)$$ 作用:生成端按需查询源端——翻译到"狗"时,去源句把"dog"的表示取过来。
- 三件套对照(Encoder-Decoder 架构的一层):
1. Masked Self-Attention(解码器内部,因果); 2. Cross-Attention(解码器→编码器,无掩码可看全源句); 3. FFN。
- 信息流向图:Self 是"横向"(同层序列内混合),Cross 是"纵向"(跨模块/序列注入)——多模态模型把图像特征作为 K/V 注入文本生成,正是 Cross-Attention 的现代用法。
原理与机制
为什么 Cross-Attention 的 Q 与 K/V 分家:查询来自"生成侧"(我要写什么,需要什么信息),键值来自"理解侧"(源内容有什么可提供)——两侧各有各的表示空间,W_Q 与 W_K/W_V 独立学习"问什么"与"答什么"的对齐。翻译对齐(软对齐矩阵)在此自然涌现。
为什么 Decoder-only 不需要 Cross-Attention:GPT 把"源与目标"拼进同一条序列(prompt+生成),Self-Attention 天然覆盖"查询上下文"——序列拼接替代了跨序列查询。这是架构竞争的关键简化(kp-010/019 的 Decoder-only 胜利)。
复杂度对照:Self 是 n²(序列自乘);Cross 是 m×n(两序列长度积)——翻译时源句固定则 Cross 成本线性于目标长度。
图示
Self: Q,K,V ← 同一序列X "自己看自己"
(Decoder版 + 因果掩码)
Cross: Q ← 解码器Y ; K,V ← 编码器输出X
"生成端按需查询源端"
Encoder-Decoder一层: MaskedSelf → Cross → FFN
现代注脚: 多模态把图像特征当K/V注入文本Q
直观类比
Self-Attention 是"读书会":与会者互相讨论、吸收彼此观点(同一群人内部混合)。Cross-Attention 是"答辩":学生(Q)带着问题向评审团(K/V=论文内容)取证——提问方与信息源是两拨人。
实例或案例
- 翻译:Cross-Attention 权重图与人工词对齐高度一致(原论文的可视化发现)。
- Whisper 语音识别:音频编码器 + 文本解码器,Cross-Attention 对齐声学与文字。
- 多模态 LLM(Flamingo 类):图像 token 作为 K/V 注入冻结的语言模型——Cross-Attention 的当代形态。
常见误区
- 误区一:"Cross-attention 公式不同"。公式完全一致(softmax(QKᵀ/√d)V);区别仅在 Q 与 K/V 的来源不同。
- 误区二:"Decoder-only 模型没有用到源信息"。它把源(prompt)拼进序列,Self-Attention 天然覆盖——不是丢功能而是换实现(kp-010)。
- 误区三:"Cross 的 K/V 也要加因果掩码"。掩码属解码器自身的 Masked Self-Attention;Cross 看全源句无掩码(源是已知的完整输入)。
与其他知识点的关系
自测题
- Cross-Attention 中 Q、K、V 各来自哪里?
答:Q 来自解码器当前序列;K、V 来自编码器输出(源序列表示)。
- 为什么 Decoder-only 范式里 Cross-Attention 消失了?
答:prompt 与生成拼成同一序列,Self-Attention 内在覆盖"查上下文"——架构简化胜出(kp-010/019)。
- 多模态模型如何用 Cross-Attention 注入图像信息?
答:图像特征作 K/V、文本 token 作 Q——文本生成按需查询视觉内容(Flamingo 类)。
延伸阅读
- Vaswani 等 2017 §3.1(三种注意力层的定义)。
- Alayrac 等, "Flamingo"(2022,多模态 Cross-Attention 注入)。
- 《The Annotated Transformer》(Harvard NLP,带代码逐行对照)。