SpanBert 详解


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的一种扩展,这个扩展主要分为两个方面:

  1. (与BERT中对random tokens进行mask不同)本文所提出的模型是对contiguous random spans进行mask。

  2. 对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的不同之处在于三方面:

  1. 首先,本文作者对random contiguous spans(而不是random individual tokens)进行mask。

  2. 其次,本文作者提出了一个span-boundary objective(SBO), 从而使得模型可以通过span两端boundaries处的observed tokens而去让模型对整个masked span进行学习。

  3. 最后,针对每一个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 YX,直到我们达到masking budget( X X X的15%)。在每一次迭代中,我们首先从一个几何分布中采样出一个span length l ∼ G e o ( p ) l\sim Geo(p) lGeo(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} xs1,xe+1 和position embedding p i − s + 1 p_{i-s+1} pis+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} xs1 的相对位置。其中 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} FFNNmFFNNc 表示两个前馈神经网络(含有一层的隐含层), ϕ ( 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 实现

  1. 训练时用了 Dynamic Masking 而不是像 BERT 预处理时做 Mask;
  2. 取消 BERT 中随机采样短句的策略;
  3. 还有对 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

  1. SpanBERT 普遍强于 BERT。
  2. SpanBERT 尤其在抽取式问答上表现好,这应该与它的预训练目标关系较大。
  3. 舍弃掉 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。

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值