跳到主内容
快讯直播
AI智模界
AI 词典

填充掩码:别让注意力去数凑数的位置

填充掩码(Padding Mask)是一组布尔标记,作用是告诉注意力机制(Attention):序列里哪些位置是补齐出来的空位,算权重时直接跳过。

为什么会有占位符

一批(batch)数据里,句子长短不一。一句"今天下雨"只有 4 个 token,另一句"我昨天下午在楼下咖啡店碰见了多年不见的老同学"有 20 个 token。GPU 喜欢规整的张量,所以短句会被补到 batch 内最长那条的长度,缺的位置填一个特殊占位 token,通常写作 <pad>。

形状是齐了,问题也来了:注意力会对序列里每个位置两两打分,再做 softmax 归一化。如果 <pad> 也参与,等于让一堆毫无语义的空位来投票——有效信息被稀释,句向量被噪声干扰。

打个比方

像一张 10 人会议的签到表,实到 6 人,剩下 4 行摆着空名字牌。统计"平均每人发言多久"时,不能拿 10 当分母。填充掩码就是那张"谁真的来了"的名单。

具体怎么屏蔽

在注意力分数矩阵上,把 <pad> 对应位置的分数加上一个极大负数(工程上常写 -1e9 或 -inf),softmax 之后这些位置的概率被压到 0,梯度也就传不过去了。

和相邻概念的区别

概念屏蔽什么动机典型来源
填充掩码补齐的 <pad> 位空位不该有话语权input_ids != pad_id
因果掩码(AI 词典:Causal Mask">Causal Mask)当前位置之后的 token生成时不许偷看未来下三角矩阵
合并使用两者都屏蔽解码器训练常见按位或 / 相加

一句话区分:因果掩码管的是"不许看未来",填充掩码管的是"别看不存在的"。两者常同时出现,很多实现里会被合并成一个统一的布尔掩码。

对从业者的实际意义

  • 变长批处理是提升训练吞吐的关键手段,而填充掩码是它成立的前提;漏掉它,短句占比高的 batch 会明显掉点。
  • 别忘了损失函数:交叉熵通常有 ignore_index 参数,用来把 <pad> 位置排除在 loss 之外。注意力掩码和 loss 掩码是两件事,只做一半是常见 bug。
  • 推理阶段若逐条处理,或按真实长度打包序列,可能不需要显式掩码。不同框架、不同注意力内核的接口写法不一致,具体以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。