Bert两个核心训练策略MLM和NSP详细说明
下面来详细解释一下 BERT 的两个核心训练策略(或称为预训练任务):Masked Language Model(MLM,掩码语言模型) 和 Next Sentence Prediction(NSP,下一句预测)。
这两个任务是 BERT 在没有人工标注的海量文本上学习语言知识的关键。
1. Masked Language Model(MLM,掩码语言模型)
这是 BERT 能够实现“双向”表示的最核心的训练策略。
背景:为什么需要 MLM?
在 BERT 之前,传统的语言模型通常是单向的(比如 GPT-1,只能从左到右看),或者只是将两个单向模型进行浅层拼接。这是因为如果让模型在训练时就能双向地看到所有词,那么预测某个词就变成了“看图说话”,模型只需复制上下文即可,无法真正学习到语言的内在规律。
MLM 的核心思想:完形填空
MLM 的灵感来源于中学英语的“完形填空”。它的操作非常简单:
-
随机掩盖(Mask):在训练时,对于输入的文本序列,随机选择 15% 的词元(Token)。然后对这些被选中的词元进行如下操作(这是一个细分的策略):
-
80% 的概率:将其替换为特殊的
[MASK]标记。 -
10% 的概率:将其替换为一个随机的其他词元。
-
10% 的概率:保持不变(即还是用原来的词元)。
-
-
预测(Predict):模型的任务是根据序列中其他所有未被掩盖的词(即上下文),来预测这些被选中位置原本是什么词。
为什么这样做能实现“双向”?
要正确预测被 [MASK] 掩盖的词,模型必须同时利用这个词的左边和右边的所有信息。
-
例子:句子“我
[MASK]苹果”。-
模型看到左边的“我”和右边的“苹果”,就能推断出中间这个词很可能是一个动词,而且大概率是“吃”、“摘”、“买”等与“我”和“苹果”都相关的词。
-
它必须融合双向的语境信息才能做出准确预测。
-
为什么要设计 80-10-10 的策略?(即为什么要引入随机替换和保持不变)
这是一个非常巧妙的设计,主要是为了解决 预训练-微调阶段的不一致性(Discrepancy)。
-
问题:在预训练阶段,模型会频繁地看到
[MASK]标记。但在后续的下游任务微调(Fine-tuning)阶段,输入的数据中是完全没有[MASK]标记的。这会导致模型在微调时感到不适应。 -
解决方案:
-
80%
[MASK]:让模型主要学习根据上下文预测被掩盖的词,这是主要目标。 -
10% 随机词:迫使模型必须学习依赖于上下文的真实表示,而不是简单地记住被掩盖位置的统计信息。如果模型发现当前位置是一个随机词(比如“我 足球 苹果”),它必须通过上下文判断“足球”这个词在这里是不合理的,并在预测时纠正它。这增强了模型的鲁棒性。
-
10% 保持不变:这会让模型在预测时,把注意力更多地放在上下文上,而不是仅仅关注被掩盖的位置本身。这也缓解了预训练和微调阶段的差异,因为在微调时,所有词都是“保持不变”的。
-
2. Next Sentence Prediction(NSP,下一句预测)
这个任务是为了让 BERT 能够理解两个句子之间的关系,特别是对于需要句子级别理解的下游任务(如问答、自然语言推理)至关重要。
核心思想:判断两句话是否连续
在预训练时,为 BERT 构建如下的输入数据:
-
输入:由两个句子 A 和 B 组成的句子对,中间用
[SEP]标记分隔,开头加上[CLS]标记。-
例如:
[CLS]今天天气真好[SEP]我们一起去公园吧[SEP]
-
-
正例(50% 概率):句子 B 是句子 A 在原文中真实的下一句。标签为
IsNext。 -
负例(50% 概率):句子 B 是从整个语料库中随机抽取的其他句子,与句子 A 无关。标签为
NotNext。
模型如何完成 NSP 任务?
BERT 取输入序列中第一个特殊标记 [CLS] 的最终输出向量。因为 [CLS] 的表示经过了所有层的双向交互,理论上汇聚了整个输入句子对的聚合信息。在这个向量之上,添加一个简单的二分类层,来预测 IsNext 或 NotNext。
NSP 的作用
通过这个看似简单的二分类任务,BERT 学会了:
-
篇章连贯性:理解句子在逻辑和主题上的连贯性。
-
指代关系:理解句子 B 中的代词(如“我们”)是如何指代句子 A 中的人或物(如“我”)的。
-
句子间的关系:为后续的问答(问题与段落的匹配)、推理(前提与假设的关系)等任务打下了坚实的基础。
总结:MLM 和 NSP 如何协同工作?
可以把这两个任务看作是 BERT 在预训练阶段的两个“导师”,它们从不同层面指导模型学习:
| 任务 | 学习层面 | 目标 | 类比 |
|---|---|---|---|
| MLM | 词元级别 | 学习词语在双向上下文中的准确含义,掌握语法和语义知识。 | 相当于让学生在句子层面做完形填空,理解每个词的用法。 |
| NSP | 句子级别 | 学习两个句子之间的逻辑和语义关系,掌握篇章理解能力。 | 相当于让学生判断两段话是否逻辑连贯,来自同一篇文章。 |
通过同时优化这两个任务的损失函数,BERT 的 Transformer 层最终被训练成了一个强大的特征提取器:它不仅知道每个词在句子中是什么意思(来自 MLM),还知道句子在整个篇章中扮演什么角色(来自 NSP)。这就是 BERT 在各种 NLP 任务上都能取得巨大成功的基础。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)