BERT 的 15% 掩盖策略与 80/10/10 拆分:设计动机详解
一、整体策略回顾
BERT 在预训练时,对输入序列随机选择15%的 token 位置进行"掩盖",然后对这 15% 的位置做如下拆分处理:
被选中的 15% token ├── 80% → 替换为 [MASK] ├── 10% → 替换为一个随机 token └── 10% → 保持原 token 不变这个看似复杂的策略并非随意设计,每一部分都解决了特定的训练问题。
二、为什么是 15%?
平衡训练信号与上下文质量
| 掩盖比例 | 问题 |
|---|---|
| 太低(如 5%) | 训练信号太少,模型从每条样本中学到的信息不足,预训练效率低 |
| 太高(如 50%) | 上下文被严重破坏,模型难以推断被遮盖的词,且输入与真实文本差异过大 |
| 15% | 经验性平衡点:足够多的预测目标,同时保留足够的上下文信息 |
15% 是 BERT 原论文通过实验确定的经验值,并非理论最优。后续研究(如 RoBERTa、SpanBERT)也探索了动态掩盖、连续 span 掩盖等改进,但 15% 作为基线比例被广泛沿用。
三、80/10/10 拆分的逐项解析
1. 80% 替换为[MASK]— 主力训练信号
输入: The man went to the [MASK] to buy coffee 目标: 预测 [MASK] → "store"作用:这是 MLM 的核心任务——根据双向上下文预测被遮盖的词,迫使模型学习语言的深层表示。
为什么不是 100%?
关键问题在于预训练与微调的不一致:
预训练阶段: "The man went to the [MASK] to buy coffee" ← 含 [MASK] 微调阶段: "The man went to the store to buy coffee" ← 不含 [MASK]如果 100% 都用[MASK],模型会过度依赖[MASK]这个特殊标记的存在。而下游任务(分类、NER、QA 等)的输入中永远不会出现[MASK],导致预训练学到的表示在微调时存在分布偏移。
2. 10% 替换为随机 token — 强迫模型保持怀疑
输入: The man went to the pineapple to buy coffee 目标: 预测 "pineapple" 位置 → "store"作用:模型不能盲目信任输入中的每个词,必须学会判断"这个词可能是错的",并利用上下文来纠正。
解决的问题:
如果只有[MASK]和保持原词两种情况,模型可能学到一种捷径:看到[MASK]就认真预测,看到正常词就直接复制。引入随机词后,模型无法确定哪些位置被篡改过,因此必须对所有位置都建立高质量的上下文表示,而不能偷懒。
模型心理活动: "这个位置是 'pineapple'?但上下文是 'went to the ___ to buy coffee', 语义上不合理,应该是 'store'。" → 学会了基于上下文的语义判断,而非机械信任输入3. 10% 保持原词不变 — 学习"自我校准"表示
输入: The man went to the store to buy coffee 目标: 预测 "store" 位置 → "store"(即原词本身)作用:让模型对未被修改的真实 token也产生预测梯度,学习"这个位置的信息是正确的"的表示。
解决的问题:
如果被选中的 15% 位置要么变成[MASK]、要么变成随机词,模型会形成一种偏见:被选中的位置总是"有问题"的。保留 10% 原词,让模型也处理"这个位置其实是对的"的情况,使表示更加均衡。
四、三者协同的整体效果
┌─────────────────────────────────────────────────────────────┐ │ 15% 被选中的位置 │ │ │ │ 80% [MASK] → "上下文推理"能力(核心任务) │ │ 10% 随机词 → "输入不可全信"的鲁棒性 │ │ 10% 原词保留 → "输入也可能正确"的校准能力 │ │ │ │ 协同效果: 模型对每个位置都建立高质量的、不依赖特殊标记的 │ │ 上下文表示 → 缩小预训练与微调的分布差距 │ └─────────────────────────────────────────────────────────────┘| 设计选择 | 解决的问题 | 如果不做会怎样 |
|---|---|---|
80%[MASK] | 提供主要的完形填空训练信号 | — |
| 10% 随机词 | 防止模型只对[MASK]认真,对其他词偷懒 | 模型在非[MASK]位置表示质量下降 |
| 10% 原词 | 让模型也学习"正确输入"的表示 | 模型对被选中位置产生"总是有问题"的偏见 |
| 整体 80/10/10 | 缩小预训练(含噪声)与微调(无噪声)的分布差距 | 微调性能下降,迁移效果变差 |
五、一句话总结
80% 的
[MASK]提供核心训练信号,10% 的随机词迫使模型不盲信输入,10% 的原词保留让模型也学习正确表示——三者共同作用,让 BERT 对每个位置都生成不依赖[MASK]标记的高质量双向上下文表示,从而缩小预训练与微调之间的分布差距。
这一设计体现了 BERT 论文对"预训练-微调一致性"的深刻思考,也是其能在下游任务上取得优异迁移效果的重要细节之一。