【预训练语言模型】SpanBERT: Improving Pre-training by Representing and Predicting Spans (2020ACL)

  陈丹琦团队的一篇改进BERT预训练任务的工作,扩展了BERT预训练语言模型:

  • 不像BERT只MASK单独的一个token,而是随机MASK掉连续的序列( contiguous random span);
  • 训练span boundary representation预测mask掉的整个区间内容;

1、动机:

  • 许多NLP任务涉及到包含多个span之间关系的推理,传统的BERT则无法处理这类问题;
  • 预测一个区间的多个token更加困难;

2、方法:

  • 不同于BERT,我们使用不同的随机策略mask掉一个span;
  • 添加辅助任务SPO,根据span boundary的两个token表征信息来预测span;
  • 随机采样一段文本,而不是两个,删掉了BERT中的Next Sentence Predicition任务

3、span masking

  给定一个文本序列X,从中挑选一些token组成Y集合,并迭代地进行采样。

  • 在每一次采样过程中,先基于几何分布采样span的长度(最短为1,最长为10,p=0.2),平均采样的区间长度约为3.8:
  • 【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._迭代

  • 然后再基于均匀分布采样span的start位置。由于BERT采用的是word piece,因此需要保证采样的起始点必须是某个单词的起始点。
  • 传统的BERT模型中,对一个句子随机mask 15%的token,这些mask掉的token中,有80%被替换为[MASK],10%为随机替换一个token,10%保持不变。spanBERT中则是对span完成的,也就是说整个span的所有token都会满足“80%被替换为[MASK],10%为随机替换一个token,10%保持不变”的设置。

4、span boundary objective

【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._spanBERT_02,给定一个mask span 【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._ci_03,对mask span内的每一个token的表示,取决于 【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._语言模型_04、以及位置表征 【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._spanBERT_05(相对于【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._迭代_06的距离):

【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._迭代_07

其中 【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._语言模型_08 函数为两层前馈网络,并添加Layer normalization:

【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._迭代_09

最终获得的 【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._语言模型_10 表示maxk span中的第 【预训练语言模型】SpanBERT: Improving Pre-training by Representing..._迭代_11

5、single-sequence training

  作者认为添加next sentence prediction效果不好,因此摈弃这一个任务。

  关于对抽取式问答的下有任务,spanBERT依然在模型的输出部分,添加两个独立的分类器,并分别预测start和end的位置。