这篇论文的主要改进有三:
- 提出了更好的 Span Mask 方案,也再次展示了随机遮盖连续一段字要比随机遮盖掉分散字好;
- 通过加入 Span Boundary Objective (SBO) 训练目标,增强了 BERT 的性能,特别在一些与 Span 相关的任务,如抽取式问答;
- 用实验获得了和 XLNet 类似的结果,发现不加入 Next Sentence Prediction (NSP) 任务,直接用连续一长句训练效果更好。
首先什么是 Span Masking,和一般 BERT 训练有何不同。
根据几何分布,先随机选择一段(span)的长度,之后再根据均匀分布随机选择这一段的起始位置,最后按照长度遮盖。文中使用几何分布取 p=0.2,最大长度只能是 10,利用此方案获得平均采样长度分布。通过采样,平均被遮盖长度是 3.8 个词的长度
Span Boundary Objective 是该论文加入的新训练目标,希望被遮盖 Span 边界的词向量,能学习到 Span 的内容。或许作者想通过这个目标,让模型在一些需要 Span 的下游任务取得更好表现,结果表明也正如此。
具体做法是,在训练时取 Span 前后边界的两个词,值得指出,这两个词不在 Span 内,然后用这两个词向量加上 Span 中被遮盖掉词的位置向量,来预测原词。
详细做法是将词向量和位置向量拼接起来,过两层全连接层,很简单:
最后预测 Span 中原词时获得一个新损失,就是 SBO 目标的损失,之后将这个损失和 BERT 的 Mased Language Model (MLM)的损失加起来,一起用于训练模型。
SpanBERT 还有一个和原始 BERT 训练很不同的地方,它没用 Next Sentence Prediction (NSP) 任务,而是直接用 Single-Sequence Training,也就是根本不加入 NSP 任务来判断是否两句是上下句,直接用一句来训练。
对于为什么 NSP 没有用,这里,SpanBERT 作者们给出了下面两个解释:
- 相比起两句拼接,一句长句,模型可以获得更长上下文(类似 XLNet 的一部分效果);
- 在 NSP 的负例情况下,基于另一个文档的句子来预测词,会给 MLM 任务带来很大噪音。
于是 SpanBERT 就没采用 NSP 任务,直接一句长句,然后 MLM 加上 SBO 任务来进行预训练。
- SpanBERT 普遍强于 BERT;
- SpanBERT 尤其在抽取式问答上表现好,这应该与它的预训练目标关系较大;
- 舍弃掉 NSP 的一段长句训练普遍要比原始 BERT 两段拼接的方式要好。



