本文将介绍以下内容:
- 1. Transformer 架构中的三种 Attention详解
- 2. Transformer 架构中的三种 Mask详解
- 3. 总结
Transformer 之所以强大,很大程度上来自于它的 多头注意力机制 (Multi-Head Attention, MHA)。现在理解清楚在一个完整的 Encoder–Decoder 结构里,我们要处理三种不同的 Attention,对应着三种 Mask。
一、Transformer 架构中的三种 Attention详解
1. Encoder Self-Attention
- 输入:源序列 (src)
- Q=K=V=src
- 作用:让源序列中的每个 token 能够和序列里其他 token 建立联系,捕捉上下文。
- 需要的 Mask:
src_mask,屏蔽<padding>。
2. Decoder Masked Self-Attention
- 输入:目标序列 (tgt)
- Q=K=V=tgt
- 作用:让目标序列在生成时利用上下文,但不能“偷看未来”。
- 需要的 Mask:
tgt_mask = look-ahead mask + padding mask。
3. Encoder–Decoder Attention (Cross Attention)
-
输入:
- Q = Decoder 的 hidden states (tgt)
- K, V = Encoder 的输出 (src)
-
作用:让 Decoder 在预测时「对齐」Encoder 的源序列。
-
需要的 Mask:
enc_dec_mask,屏蔽源序列的<pad>。
- Mask 逻辑如下:
- 在 cross-attention 中,Decoder 不需要防止“偷看未来”,因为 Q 是 target,K/V 是 source。
- 唯一需要屏蔽的是 source 序列里的
<pad>位置。 - 所以,enc_dec_mask 只包含 source 的 padding mask,不含 look-ahead。
二、Transformer 架构中的三种 Mask详解
1. Padding Mask
-
作用:屏蔽
<pad>,避免注意力白白浪费在补齐的空位上。 -
应用:
- Encoder self-attn (
src_mask) - Decoder self-attn (作为
tgt_mask的一部分) - Encoder–Decoder attn (
enc_dec_mask)
- Encoder self-attn (
2. Look-Ahead Mask (Causal Mask)
-
作用:保证自回归,防止 Decoder 在预测第 t 个词时看见未来的 t+1, t+2…。
-
应用:
- 只在 Decoder 的 self-attention 里出现
- 和 padding mask 合并成
tgt_mask
3. 组合 Mask
- tgt_mask = padding mask + look-ahead mask
- 同时处理「不能看未来」+「忽略
<pad>」两件事。
三、总结
1. 总结表格
| Attention 类型 | Q | K/V | Mask 类型 | 形状示例 |
|---|---|---|---|---|
| Encoder Self-Attn | src | src | src_mask(padding mask) | [B,1,L_src,L_src] |
| Decoder Self-Attn | tgt | tgt | tgt_mask(look-ahead + padding) | [B,1,L_tgt,L_tgt] |
| Encoder–Decoder Attn | tgt | src | enc_dec_mask(padding mask) | [B,1,L_tgt,L_src] |
2. 总结
Transformer 的核心逻辑就是:
- Encoder 用 self-attention 捕捉源序列上下文,使用
src_mask(padding mask)。 - Decoder 用 masked self-attention 自回归生成,使用
tgt_mask(look-ahead mask + padding mask)。 - Decoder 再通过 cross-attention 对齐 Encoder,使用
enc_dec_mask(padding mask)。

1942

被折叠的 条评论
为什么被折叠?



