SpanBERT: Improving Pre-training by Representing and Predicting Spans
论文链接: https://arxiv.org/pdf/1907.10529.pdf
Reference: https://zhuanlan.zhihu.com/p/335717716 \qquad https://zhuanlan.zhihu.com/p/75893972
0. 摘要
本文提出了SpanBERT,它是一个pre-training method,它被用于更好地表示和预测spans of text。本文的方法是对BERT的一种扩展,这个扩展主要分为两个方面:
-
(与BERT中对random tokens进行mask不同)本文所提出的模型是对contiguous random spans进行mask。
-
对span boundary representations进行训练,从而让它(在不依赖于masked tokens的representations的时候)可以对masked span中的所有内容进行预测。
SpanBERT在许多任务上达到了比BERT以及本文作者的better-tuned baselines更好的结果,其中在span selection task上取得了非常大的提升。此外,在与
B
E
R
T
l
a
r
g
e
BERT_{large}
BERTlarge 拥有同样的model size时,本文的模型可以在SQuAD1.1和SQuAD2.0上分别取得94.6%和88.7%的结果。此外,SpanBERT在OntoNotes coreference resolution task (79.6% F1)上取得了最佳的效果,并在TACRED relation extraction benchmark以及GLUE上都取得了较好的结果。
1. Introduction
像BERT这样的pre-training methods可以通过对words或是subwords进行mask,从而利用self-supervised training来极大提高模型在下游任务上的performances。然而,许多NLP任务需要对spans of text之间的关系进行推理。例如,在抽取式问答中,如果要回答问题“Which NFL team won Super Bowl 50?”, 那么识别出“Denver Broncos”是一个“NFL team”就是回答这个问题的关键。这样的一种span prediction为当前的self supervision task带来了一个巨大的挑战,因为当前的这类方法其实是在对token进行预测,换到这个问题下,其实也就是说,我们只需要对token “Denver”进行预测(此时我们是知道它的下一个token是“Broncos”),而这样一个任务其实是比预测span要简单的。
2. 背景:BERT
略
3. Model
本文所提出的SpanBERT是一种pretraining method,它在表达和预测 spans of text的方面要优于BERT。本文的方法与BERT的不同之处在于三方面:
-
首先,本文作者对random contiguous spans(而不是random individual tokens)进行mask。
-
其次,本文作者提出了一个span-boundary objective(SBO), 从而使得模型可以通过span两端boundaries处的observed tokens而去让模型对整个masked span进行学习。
-
最后,针对每一个training example,SpanBERT将从中采样出一个contiguous segment of text(而BERT则是采样出两个),其中本模型去掉了BERT中所含有的next sentence prediction objective。
整体模型架构如下图所示:
3.1 Span Masking
给定一系列的tokens X = ( x 1 , x 2 , . . . , x n ) X=(x_{1}, x_{2}, ...,x_{n}) X=(x1,x2,...,xn),我们以迭代的形式的从中选择出tokens的子集 Y ⊆ X Y\subseteq X Y⊆X,直到我们达到masking budget( X X X的15%)。在每一次迭代中,我们首先从一个几何分布中采样出一个span length l ∼ G e o ( p ) l\sim Geo(p) l∼Geo(p),这个 l l l 代表要mask的单词的数量,是masked span的长度 。然后从 X X X 中以均匀分布的形式采样出一个starting point,作为该masked span的第一个token。
与BERT保持一致的是,本文作者在SpanBERT中也同样会将15%的tokens给mask了,其中80%的用[MASK]来进行代替,10%的用random tokens,另外10%的就使用它本身的tokens。但是SpanBert的mask是在span level,而不是Bert中的对每个token分别地进行mask。对于同一个masked span来说,这些单词所做的替换操作是一样的(即,要么全用[MASK]来代替,要么全用sampled tokens来进行代替)。
3.2 Span Boundary Objective (SBO)
Span selection models希望能够用它的boundary tokens来构建关于span的定长表示。因而span两端的tokens的representations需要尽可能的包含span内部内容的语义。为此,本文作者引入了一个span boundary objective,希望在span边界处的tokens的representations可以对masked span内部的tokens进行预测。
形式化而言,作我们用
x
1
,
.
.
.
,
x
n
x_{1}, ... , x_{n}
x1,...,xn 表示序列中每个token的transformer encoder的输出。给定一个masked span of tokens
(
x
s
,
.
.
.
,
x
e
)
∈
Y
(x_{s}, ... , x_{e})\in Y
(xs,...,xe)∈Y , 其中
(
s
,
e
)
(s,e)
(s,e) 表示的是这个span的start position和end position。作者用
x
s
−
1
,
x
e
+
1
x_{s-1},x_{e+1}
xs−1,xe+1 和position embedding
p
i
−
s
+
1
p_{i-s+1}
pi−s+1 来对masked span中target token
x
i
x_{i}
xi 进行表示:
其中position embeddings
p
1
,
p
2
,
.
.
.
p_{1}, p_{2}, ...
p1,p2,... 表示masked tokens关于token
x
s
−
1
x_{s-1}
xs−1 的相对位置。其中
f
(
⋅
)
f(\cdot)
f(⋅) 表示成一个2层的利用GeLU activations和layer normalization的feed-forward network:
与MLM objective类似,此时我们就可以使用vector representation
y
i
y_{i}
yi 来对token
x
i
x_{i}
xi 进行预测,并计算其cross-entropy loss。
SpanBERT将(对于masked span ( x s , . . . , x e ) (x_{s}, ..., x_{e}) (xs,...,xe) 中每一个token x i x_{i} xi )来自于span boundary和MLM objectives的loss加和在一起,作为关于该token的最终的loss:
3.3 Single-Sequence Training
BERT中包含着一个next sentence prediction的任务,这个任务的input是两个text的序列 ( X A , X B ) (X_{A}, X_{B}) (XA,XB) , 其目的在于预测二者是否是连接在一起的。作者通过实验发现,这样的一种设置会比去掉NSP objective而只使用一个sequence的效果要差。因而作者猜测,single-sequence training比bi-sequence training+NSP的效果要好,这是由于:
- 模型能够从更长的full-length contexts中受益更多;
- 以从另外一个document中得到的context为条件,往往会给masked language model中添加许多noise。
因此,在本文的方法中,作者去掉了NSP objective以及two-segment sampling procedure,并仅仅采样出一个单独的continuous segment(这个segment中至多有512个tokens)。
4. 实验设置
4.1 任务
作者将本文所提出的预训练模型在7个question answering和coreference resolution tasks上,以及9个在GLUE benchmark和relation extraction任务上进行了评测。作者预期这样的一种span-based pre-training能够对span selection tasks(例如,question answering和coreference resolution)带来提升。
4.1.1 Extractive Question Answering
在extractive question answering中,作者使用SQuAD 1.1, SQuAD 2.0以及MRQA shared task对本文的模型进行了评估。其中,作者沿用BERT在QA任务中的使用方法,首先将passage P = ( p 1 , p 2 , . . . , p l ) P=(p_{1}, p_{2}, ..., p_{l}) P=(p1,p2,...,pl) 以及question Q = ( q 1 , q 2 , . . . , q l ′ ) Q=(q_{1},q_{2},..., q_{l{'}}) Q=(q1,q2,...,ql′) 转换为一个单独的sequence X = [ C L S ] p 1 p 2 . . . p l [ S E P ] q 1 q 2 . . . q l ′ [ S E P ] X=[CLS]p_{1} p_{2} ... p_{l}[SEP]q_{1}q_{2}...q_{l{'}}[SEP] X=[CLS]p1p2...pl[SEP]q1q2...ql′[SEP], 然后将其送入pre-trained transformer encoder中,然后在其上分别训练两个线性分类器,从而进行answer span boundary (start和end)的预测。而对于SQuAD 2.0中的unanswerable questions,作者就将answer span默认设置成 [ C L S ] [CLS] [CLS] token。
4.1.2 Coreference Resolution
Coreference Resolution是一种将对应于同一个entity的mentions聚集在一起的任务。本文使用CoNLL-2012 shared task来进行document-level coreference resolution。其中作者首先将document分成多个non-overlapping segments,这些segments都具有相同的(预先定义的)长度。每一个segment都会独立地被本文的pre-trained transformer encoder所编码。对于每一个mention span x x x , 这个模型会去学习一个关于所有可能的antecedent spans Y Y Y 的概率分布 P ( ⋅ ) P(\cdot) P(⋅) :
其中span pair scoring function
s
(
x
,
y
)
s(x,y)
s(x,y) 是一个(在
x
x
x 和
y
y
y 上的)以定长span representations以及hand-engineered features为输入的前馈网络:
其中
g
x
g_{x}
gx 和 g_{y} 表示span representations,
F
F
N
N
m
和
F
F
N
N
c
FFNN_{m}和FFNN_{c}
FFNNm和FFNNc 表示两个前馈神经网络(含有一层的隐含层),
ϕ
(
x
,
y
)
\phi(x, y)
ϕ(x,y) 表示hand-engineered features。
4.1.3 Relation Extraction
在Relation Extraction的任务中,本文采用的是TACRED dataset。在给定一句话以及两个spans(分别代表subject和object)的时候,这个任务需要模型去对这两个spans之间的关系(预先定义的42个关系,包括no_relation)进行预测。本文所采用的方法是,首先将句子中的subject和object替换成它们的NER tags,例如:“[CLS][SUBJ-PER] was born in [OBJ-LOC], Michigan, …”, 然后将一个线性分类器接在[CLS] token的上面,从而进行relation type的预测。
4.1.4 GLUE
此外,作者还在The General Language Understanding Evaluation (GLUE) benchmark上对本文所提出的预训练模型进行了测试。GLUE benchmark上包含了9个sentence-level classification tasks,为了公平比较起见,作者将其中的WNLI任务去掉 (BERT一文中也同样没有做这项任务),并在剩下的8个任务上进行了评估。
4.2 实现
- 训练时用了 Dynamic Masking 而不是像 BERT 预处理时做 Mask;
- 取消 BERT 中随机采样短句的策略;
- 还有对 Adam 优化器中一些参数改变。
4.3 Baselines
Google BERT: Google所提出的BERT模型。
Our BERT: 本文作者对BERT的一种重新实现,其中作者对数据预处理以及优化方法进行了改进。
Our BERT-1seq: 本文作者对BERT的一种重新实现,其中作者使用single full-length sequence(去除NSP)对BERT进行预训练。
5. 实验结果
5.1 预训练任务结果
5.1.1 Extractive Question Answering
5.1.2 Coreference Resolution
5.1.3 Relation Extraction
5.1.4 GLUE
5.2 Overall Trends
- SpanBERT 普遍强于 BERT。
- SpanBERT 尤其在抽取式问答上表现好,这应该与它的预训练目标关系较大。
- 舍弃掉 NSP 的一段长句训练普遍要比原始 BERT 两段拼接的方式要好。
6. Ablation Studies
作者对所提出的random span masking scheme以及span boundary objective(SBO)的效果进行了分析。
6.1 Masking Schemes
下图是random span masking scheme与各类masking linguistically-informed spans的方法(其实就是不同的sample粒度之间的比较,最终在mask的时候都是对subwords进行mask)之间的比较。其中作者沿用的是BERT中的基本设置:
实验结果表明,作者所提出的masking scheme在除了共指消解之外的所有任务上都能达到更优的效果。
6.2 Span Boundary Objective (SBO)
这个实验的结果表明,single-sequence training的确能够提高模型的performance。此外,添加SBO能够进一步提升模型的performance。并且作者发现,与NSP不同的是,SBO不会对模型的performance造成负面的影响。
7. 相关工作
略
8. 结论
本文提出了一种新的方法,它可以用于span-based pretraining。其中,它通过两种方法对BERT进行扩展:(1) masking continuous random spans;(2) 训练span boundary representations,进而对masked span中的整体内容进行预测。
此外,本文所提出的预训练模型在一系列的任务上(尤其是span selection tasks上)超过了所有BERT baselines。