核心要点

  • MLM:随机遮盖 15% token 让模型预测原词,从而实现深层双向编码

  • 15% 中按 80% 替换为 [MASK]、10% 随机词、10% 保持不变,缓解预训练微调不一致

  • NSP:拼接两句,判别 B 是否为 A 的真实下一句,学句间关系(后被 RoBERTa 证明可去)

  • BERT 是纯 Encoder,适合理解类任务(分类、NER、问答),不适合自回归生成

标准回答

双向 Encoder 的动机

BERT 是纯 Transformer Encoder,目标是学到融合左右上下文的深层双向表示。传统语言模型只能单向预测下一个词,无法同时看到双侧上下文。

MLM(Masked LM)

随机选 15% 的 token 做掩码后预测原词,强迫模型用双向上下文还原。为缓解微调阶段不出现 [MASK] 的偏置,这 15% 中:80% 换成 [MASK]、10% 换成随机词、10% 保持原词。

NSP(Next Sentence Prediction)

把句对 (A, B) 拼接,用 [CLS] 表示做二分类,判断 B 是否真接在 A 后,目的是学句间关系以利问答、推断。后续 RoBERTa 实验表明 NSP 收益有限甚至有害,将其去除并用更大数据/更长训练反而更好。

适用场景

适合理解类任务(文本分类、NER、阅读理解),不擅长自回归文本生成。详见 BERT 预训练模型深度解析

常见误区

⚠️ 常见踩坑

误以为 15% 全部替换成 [MASK](实为 80/10/10);把 BERT 当成能像 GPT 那样自回归生成文本的模型。

追问

追问 1为什么 MLM 要保留 10% 原词不替换?

因为微调和推理时输入里没有 [MASK],若训练只见 [MASK] 会造成预训练-下游分布不一致。保留一部分原词(并混入随机词)让模型对每个位置都要建模真实表示,而不是只在见到 [MASK] 时才努力,从而提升迁移效果。

追问 2RoBERTa 相比 BERT 做了哪些改进?

去掉 NSP、改用更大 batch 和更多数据、训练更久、采用动态掩码(每个 epoch 重新随机 mask),并用更大 BPE 词表。结论是 BERT 此前训练不充分,简单加量加时即可显著超越,间接证明 NSP 并非必要。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。