BERT 在预训练的 Masked Language Model(MLM)任务中,采用了 80% MASK + 10% random word + 10% unchanged 的策略,这个设计是 有目的地平衡预训练和下游任务差异,以提升模型泛化能力。
一、MLM 简述
BERT 的 MLM(Masked Language Modeling)任务是这样设计的:
从输入句子中随机选取 15% 的 token 作为“预测目标”,然后对这些目标 token 进行如下处理:
-
80%:替换为
[MASK]
token -
10%:替换为随机的其他 token
-
10%:保持原样,不做替换
例如,句子:
The cat sat on the mat.
可能会被处理成:
The [MASK] sat on the mat. # 80%
The dog sat on the mat. # 10%
The cat sat on the mat. # 10%
二、为什么不是 100% MASK?
如果我们把所有目标 token 都替换成 [MASK]
,模型训练就会学会过度依赖这个“信号”:只要看到 [MASK]
,就知道是要预测这个位置。这样做会造成两个问题:
1. 与真实使用场景不一致(训练 / 推理不匹配)
在实际下游任务(如情感分类、问答等)中,并不会出现 [MASK]
这个 token。
-
如果训练时全部使用
[MASK]
,模型会过拟合在特殊 token 上,泛化能力差。 -
采用部分原词/随机词,可以增强模型对上下文细微差异的建模能力。
2. 提高模型的鲁棒性和语义理解能力
-
10% 随机词替换 迫使模型学习对“错误语境”的容忍性,防止只依赖邻近 token
-
10% 保持原样 提供“对比学习”的效果,增强模型对本身 token 的表征能力
三、这 80/10/10 比例的设计初衷
处理方式 | 比例 | 作用 |
---|---|---|
替换为 [MASK] | 80% | 提供明确监督信号,集中学习预测能力 |
替换为随机 token | 10% | 提高泛化与鲁棒性,防止过拟合 [MASK] |
保留原 token | 10% | 模拟真实场景,不依赖特殊标记 [MASK] |
这种比例是在论文实验中验证过效果最好的折中方案。
四、论文原文解释
来自《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》原文:
"We always mask 15% of all WordPiece tokens in each sequence at random. Of the 15% of tokens selected for masking, 80% are replaced with [MASK], 10% are replaced with a random token, and 10% are left unchanged."
并解释:
"This helps the model to learn the actual language representations rather than just relying on the [MASK] token."
五、类似策略在其他模型中的演化
-
RoBERTa:保持相同策略,但训练数据和 batch 更大,更长训练时间。
-
ELECTRA:完全去掉
[MASK]
,采用替换检测(Replaced Token Detection)。 -
T5:使用文本 span 替换,不使用单个 token 的
[MASK]
。
这些都是为了进一步缩小“预训练与下游任务”的分布差异。
总结
BERT 采用 80% [MASK]
+ 10% random + 10% unchanged,是为了:
-
模拟真实语言环境,避免模型只学会猜
[MASK]
-
提高泛化能力与鲁棒性
-
提供更丰富的学习信号,提高语义建模能力
这种比例已被实践验证,在 NLP 预训练中是个极具代表性的设计。如果你有兴趣,我还可以展示一下用 PyTorch 实现这个 masking 策略的代码。是否需要?