--- created: 2025-08-03 21:19:11 tags: - "Research" - "基础" - "Transformer" - "Mask" - "多头注意力" --- 在Transformer模型中,掩码(Mask)的使用主要有两种情况:一种是在解码器的自注意力层中,用于防止未来信息的泄露(look-ahead mask或causal mask);另一种是在编码器和解码器的注意力计算中,用于忽略填充(padding)的标记。以下是掩码的实现方式和作用: ~~还记得在位运算中也使用到了[[掩码]]吗~~ ### 掩码的实现 1. **遮蔽未来信息(Look-ahead Mask)**: - 在解码器的自注意力层中,模型需要预测下一个词时不能利用未来的词,因此需要一个掩码来遮蔽未来的词。 - 这个掩码通常是一个 *上三角矩阵*,在softmax操作之前应用,将未来位置的值设置为一个非常大的负数(如 *负无穷大*),这样在应用softmax时,这些位置的 *权重会接近于零*。 2. **忽略填充(Padding Mask)**: - 在处理不同长度的序列时,通常会用特殊的填充标记(如``)来填充序列,使其长度一致。 - 填充掩码是一个布尔矩阵或掩码矩阵,其中填充位置被标记为`True`或`1`,非填充位置被标记为`False`或`0`。 - 这个掩码用于告诉模型哪些位置是填充的,应该在注意力计算中被忽略。 ### 掩码的作用 1. **防止未来信息泄露**: - 在解码器中,遮蔽未来信息的掩码确保了模型在生成当前词时不会看到未来的词,这是自回归语言模型的一个基本要求。 - 这种掩码有助于模型学习正确的序列生成过程,确保生成的序列是连贯和逻辑上合理的。 2. **忽略填充标记**: - 忽略填充标记的掩码使得模型在处理不同长度的序列时,不会将填充位置的无关信息纳入考虑。 - 这有助于模型集中注意力于实际的数据,提高模型的性能和准确性。 ### Masked HMA Masked Multi-Head Attention(遮蔽多头自注意力)在Transformer模型中主要用于解码器(Decoder),以确保在序列生成过程中,*每一步只能依赖于之前已经生成的输出,而不能“看到”未来的输出*。这种遮蔽机制对于维持正确的序列生成顺序至关重要。以下是Masked Multi-Head Attention的基本原理: 1. **遮蔽机制**: - 在自注意力计算中,模型通常会计算序列中每个元素对其他所有元素的注意力分数。但在解码器中,为了保持生成顺序,需要阻止模型在生成当前词时考虑未来词的信息。 2. **上三角掩码**: - 实现这一机制的方法是在自注意力层中引入一个上三角掩码(或称为look-ahead掩码)。这个掩码在序列长度的维度上创建,将当前位置之后的所有位置的值设置为一个非常大的负数(例如负无穷大)。 3. **Softmax归一化**: - 在计算注意力分数后,通常会通过Softmax函数进行归一化,使得所有分数的和为1。由于掩码位置的值被设置为负无穷大,经过Softmax归一化后,这些位置的注意力权重将接近于0。 4. **权重应用**: - 这样处理后,模型在计算加权的Value(V)向量时,被掩码的位置对当前词的贡献将被忽略,因为它们的权重几乎为零。(计算过程和[[Self-Attention]]是一摸一样的, 只不过是加入了掩码, 使计算结果有了不同的特性) 5. **保持自回归特性**: - 这种遮蔽多头自注意力的设计保持了解码器的自回归特性,即每一步的输出仅依赖于之前的输出,确保了生成过程的合理性和逻辑连贯性。 总结来说,Masked Multi-Head Attention通过引入一个上三角掩码来防止信息泄露,确保解码器在生成序列时每一步只能依赖于已经生成的词,而不能利用未来的信息。这种设计对于确保Transformer模型在序列到序列任务中生成高质量输出至关重要。