标准回答
双向 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] 时才努力,从而提升迁移效果。
追问 2:RoBERTa 相比 BERT 做了哪些改进?
去掉 NSP、改用更大 batch 和更多数据、训练更久、采用动态掩码(每个 epoch 重新随机 mask),并用更大 BPE 词表。结论是 BERT 此前训练不充分,简单加量加时即可显著超越,间接证明 NSP 并非必要。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。