Cross-Attention:注意力机制详解《一》
✅ 1. 标准 Transformer 模型(Encoder-Decoder)
在原始的 Transformer 架构(如论文《Attention Is All You Need》中提出的)中,模型由两个主要部分组成:Encoder 和 Decoder。
Encoder 部分:
- 只使用了 Self-Attention
- 每个位置都可以关注输入序列的所有位置
- 公式形式:
Q = K = V = 输入
Decoder 部分:
- 使用了 两种注意力机制:
- Masked Self-Attention(仍然是 Self-Attention)
- 用于防止当前位置看到后面的内容(因果掩码)
Q = K = V = 解码器输入
- Cross-Attention
- 用于关注 Encoder 的输出
Q = 解码器中间表示
,K = V = 编码器输出
- 这使得解码器可以在生成每个词时“注意”到输入句子的相关部分
- Masked Self-Attention(仍然是 Self-Attention)
✅ 2. Decoder-only 模型(如 GPT 系列)
这类模型只保留了 Transformer 的 Decoder 部分。
- 使用的是 Masked Self-Attention
- 即只能关注当前及之前的位置(因果语言模型的特性)
- 没有 Cross-Attention(因为没有 Encoder)
所以,decoder-only 模型只有 self-attention,不涉及 cross-attention。
✅ 3. Encoder-only 模型(如 BERT)
这类模型只保留了 Transformer 的 Encoder 部分。
- 使用的是 Self-Attention
- 每个 token 可以关注整个输入序列中的所有 token
- 同样没有 Cross-Attention
🧠 总结对比表:
模型类型 | 是否包含 Self-Attention | 是否包含 Cross-Attention |
---|---|---|
标准 Transformer (Encoder-Decoder) | ✅ 是 | ✅ 是 |
Decoder-only(如 GPT) | ✅ 是 | ❌ 否 |
Encoder-only(如 BERT) | ✅ 是 | ❌ 否 |
🔍 补充说明:
- Cross-Attention 是连接 Encoder 和 Decoder 的关键机制,允许 Decoder 在生成输出时参考 Encoder 的信息。
- Self-Attention 是所有 Transformer 变体的基础,不管是 encoder 还是 decoder。