SpanBERT

1. 前言

spanBERT是专门设计来更好地表示和预测文本的区间的,顾名思义它是BERT的一种扩展。见论文《SpanBERT: Improving Pre-training by Representing and Predicting Spans》,在本文中,作者提出了一个新的分词级别的预训练方法 SpanBERT ,其在现有任务中的表现优于 BERT ,并在问答、指代消解等分词选择任务中取得了较大的进展。对 BERT 模型进行了如下改进:

  • 提出了更好的Span Mask方案,SpanBERT不再对随机的单个token添加掩膜,而是随机对邻接分词添加掩膜;
  • spanBERT通过训练span的边界的表示,来对整个被mask的span来进行预测,而非其中的单个token。具体的说,文章引入了span-boundary objective(SPO),来鼓励模型将span层面的信息存储在其边界的token表示上,以在finetune阶段获得更好的效果。spanBERT在span选择的任务上明显地比BERT表现要好,包括问答匹配指代消岐。同时在SQuAD和OntoNotes上都取得了state-of-the-art的效果。在SQuAD上,相比于BERT,SpanBERT降低了27%的误差,在各种抽取式问答benchmark(NewsQA, TriviaQA, SearchQA, HotpotQA, Natural Questions) 也观察到了类似的收益。
  • 用实验获得了和XLNet类似的结果,发现不加入Next Sentence Prediction (NSP) 任务,直接用连续一长句训练效果更好

image

图1 SpanBERT改进点汇总图

在接下来的内容中,我们将对这些预训练任务进行详细探讨,特别是前两个改进点。

2. BERT预训练任务回顾

在BERT模型预训练阶段,主要使用了两项预训练任务Masking Language Model (MLM)以及Next Word Prediction (NSP)。

2.1 Masking Language Model (MLM)

在训练语料中,会选择一批token替换为Mask token,MLM任务旨在利用语句的上下文双向信息,恢复语句中被Mask的token,以帮助模型学习语言知识。图2给出了关于MLM任务一个示例,其中在预测单词model的时候,模型将会利用model前后的信息进行推断被Masking的单词,特别是在看到pre-training和natural language processing等信息时,比较容易能够推断出这个单词就是model。
image

图2 MLM样例图

在BERT模型预训练阶段,总共Masking掉语料中15%的token,但是这里存在一个问题:fine-tune阶段以及预测时输入文本中并不包含Mask token,这样就造成了预训练阶段和fine-tune/预测阶段的GAP。所以BERT在这批被Mask的token中采用了不同的Masking策略,具体如下:

  • 80%的token被替换为Mask token
  • 10%的token被随机替换为其他词
  • 10%的token保持不变

2.2 Next Word Prediction (NSP)

在BERT的训练语料中,部分输入文本是由无关的两段语句进行拼接而成,部分输入文本是由本来就前后相邻的两段语句拼接而成。NSP任务旨在去识别一个输入文本是否是相邻的两句话拼接而成。图3给出了关于NSP的一个语料文本示例。

image

图3 NSP样例图

3. SpanBERT的预训练任务

3.1 Span Masking

在BERT的Masking策略中,每个被mask的token被随机选择,所以被选择的这些token是比较分散的。然而Span Masking则是需要随机地Mask连续的多个token,直到所mask的token达到句子总token的15%
具体来讲,

  • 首先SpanBERT根据几何分布\(Geo(p)\)采样一个Span的长度\(l\),采样的\(l\)裁剪为最大为10(不应当是长度10以上修剪,而应当为丢弃),几何分布的p为0.2,所以平均的span长度为3.8.
  • 然后通过均匀分布在文本中随机选择起始点位置必须为完整token而非subwords。即从起始点开始的\(l\)长度token将会被Mask。

图4展示了Span采样长度图。
image

图4 Span采样长度图

3.2 Span Boundary Object (SBO)

SpanBERT期望Span边界的token能够尽可能多地汇总Span内部的信息,所以引入了SBO预训练目标。如图5所示,masking的连续token为""an American football game",SBO任务期望使用Span的边界token\(x_4\)\(x_9\)来预测Span内容

image

图5 SBO样例图

