一、前言:BERT到底是怎么训练出来的?
很多初学者只知道 BERT 是双向预训练模型,但完全搞不懂:
-
BERT 的权重是怎么从零训练出来的?
-
MLM 掩码预测到底在做什么?
-
NSP(大家俗称的"聚值预测")作用是什么?
-
为什么 BERT 能读懂上下文语义?
一句话总结BERT:
BERT 是基于 双向 Transformer Encoder 的自监督预训练模型,不需要人工标注数据,依靠海量纯文本,通过「完形填空 + 句子关系判断」两个任务自学语义,最终得到通用文本特征提取能力。
二、先区分:BERT 和 GPT 的本质区别
很多人混淆,这里一次性讲清:
-
GPT:单向 Decoder,只能看上文,任务是「预测下一个词」,主打文本生成。
-
BERT:双向 Encoder ,能同时看上文+下文,主打 语义理解、特征提取,不做生成。
BERT 的所有能力,全部来自两个自监督预训练任务:
-
MLM 掩码语言模型(完形填空)
-
NSP 下一句预测(句子关系分类)
三、核心一:MLM 掩码预测
1. 什么是 MLM?
MLM(Masked Language Model)掩码语言模型,本质就是 让模型做「完形填空」。
训练时随机把句子中 15% 的 Token 做修改,让模型根据双向上下文,预测原本的词是什么。
2. 15% Token 的三种处理方式(面试重点)
选中的15%文本,按比例执行三种操作:
-
80% 替换为 MASK:我喜欢吃【MASK】
-
10% 随机替换成其他词:我喜欢吃 桌子
-
10% 保持原词不变:我喜欢吃 苹果
3. 为什么不全改成 MASK?
如果训练时全部改成 MASK,模型会 只依赖 MASK 标记做题。
但是!下游微调、真实推理场景中,输入没有任何 MASK,模型会直接崩、泛化极差。
所以混入:
-
10% 随机词:防止模型偷懒
-
10% 原词不动:强迫模型 真正依靠上下文语义判断,而不是靠标记
4. MLM 学到了什么?
因为是双向上下文预测,BERT 可以同时利用左右文本:
-
语法结构
-
语义逻辑
-
一词多义
这也是 BERT 双向语义理解能力优于 GPT 单向模型的核心原因。
四、核心二:NSP 下一句预测(聚值预测)
1. 什么是 NSP?
NSP(Next Sentence Prediction)下一句预测,就是 句子关系二分类任务。
作用:让模型学会 句子与句子之间的逻辑关系,适配问答、匹配、推理任务。
2. 样本构造方式
输入格式固定:
[CLS] 句子A [SEP] 句子B [SEP]
训练数据一半正样本、一半负样本:
-
50% 正样本:句子B 是句子A 的真实下一句
-
50% 负样本:句子B 从其他文档随机抽取,逻辑不连贯
3. 怎么预测?
BERT 输出的 CLS 向量 代表整句全局语义,送入二分类层:
-
标签 1:是连续句子
-
标签 0:不是连续句子
这就是大家口语中说的「聚值预测」------ 用句首CLS聚合全局语义做预测。
4. NSP 的缺陷(重要)
后续研究发现:NSP 任务收益很低,甚至拖累性能。
因为随机跨文档句子太简单,模型不需要理解语义,仅凭主题差异就能判断。
所以 RoBERTa、BERT-wwm 全部删掉了 NSP,只保留 MLM,效果更好。
五、BERT完整预训练流程
-
准备海量无标注纯文本语料
-
构造 MLM 掩码任务 + NSP 句子任务
-
文本通过 Tokenizer 转 ID,加入 CLS、SEP
-
送入多层双向 Transformer Encoder 提取特征
-
所有 Token 输出向量用于 MLM 完形填空
-
CLS 向量用于 NSP 句子关系预测
-
联合两个 Loss 反向传播,更新 BERT 全部参数
-
训练完成得到通用预训练权重
关键点:预训练无人工标签,完全自监督学习。
六、预训练完成后:BERT 怎么用?(下游微调)
预训练只是让模型"读懂语言",真正做业务需要微调:
-
文本分类:CLS向量 + 全连接分类
-
命名实体识别NER:每个Token向量逐字分类
-
语义匹配、相似度计算:句子CLS向量比对
-
问答任务:基于上下文向量预测答案位置
七、BERT经典变体及改进点(面试重点)
1. RoBERTa(强力优化版BERT)
-
移除 NSP 任务,只保留 MLM
-
动态掩码:每次输入都重新随机mask,数据多样性更强
-
更大batch、更多数据、更长文本
综合性能显著优于原生BERT模型
2. ALBERT(轻量化BERT)
-
Embedding矩阵分解,大幅减少参数量
-
层参数共享,每层Transformer权重一致
-
用 SOP 句子顺序预测替代 NSP
-
缺点:参数小但推理速度提升不明显
3. BERT-wwm / wwm-ext(中文最强基线)
-
全词掩码:不再掩码单字,直接掩码整个词语
-
更贴合中文语义,中文任务效果远超原生BERT
八、面试核心总结(可直接背诵)
BERT 是双向 Encoder 预训练模型,依靠两个自监督任务自学语言:
1、MLM掩码语言模型:随机遮蔽15%token,80%MASK、10%随机替换、10%不变,让模型双向完形填空,学习深层语义;
2、NSP下一句预测:利用CLS向量判断两句是否连续,学习句子逻辑关系;
预训练完成后通过少量标注数据微调,适配分类、NER、匹配等下游任务。后续RoBERTa等模型证明NSP收益有限,一般只保留MLM任务。
九、总结
-
BERT 的通用语义能力,是通过海量无标注文本与两项自监督任务迭代训练得到,并非模型固有能力。
-
MLM 负责 字词语义、上下文理解。
-
NSP 负责 句子关系、段落逻辑。
-
目前工业场景极少使用原生BERT,主流应用版本为 RoBERTa、BERT-wwm 等优化变体。