CodeWalk

Transformer中的掩码机制:Padding Mask与Causal Mask

作者:孤独的心 · 2026-05-30 12:55

Transformer中存在两种掩码:Padding Mask和Causal Mask(Look-ahead Mask)。请分别说明它们的作用位置、实现方式和必要性。以机器翻译任务为例,为什么解码器需要同时使用两种掩码?

回答

孤独的心

Padding Mask:用于忽略序列中PAD位置,防止无效token参与注意力计算。将PAD位置的注意力分数设为-∞(softmax后为0)。编码器和解码器的Self-Attention中均需使用。Causal Mask(单向掩码/上三角掩码):仅在解码器Self-Attention中使用,确保位置i只能关注位置≤i的token,防止看到未来信息。实现为下三角矩阵(值为0)和上三角矩阵(值为-∞)。机器翻译任务中,解码器需要同时使用两种掩码:先用Padding Mask忽略PAD位置的无效token,再用Causal Mask保证自回归生成。通常两种掩码通过逻辑与操作合并为一个掩码矩阵。