Page 13 · SimLabs LLM Visual

因果 Mask:为什么不能偷看未来

Decoder 在做自回归生成时,当前位置只能看见自己之前的 token,不能提前偷看未来。否则训练时就会“抄答案”,推理时却拿不到这些未来信息,模型行为会前后不一致。因果 Mask 的作用,就是把这种未来泄露硬性堵住。

看未来信息如何被屏蔽 比较有无 Mask 的权重差别 理解训练和推理为什么要一致

选一个解码位置,观察它能看见谁

先选场景,再点击“当前正在计算的 token”。上面的原始打分矩阵展示“如果不加限制,它最想看谁”;右边的因果 Mask 结果展示“哪些未来位置被强制屏蔽了”。

原始打分

还没加 Mask 的注意力分数

这里可能会对未来 token 给出很高分,这正是“偷看未来”的入口。

当前查询行 当前及历史位置 未来位置
加上因果 Mask

未来位置被硬性屏蔽

未来列会被替换成极小值,Softmax 之后对应权重会压成 0。

比较有无 Mask 时的注意力分布

下方左侧是“如果允许偷看未来”的注意力分布,右侧是“真正用于自回归生成”的分布。最关键的不是分数本身,而是未来位置的权重是否被压成了 0。

不加 Mask:可能把注意力给未来 token

加上 Mask:未来权重必须归零

泄露比例

0%

如果没有 Mask,当前查询会有多少注意力流向未来位置。

保留上下文

100%

加上 Mask 后,模型仍然可以完整地看历史和当前位置,不是“全遮住”。

核心一致性

Train = Infer

训练时和推理时都遵守同样的可见范围,模型才不会在训练中学会依赖推理时不存在的信息。

关键直觉: 因果 Mask 不是“帮助模型聚焦”的可选技巧,而是在 decoder 自回归生成里保证信息边界的硬规则。没有它,next-token 训练就会失真。

什么时候需要它,什么时候不需要

Decoder Self-Attention

需要因果 Mask。因为目标是按顺序生成,当前位置不能提前看到后面的 token。

Encoder Self-Attention

通常不需要因果 Mask。像分类、编码、检索表示这类任务,整句输入在一开始就是完整可见的。

Cross-Attention

通常也不做这种“未来屏蔽”。Decoder 在读取 encoder 输出时,读的是完整输入信息,不属于未来答案泄露。