BERT 的 NSP 任务为何被质疑?
一、NSP 任务回顾
BERT 在 MLM 之外,引入了第二个预训练任务——下一句预测(Next Sentence Prediction, NSP):
输入: [CLS] 句子A [SEP] 句子B [SEP] 目标: 预测句子B是否是句子A的真实下一句(二分类) 正例: 从文档中取连续的两句 反例: 句子A来自文档1,句子B随机来自文档2设计初衷:让模型学习句间关系,因为许多下游任务(QA、NLI)本质上是句对任务。
二、RoBERTa 的核心质疑
RoBERTa(Facebook AI, 2019)通过严格的消融实验,对 NSP 提出了三点关键质疑:
质疑 1:NSP 对下游任务性能没有帮助
RoBERTa 在相同数据量、相同训练步数下对比了四种配置:
| 配置 | 说明 | GLUE 平均分 |
|---|---|---|
| SEGMENT-PAIR + NSP | BERT 原始设置(句对 + NSP) | 基线 |
| FULL-SENTENCES + NSP | 拼接完整句子(跨文档)+ NSP | 略低于基线 |
| FULL-SENTENCES 无 NSP | 拼接完整句子,去掉 NSP | 高于基线 |
| DOC-SENTENCES 无 NSP | 单文档内取句子,去掉 NSP | 最高 |
结论:去掉 NSP 后,模型在 GLUE 基准上的表现不降反升。NSP 不仅没有帮助,反而可能有害。
质疑 2:NSP 任务过于简单,学习信号太弱
NSP 正例: "他走进教室。老师正在讲课。" ← 话题连贯,容易判断 NSP 反例: "他走进教室。股票市场今天大跌。" ← 话题完全不同,太容易区分NSP 的负例构造方式是从不同文档随机采样,导致正负例之间的话题差异极大。模型只需检测话题是否一致就能轻松完成,根本不需要学习深层的句间逻辑关系。
这使得 NSP 退化为一个主题检测任务(topic detection),而非论文设想的句间关系推理任务(inter-sentence reasoning)。
质疑 3:NSP 降低了训练效率
NSP 要求输入必须是句对格式(Segment Pair),这带来了两个问题:
| 问题 | 说明 |
|---|---|
| 序列长度浪费 | 每条样本只能包含两个句子,实际有效文本长度短,单位计算量的训练信号密度低 |
| 批大小受限 | 句对格式限制了每条样本的 token 利用率,间接降低了训练效率 |
去掉 NSP 后,RoBERTa 可以将输入改为连续拼接的完整句子(Full Sentences),充分利用每个序列的 512 token 长度,大幅提升训练效率。
三、后续研究的进一步验证
ALBERT(Google, 2019)— 用 SOP 替代 NSP
ALBERT 认为 NSP 的问题不在任务本身,而在负例构造方式,因此提出了SOP(Sentence Order Prediction):
NSP 反例: 句子A + 来自其他文档的随机句子B ← 话题不同,太容易 SOP 反例: 句子A + 句子B(但交换A、B的顺序) ← 话题相同,必须学逻辑顺序| 任务 | 负例来源 | 模型需要学什么 | 难度 |
|---|---|---|---|
| NSP | 不同文档 | 话题是否一致 | 低 |
| SOP | 同文档交换顺序 | 句子的逻辑先后关系 | 高 |
实验结果:SOP 在下游任务上优于 NSP,且模型在 NSP 上表现好不代表在 SOP 上也好——证明 NSP 确实只学了浅层话题信号。
SpanBERT(Facebook, 2019)— 去掉 NSP,专注 span 级 MLM
SpanBERT 完全移除 NSP,转而设计连续 span 掩盖任务,在需要句间推理的任务(如 QA、Coreference)上反而表现更好,进一步说明 NSP 并非句间理解的必要条件。
四、总结:NSP 被质疑的根本原因
NSP 的设计假设: "预测下一句 → 模型学会句间关系 → 迁移到 QA/NLI 等句对任务" 实际情况: "随机负例导致任务退化为话题检测 → 学到的是浅层信号 → 既无助于下游任务,又浪费训练资源"| 根本原因 | 具体表现 |
|---|---|
| 任务退化 | 随机负例使 NSP 退化为简单的话题一致性检测,而非深层句间推理 |
| 经验无效 | 消融实验表明去掉 NSP 后下游性能不降反升 |
| 效率损失 | 句对格式限制了序列利用率,降低了训练效率 |
| 更好的替代方案存在 | SOP(更难的句序预测)和纯 MLM(更长序列拼接)都优于 NSP |
一句话总结:NSP 的出发点(学习句间关系)是合理的,但其负例构造方式使任务过于简单、退化为浅层话题检测,不仅未能帮助下游任务,还降低了训练效率——RoBERTa 通过消融实验证明了去掉它反而更好,ALBERT 则用更难的 SOP 任务证明了"句间任务可以有用,但 NSP 的设计方式不对"。