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