BERT预训练原理详解:MLM掩码预测 + NSP句子预测

一、前言:BERT到底是怎么训练出来的?

很多初学者只知道 BERT 是双向预训练模型,但完全搞不懂:

  • BERT 的权重是怎么从零训练出来的?

  • MLM 掩码预测到底在做什么?

  • NSP(大家俗称的"聚值预测")作用是什么?

  • 为什么 BERT 能读懂上下文语义?

一句话总结BERT:

BERT 是基于 双向 Transformer Encoder 的自监督预训练模型,不需要人工标注数据,依靠海量纯文本,通过「完形填空 + 句子关系判断」两个任务自学语义,最终得到通用文本特征提取能力。

二、先区分:BERT 和 GPT 的本质区别

很多人混淆,这里一次性讲清:

  • GPT:单向 Decoder,只能看上文,任务是「预测下一个词」,主打文本生成。

  • BERT:双向 Encoder ,能同时看上文+下文,主打 语义理解、特征提取,不做生成。

BERT 的所有能力,全部来自两个自监督预训练任务:

  1. MLM 掩码语言模型(完形填空)

  2. 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完整预训练流程

  1. 准备海量无标注纯文本语料

  2. 构造 MLM 掩码任务 + NSP 句子任务

  3. 文本通过 Tokenizer 转 ID,加入 CLS、SEP

  4. 送入多层双向 Transformer Encoder 提取特征

  5. 所有 Token 输出向量用于 MLM 完形填空

  6. CLS 向量用于 NSP 句子关系预测

  7. 联合两个 Loss 反向传播,更新 BERT 全部参数

  8. 训练完成得到通用预训练权重

关键点:预训练无人工标签,完全自监督学习。

六、预训练完成后: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任务。

九、总结

  1. BERT 的通用语义能力,是通过海量无标注文本与两项自监督任务迭代训练得到,并非模型固有能力。

  2. MLM 负责 字词语义、上下文理解

  3. NSP 负责 句子关系、段落逻辑

  4. 目前工业场景极少使用原生BERT,主流应用版本为 RoBERTa、BERT-wwm 等优化变体。

相关推荐
呆萌很2 小时前
Sigmoid 与 Tanh 激活函数(S 型饱和激活函数)
人工智能·深度学习·机器学习
达子6662 小时前
AI训练师图解_6.1_让AI理解人类语言_自然语言处理
人工智能·自然语言处理
leoZ2312 小时前
10-Git 仓库蒸馏术:从代码仓库到 OpenClaw 虚拟人-蒸馏工具链
大数据·git·深度学习·神经网络·目标检测·elasticsearch·lstm
Moon上有月亮4 小时前
Ollama 完全指南:本地大语言模型的“开箱即用”方案
人工智能·语言模型·自然语言处理·ollama
sel_94 小时前
【Docker】Docker 安装与使用详解:从零搭建到日常实战
人工智能·深度学习·算法·docker
Tbisnic13 小时前
BGE-M3 算法详解:从模型架构到三种检索方式的数学原理
算法·自然语言处理·大模型·bert·transformer·注意力机制
不可求~13 小时前
用 AI 读论文别只看摘要:建立可追溯的证据链
人工智能·深度学习·机器学习
今天AI了吗14 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
CODER030418 小时前
Anaconda和Mamba创建环境管理包常用命令合集
python·深度学习·conda·虚拟环境·mamba·常用命令大全