具体来讲,给定一串序列\(\text{X}=\{x_1, x_2, ..., x_n\}\)​,假设Mask的连续token为\((x_s,...,x_e)\)​, \(x_s\)​和\(x_e\)​代表起始token和末端token。SpanBERT将使用边界token \(x_{s-1}\)​和\(x_{e+1}\)​​来计算Span内部的每个token。

\[\vec{y_i} = f(\vec{x_{s-1}}, \vec{x_{e+1}}, \vec{P_{i-s+1}}) \]

其中,\(\vec{P_{i-s+1}}\)代表Span内部的token\(x_i\)相对于边界token\(x_{s-1}\)​的相对位置编码,\(\vec{x_{s-1}}\)为token\(x_{s-1}\)的encoder的输出向量。

一般会用两层的线性层加非线性激活来得到logits以计算其cross-entropy loss。以上公式具体是这么计算的。

\[\begin{align} h_0 &= [x_{s-1};x_{e+1};P_{i-s+1}] \\ h_1 &= \text{LayerNorm}(\text{GeLU}(W_1h_0))\\ y_i &= \text{LayerNorm}(\text{GeLU}(W_2h_1)) \end{align} \]

3.3 MLM与SBO融合计算

如上图所示, 在预测单词football的时候,既使用了MLM任务去预测单词football,同时又使用了SBO任务去预测football,最终将二者进行相加。相应公式为:

\[\begin{align} L(x_i) &= L_{\text{MLM}}(x_i)+L_{\text{SBO}}(x_i) \\ & = -\text{log}P(x_i|\text{x}_i) - \text{log}P(x_i|y_i) \end{align} \]

3.4 去掉NSP任务

SpanBERT去掉了NSP任务,即输入文本是一个比较长的句子,大部分情况下这样的设置,实验效果会更好。作者推测其可能原因如下:

  • 更长的语境对模型更有利,模型可以获得更长上下文(类似 XLNet 的一部分效果);
  • 加入另一个文本的语境信息会给MLM 语言模型带来噪音

因此,SpanBERT 就没采用 NSP 任务,仅采样一个单独的邻接片段,该片段长度最多为512个单词,其长度与 BERT 使用的两片段的最大长度总和相同,然后 MLM 加上 SBO 任务来进行预训练。

4. 消融实验

针对Bert MASK是在subword粒度进行随机掩码,已经有不少的改良方案,包括Whole word MASK通过全词掩码来更好的引入词粒度信息
image
以及ERINE的knowledge masking通过实体&短语掩码引入知识信息等等。
image

SpanBERT给出了更加通用的掩码方案,整体掩码的比例和策略Bert保持了一致都是15%,并且对其中80%的token使用MASK,10%用原始token替换,10%用随机token替换。以上策略针对span级别,如果使用MASK则整个span都会用MASK替换。

作者还通过更严谨的消融进行了验证,作者在原始Bert的预训练策略上,只改变MASK方式,比较了Masking的策略,包括

  • Subword Tokens:同原生BERT一样,随机选token进行mask
  • Whole Words:同第二版BERT一样,采用whole - word masking;
  • Named Entities:一半是whole word masking,一半是实体词,直到15%的token被mask;
  • Noun Phrases:一半是whole word masking,一半是名词短语,直到15%的token被mask;
  • Geometric Spans:即SpanBERT。

image
Whole Word Masking和knowledge Masking,其实都是Span Masking的一种特殊形式,只不过前两者强调MASK必须针对完整的词或者短语/实体,对比whole word,entity,名词的掩码,整体上还是随机长度连续掩码的效果最好。
从实验看到,SpanBERT的效果是最好的,带给我们的思考是不要纠结于mask的是一个完整的词,还是完整的短语,还是完整的实体?只要mask的是一段连续的Span即可

辅助目标
image
从实验结果可以看到,去到NSP任务,采样的时候从单个文档得到segment,增加SBO任务都能带来效果的提升。

4. 参考

  1. SpanBERT: Improving Pre-training by Representing and Predicting Spans

  2. SpanBERT Github

posted on 2022-06-24 22:16  朴素贝叶斯  阅读(829)  评论(0编辑  收藏  举报

导航