返回介绍

数学基础

统计学习

深度学习

工具

Scala

十八、SpanBERT [2019]

发布于 2023-07-17 23:38:25 字数 68971 浏览 0 评论 0 收藏 0

  1. BERT 这样的预训练方法已经显示出强大的性能收益,其中 BERT 使用自监督训练来掩码单个单词或单个子单词单元 subword unit 。然而,许多 NLP 任务涉及对两个或多个文本区间 text span 之间的关系进行推理。例如,在抽取式问答 extractive question answering 任务中,确定 "Denver Broncos""NFL team" 的一种类型,对于回答 "Which NFL team won Super Bowl 50?" 的问题至关重要。这样的 span 为自监督任务提供了更具挑战性的目标,例如,预测 "Denver Broncos" 相比已知下一个词是 "Broncos" 从而预测 "Denver" 要难得多。在论文 《SpanBERT: Improving Pre-training by Representing and Predicting Spans》中,作者介绍了一种 span-level 的预训练方法,其性能一致地优于 BERT ,在span selection 任务(如问答question answering 任务、以及共指消解coreference resolution 任务)中的收益最大。

    论文提出了一种预训练方法,即 SpanBERT ,旨在更好地表示和预测文本的 span 。论文的方法在掩码方案和训练目标上都与BERT 不同。

    • 首先,SpanBERT 掩码随机的 contiguous span ,而不是随机的单个token
    • 其次,SpanBERT 引入了一个新颖的区间边界目标 span-boundary objective: SBO ,使模型学会从 span 边界上观察到的 token 来预测整个 masked span

    span-based masking 迫使模型只使用该 span 的上下文来预测整个 span 。此外,SBO 鼓励模型将这种 span-level 的信息存储在 boundary token 处。下图说明了 SpanBERT 的方法。

    SpanBERT 的实现建立在 BERT 的一个精心调优的副本 replica 上,这个精心调优的 BERT 本身就大大超过了 original BERT 。在论文 baseline 的基础上,作者发现对单个 segment 进行预训练,而不是对 two half-length segment 进行 next sentence prediction: NSP 的目标,大大地提高了大多数下游任务的性能。因此,作者在调优后的 single-sequence BERT baseline 之上添加所提出的修改。

    总之,论文提出的预训练程序产生的模型在各种任务上的表现超过了所有的 BERT baseline ,特别是在 span selection 任务上的性能得到了大幅提高。具体而言, SpanBERTSQuAD 1.1SQuAD 2.0 上分别达到了 94.6% F188.7% F1 ,与论文精心调优的BERT 副本相比,误差减少了 27% 。作者还在另外五个抽取式问答 benchmarkNewsQA, TriviaQA, SearchQA, HotpotQA, Natural Questions)上观察到类似的收益。

    对于 document-level 共指消解,SpanBERT 还在具有挑战性的 CoNLL-2012 ("OntoNotes") 共享任务上达到了新的 SOTA ,其中 SpanBERT 达到了 79.6% F1 ,比之前的 top model 高出 6.6% (绝对提升,而不是相对提升)。最后,论文证明 SpanBERT 对没有显式涉及 span selection 的任务也有帮助,并表明 SpanBERT 甚至提高了 TACREDGLUE 的性能。

    虽然其它工作展示了添加更多数据(《XLNet: Generalized autoregressive pretraining for language understanding》)和增加模型规模(《Cross-lingual language model pretraining》)的好处,但这项工作表明了设计良好的预训练任务和目标的重要性,其中预训练任务和目标也会产生显著的影响。

  2. 相关工作:无标签文本中训练的 pre-trained contextualized word representation 最近对 NLP 产生了巨大的影响,特别是作为一种方法,用于针对特定任务在微调大模型之前先初始化该大模型。除了模型超参数和语料库的差异外,这些方法主要在其预训练任务和损失函数方面有所不同,相当多的当前文献提出了对 BERTMLM 目标进行增强。

    • 虽然以前的、以及同时进行的工作已经研究了 maskingERNIE )或 droppingMASSKERMIT)输入中的多个单词,尤其是作为语言生成任务的预训练。但 SpanBERT 预训练 span representation《Learning recurrent span representations for extractive question answering》),这被广泛用于问答、共指消解、以及各种其他任务。

      • ERNIE 显示了使用 phrase maskingnamed entity masking 对中文 NLP 任务的改进。
      • MASS 专注于语言生成任务,并采用 encoder-decoder framework ,在给定句子剩余部分的情况下重建一个 sentence fragment

      我们试图使用 SBO 目标更显式地建模 span ,并表明(几何分布的)random span masking 的效果与 masking linguistically coherent span 一样好,有时甚至比后者更好。我们在英语 benchmark 上评估了问答、关系抽取、以及共指消解,此外还有 GLUE

    • 此外:

      • 一个不同的 ERNIE《ERNIE: Enhanced language representation with informative entities》)专注于将结构化的知识库与 contextualized representation 相结合,着眼于 entity typingrelation classification 等知识驱动的任务。
      • UNILM 使用多个语言建模目标:单向(包括 left-to-rightright-to-left )、双向、以及 sequence-to-sequence 的预测,从而帮助摘要任务以及问题生成等生成任务。
      • XLM 为翻译和跨语言分类等多语言任务探索了跨语言预训练。
      • Kermit 是一种基于 insertion 的方法,在预训练期间填补 missing token (而不是预测 masked token ),他们显示了在机器翻译和 zero-shot 问答上的改进。
    • 与我们的工作同时:

      • RoBERTa 提出了一个 BERT 预训练的副本研究replication study ,衡量了许多关键超参数和训练数据大小的影响。

      • 同时,XLNet 结合了自回归损失和 Transformer-XL 架构,数据增加了8 倍多,在多个 benchmark 上取得了目前的 SOTA 成果。

        XLNet 在预训练期间也掩码了 span1-5token ),但对它们进行了自回归式的预测。我们的模型侧重于纳入 span-based pretraining ,作为一个副作用,我们提出了一个更强大的 BERT baseline ,在此同时控制了语料库、架构和参数规模。

    • 有些工作与我们的 SBO 目标相关。

      • pair2vec《pair2vec: Compositional word-pair embeddingsfor cross-sentence inference》)在预训练期间使用基于负采样的多变量目标 multivariate objective 来编码 word-pair relation 。然后,word-pair representation 被注入下游任务的注意力层,从而编码了有限的下游上下文。

        pair2vec 不同,我们的 SBO 目标产生 "pair"spanstart tokenend tokenrepresentation,在预训练和微调期间更充分地编码上下文,因此更合适被视为span representation

      • 《Blockwise parallel decoding for deep autoregressive models》 专注于使用 block-wise parallel decoding scheme 提高语言生成速度。他们并行地对多个时间步进行预测,然后退到由一个 scoring model 验证的最长前缀。

      • 与此相关的还有 sentence representation 方法,这些方法侧重于从 sentence embedding 中预测周围上下文。

18.1 模型

18.1.1 BERT 简介

  1. BERT 是一种自监督的方法,用于预训练一个深层的 transformer encoder ,然后再针对特定的下游任务来进行微调。BERT 优化了两个训练目标:掩码语言模型 masked language model: MLM 和下一句预测next sentence prediction: NSP 。这两个训练目标只需要大量的无标记的文本集合。

  2. 给定单词或子词 subword 的一个序列X=(x1,x2,,xn)$ X=(x_1,x_2,\cdots,x_n) $ ,BERT 训练一个编码器,该编码器为每个 token 产生一个 contextualized vector representation

    (1)enc(x1,x2,,xn)=x1,x2,,xn
  3. MLMMLM 也被称为 cloze test ,它的任务是预测序列中的占位符 placeholder 所对应的 missing token 。具体而言, token 的一个子集YX$ Y\sube X $ 被采样,并被不同的 token 集合所取代。在 BERT 的实现中,Y$ Y $ 占X$ X $ 中 token 的比例为的 15% 。在Y$ Y $ 中,80%token 被替换为[MASK]10%token 被替换为 random token (根据 unigram 分布)、10%token 保持不变。任务是根据 modified input 来预测Y$ Y $ 中的 original token

    BERT 通过随机选择一个子集来独立地选择 Y 中的每个 token 。在 SpanBERT 中,我们通过随机选择 contiguous span 来定义Y$ Y $ 。

  4. NSPNSP 任务将两个序列(XA,XB)$ (X_A,X_B) $ 作为输入,并预测XB$ X_B $ 是否是XA$ X_A $ 的直接延续。在 BERT 中是这样实现的:首先从语料库中读取序列XA$ X_A $ ,然后从序列XA$ X_A $ 结束的地方继续读取序列XB$ X_B $ (正样本)、或者从语料库中的一个随机的起点从而随机抽取序列XB$ X_B $ (负样本)。

    这两个序列由一个特殊的 [SEP] token 分开。此外,一个特殊的 [CLS] token 被添加到拼接序列(XA$ X_A $ 和XB$ X_B $ 拼接)的开头从而形成 input ,其中 [CLS]target 是:XB$ X_B $ 在语料库中是否确实紧跟在XA$ X_A $ 之后。

  5. 总之,BERT 通过在双序列 bi-sequence 采样程序产生的数据中均匀地随机掩码 word piece ,同时优化了 MLMNSP 目标。接下来,我们将介绍我们对 data pipeline、掩码、以及预训练目标的修改。

18.1.2 SpanBERT

  1. 我们提出了 SpanBERT,这是一种自监督的预训练方法,旨在更好地表达和预测文本的span 。我们的方法受到 BERT 的启发,但在三个方面偏离了BERTbi-text classification framework

    • 首先,我们使用不同的随机程序来掩码 span of tokens ,而不是掩码单个 token
    • 其次,我们还引入了一个新颖的辅助目标(即,span-boundary objective: SBO),该目标试图仅使用 span’s boundarytokenrepresentation 来预测整个 masked span
    • 最后,SpanBERT 对每个训练实例采样单个 contiguous segment (而不是两个),因此没有使用 BERTnext sentence prediction 目标。
  2. Span Masking:给定一个 token 序列X=(x1,x2,,xn)$ X = (x_1, x_2, \cdots , x_n) $ ,我们通过迭代地采样文本的span 从而选择 token 的一个子集YX$ Y\sube X $ ,直到 masking budget (例如,X$ X $ 的 15% )耗尽。在每轮迭代中:

    • 首先,我们从一个几何分布lGeo(p)$ l\sim \text{Geo}(p) $ 中采样一个 span lengthtoken 数量),该分布偏向于较短的 span
    • 然后,我们随机地(均匀地)选择 masked span 的起点。我们总是采样完整单词(而不是 subword token )的序列,而且起点必须是一个完整单词的开头。

    根据初步试验,我们设定p=0.2$ p=0.2 $ ,并且在lmax=10$ l_\max=10 $ 的地方截断l$ l $ 。这产生了一个平均 span lengthmean(l)=3.8$ \text{mean}(l) = 3.8 $ 。下图显示了 span mask length 的分布。

    几何分布Geo(p)$ \text{Geo}(p) $ 定义为:在n$ n $ 次伯努利试验中,单次成功的概率为p$ p $ ,那么前k1$ k-1 $ 次都失败、第k$ k $ 次成功的概率为几何分布:f(k)=(1p)k1p$ f(k)=(1-p)^{k-1}p $ 。

    这里的 3.8 的计算过程为:l=110l×f(l)l=110f(l)$ \frac{\sum_{l=1}^{10} l\times f(l)}{\sum_{l=1}^{10} f(l)} $ 。

    BERT 一样,我们也掩码了总共 15%token ,其中:80%masked token[MASK] 替换、10%masked tokenrandom token 替换、10%masked token 保持 original token 不变。然而,我们是在 span-level 进行这种替换,而不是对每个 token 独立地进行替换。也就是说,一个 span 中的所有 token 都被替换成 [MASK]random token、或者保持不变。

    平均序列长度为 3.8/0.15=25.3

  3. Span Boundary Objectivespan selection model 通常使用span boundary tokens (开始和结束)创建一个固定长度的 representation 。为了支持这样的模型,我们希望 end of spanrepresentation 能够尽可能多地总结 internal span content 。我们通过引入一个 span boundary objective 来做到这一点,该目标涉及仅仅使用span 边界上所观察到的 tokenrepresentation 来预测 masked span 的每个 token

    正式地,我们用x1,x2,,xn$ \mathbf{\vec x}_1,\mathbf{\vec x}_2,\cdots,\mathbf{\vec x}_n $ 表示序列中每个 tokentransformer encoder 的输出。给定一个由 token(xs,,xe)Y$ (x_s, \cdots,x_e) \in Y $ 组成的 masked span ,其中(s,e)$ (s,e) $ 表示masked span 的开始位置和结束位置(即,两个端点),我们使用外部的 boundary tokenxs1$ \mathbf{\vec x}_{s-1} $ 和xe+1$ \mathbf{\vec x}_{e+1} $ 、以及 target tokenposition embeddingpis+1$ \mathbf{\vec p}_{i-s+1} $ ,来表达 span 中的每个 tokenxi$ x_i $ :

    (2)yi=f(xs1,xe+1,pis+1)

    注意,在 BERTMLM 目标中,隐式地用到了 target tokenposition 信息(通过在 [MASK] tokentoken embedding 上添加 positional embedding)。

    其中:

    • position embeddingp1,p2,$ \mathbf{\vec p}_1,\mathbf{\vec p}_2,\cdots $ 标志着 masked token 相对于 left boundary tokenxs1$ x_{s-1} $ 的相对位置。

      注意,BERT 采用了 absolute positional embedding,而这里是 relative positional embedding ,因此 SpanBERT 需要两套 positional embedding

    • 我们将 representation functionf()$ f(\cdot) $ 实现为一个具有 GeLU 激活函数 和 layer normalization 的两层前馈神经网络:

      (3)h0=[xs1;xe+1;pis+1]h1=LayerNorm(GeLU(W1h0))yi=LayerNorm(GeLU(W2h1))

      其中:[;]$ [;] $ 表示向量拼接,W1,W2$ \mathbf W_1,\mathbf W_2 $ 为待学习的参数。

    然后我们使用 vector representationyi$ \mathbf{\vec y}_i $ 来预测 tokenxi$ x_i $ ,并计算交叉熵损失,这完全与 MLM 目标一样。

    SpanBERTmasked span(xs,,xe)$ (x_s,\cdots,x_e) $ 中的每个 tokenxi$ x_i $ 的 SBO 损失函数和常规的 MLM 损失函数进行求和,同时对 MLMSBOtarget token 复用 input embedding

    (4)L(xi)=LMLM(xi)+LSBO(xi)=logP(xixi)logP(xiyi)

    MLM 目标利用了所有 unmasked token 作为上下文,而 SBO 仅使用 boundary token 作为上下文,因此理论上 MLM 的信息更丰富。SBO 迫使模型更关注 boundary token ,是 MLM 的一种特殊的 case ,所以是否可以泛化 MLM 从而支持 SBO

  4. Single-Sequence Training:如前所述,BERT 的样本包含两个文本序列(XA,XB)$ (X_A,X_B) $ ,以及一个 next sentence prediciton: NSP 目标。我们发现,这种 setting 几乎总是比简单地使用没有 NSP 目标的单一序列要差。我们猜想,单序列训练 single-sequence training 优于带有NSP 的双序列训练 bi-sequence training ,有两个原因:

    • 在单序列训练中,模型从较长的 full-length 上下文中获益。
    • 在双序列上下文中,以另一个文档中的、通常不相关的上下文为条件,会给 MLM 增加噪音。

    因此,在我们的方法中,我们取消了 NSP 目标和 two-segment 采样程序,而只是简单地采样单个 contiguous segment 直到n=512$ n = 512 $ 个 token ,而不是两个 half-segment 加起来n$ n $ 个 token

  5. 总之,SpanBERT 通过以下方式预训练 span representation

    • 使用基于几何分布的掩码方案来掩蔽 full wordspan
    • 除了使用单序列 data pipelineMLM 之外,还优化了一个辅助的 span-boundary objective: SBO

    预训练程序如下:

    • 将语料库划分为单个的、长度为 512 tokencontiguous block

    • 在预训练的每个 step

      • 均匀随机地采样 block 的一个 batch
      • 基于 span masking 方案对每个 block 掩码 15%word piece
      • 对每个 masked tokenxi$ x_i $ ,优化L(xi)=LMLM(xi)+LSBO(xi)$ \mathcal L(x_i) = \mathcal L_\text{MLM}(x_i) + \mathcal L_\text{SBO}(x_i) $ 。

18.2 实验

18.2.1 任务

  1. 我们对一组任务进行了评估,包括问答任务(七个)、共指消解任务、 GLUE benchmark 中的任务(九个)、以及关系抽取任务。我们预期,span selection 任务、问答、以及共指消解,将特别受益于我们的 span-based 预训练。

  2. 抽取式问答 Extractive Question Answering:给定一个短的文本段落和一个问题作为输入,抽取式问答任务是选择文本段落中连续的一个 text span 作为答案。

    我们首先在 SQuAD 1.1SQuQD 2.0 上进行评估,它们一直是主要的问答任务 benchmark ,尤其是对于预训练模型。

    我们另外还在 MRQA 共享任务的五个数据集上进行评估:NewsQASearchQATriviaQAHotpotQANatural Questions。由于 MRQA 共享任务没有公开的测试集,我们将验证集一分为二,构建为新的验证集和测试集。这些数据集在领域 domain 和收集方法上都有所不同,这使得这些数据集成为一个很好的测试平台,用于评估我们的预训练模型是否能在不同的数据分布中很好地进行泛化。

    遵从 BERT ,我们对所有的数据集使用相同的 QA 模型架构:

    • 首先,我们将段落P=(p1,p2,,plp)$ P=(p_1,p_2,\cdots,p_{l_p}) $ 和问题Q=(q1,q2,,qlq)$ Q=(q_1,q_2,\cdots,q_{l_q}) $ 转换为单个序列X=[CLS]p1p2plp[SEP]q1q2qlq[SEP]$ X=\text{[CLS]}p_1p_2\cdots p_{l_p} \text{[SEP]} q_1q_2\cdots q_{l_q}\text{[SEP]} $ 。

    • 然后,我们将序列X$ X $ 馈入 pre-trained transformer encoder ,并在其之上独立训练两个线性分类器,用于预测 answer span boundary(开始点和结束点)。

      对于 SQuAD 2.0 中的不可回答的问题,我们只需将 answer span 设置为 [CLS] 这个 special token (即,开始点和结束点都是 0 )。

  3. 共指消解 Coreference Resolution:共指消解是对文本中的 mention 进行聚类的任务,这些 mention 引用相同的现世界实体。我们对 CoNLL-2012 共享任务进行了评估,用于 document-level 的共指消解。我们使用 《BERT for coreference resolution: Baselines and analysis》的高阶共指模型 higher-order coreference model《Higher-order coreference resolution with coarse-to-fine inference》)的独立版本实现。文档被划分为预定义长度的 non-overlapping segment 。每个 segment 由预训练的 transformer encoder 独立编码,它取代了原来的 LSTM-based encoder 。对于每个 mention spanx$ \mathbf x $ ,该模型在可能的 antecedent span 集合Y$ \mathcal Y $ 上学习一个分布P()$ P(\cdot) $ :

    (5)P(y)=exp(s(x,y))yYexp(s(x,y))

    span pair 评分函数s(x,y)$ s(\mathbf x,\mathbf y) $ 是一个前馈神经网络,它作用在固定长度的 span representation 、以及x,y$ \mathbf x,\mathbf y $ 的人工设计的特征之上:

    (6)s(x,y)=sm(x)+sm(y)+sc(x,y)Rsm(x)=FFNNm(gx)Rsc(x,y)=FFNNc(gx,gy,ϕ(x,y))R

    其中:

    • x$ \mathbf x $ 为一个 span,它包含多个连续的 tokeny$ \mathbf y $ 也为一个 span,它也包含多个连续的 token
    • gx,gy$ \mathbf{\vec g}_\mathbf x ,\mathbf{\vec g}_\mathbf y $ 分别表示 span representation。一个 span representationspan 两个端点所对应的两个 transformer output state 、以及一个 attention vector (它在当前 span 种所有 tokenoutput representation 上计算而来)的拼接。
    • FFNNm()$ \text{FFNN}_m(\cdot) $ 和FFNNc$ \text{FFNN}_c $ 分别代表两个具有单隐层的前馈神经网络。
    • ϕ(x,y)$ \phi(\mathbf x, \mathbf y) $ 代表人工设计的特征(如,speaker 和题材的信息)。

    sc(,)$ s_c(\cdot,\cdot) $ 可以理解为两个 span 的交互,sm()$ s_m(\cdot) $ 可以理解为 spanbias

  4. 关系抽取 Relation ExtractionTACRED 是一个具有挑战性的关系抽取数据集。给定一个句子和其中的两个 span (主语和宾语),任务是从 42 种预定义的关系类型中预测 span 之间的关系,包括 no relation

    我们遵循 《Position-aware attention and supervised data improve slot filling》entity masking 方案,用他们的NER tag 替换主语实体和宾语实体,如 "[CLS] [SUBJ-PER] was born in [OBJ-LOC] , Michigan, . . . ",最后在 [CLS] token 之上添加一个线性分类器来预测关系类型。

  5. GLUEGeneral Language Understanding Evaluation: GLUE 基准包括九个 sentence-level 分类任务:

    • 两个 sentence-level 分类任务,包括:

      • CoLA:用于评估语言可接受性 linguistic acceptability
      • SST-2:用于情感分类 sentiment classification
    • 三个 sentence-pair similarity 任务,包括:

      • MRPC,一个二元转述任务 binary paraphrasing task,其中 sentence pair 来自于新闻。
      • STS-B ,一个分级的相似性 graded similarity task 任务,其中 sentence pair 来自于新闻标题。
      • QQP ,一个二元转述任务 binary paraphrasing task,其中 sentence pair 来自于 Quora question pair
    • 四个自然语言推理任务,包括 MNLI, QNLI, RTE, WNLI

    与问答、共指消解和关系抽取不同,这些 sentence-level 任务不需要显式建模 span-level 语义。然而,它们仍然可能受益于隐式的 span-based 推理(例如,首相 Prime Minister 是政府首脑)。遵从之前的工作,我们将 WNLI 排除在结果之外,以便进行公平比较。虽然最近的工作 《Multi-task deep neural networks for natural language understanding》应用了几个 task-specific 策略来提高单个 GLUE 任务的性能,但我们遵循 BERT 的单任务设置,仅仅这些分类任务的 [CLS] token 之上添加了一个线性分类器。

18.2.2 实现

  1. 我们在 fairseq 中重新实现了 BERT 的模型和预训练方法。我们使用了 BERT_large的模型配置,也在相同的语料库上(即,BooksCorpusEnglish Wikipedia,使用带大小写的 Wordpiece token )预训练了我们所有的模型。

    与原始的 BERT 实现相比,我们的实现的主要区别包括:

    • 我们在每个 epoch 中使用不同的掩码(即,动态掩码),而 BERT 在数据处理期间为每个序列采样 10 个不同的掩码。

    • 我们删除了之前使用的所有短序列策略,这些短序列策略包括(被 BERT 所采用):

      • 0.1 的小概率采样较短的序列。
      • 首先在前 90% 的训练步中以 128 的较短序列进行预训练,然后在剩下的 10% 的训练步中以正常序列长度进行预训练。

      取而代之的是,我们总是采用高达 512 token 的序列,直到序列到达一个文档边界。

    关于这些修改及其影响,我们请读者参考 RoBERTa 原始论文的进一步讨论。

  2. BERT 一样,学习率在前 10K 步中被预热到 1e-4 的峰值,然后线性衰减。我们采用了β$ \beta $ 超参数(β1=0.9,β2=0.999$ \beta_1=0.9, \beta_2=0.999 $ )和 0.1decoupled weight decay《Decoupled weight decay regularization》)。我们还在所有层和注意力权重上采用 0.1dropout ,以及 GeLU 激活函数。我们采用 AdamW 优化器,其中 epsilon = 1e-8 ,迭代 2.4M 步。我们的实现使用 batch size = 256,序列最大长度为 512 token

    传统的 weight decay

    (7)θt+1=(1λ)θtηL(θt)

    λ$ \lambda $ 为 weight decay 系数。在常规 SGD 的情况下,weight decay 等价于 L2 正则化。

    但是,在 Adam 等方法中,L2 正则化与 weight decay 并不等价。因此人们提出 decoupled weight decay 从而用于 Adam 等方法。

    预训练是在 32Volta V100 GPU 上进行的,花了 15天时间完成。微调是基于 HuggingFace 的代码库实现的,更多的微调细节如下:

    • 抽取式问答:对于所有的问答任务,我们使用 max_seq_length = 512,以及一个大小为 128 的滑动窗口(如果序列长度大于 512 )。

      对于所有的数据集,我们调优的学习率范围是:{5e-6, 1e-5, 2e-5, 3e-5, 5e-5};调优的 batch size 范围是:{16, 32} ;微调四个 epoch

    • 共指消解:我们将文档划分为多个块 chunk,每个块的长度为 max_seq_length 并且独立地编码每个块。

      对于所有的数据集,我们调优的 max_seq_length 范围是:{128, 256, 384, 512};调优的 BERT 学习率范围是:{1e-5, 2e-5} ;调优的 task-specific 学习率范围是:{1e-4, 2e-4, 3e-4} ;微调 20epoch

      我们使用 batch size = 1 (每次一篇文档)。

    • TACRED/GLUE:对于所有数据集,我们使用 max_seq_length = 128,调优的学习率范围是:{5e-6, 1e-5, 2e-5, 3e-5, 5e-5} ;调优的 batch size 范围是:{16, 32} ;微调 10epoch

      唯一的例外是 CoLA 数据集,我们为它微调 4epoch,因为 10epoch 会导致严重的过拟合。

18.2.3 Baseline

  1. 我们将 SpanBERT 和如下三个 baseline 进行比较:

    • Google BERT:由 《BERT: Pre-training of deep bidirectional transformers for language understanding》 发布的预训练模型。
    • Our BERT:我们重新实现的 BERT,其中改进了数据预处理和优化过程(如,动态掩码,废除短序列策略)。
    • OurBERT-1seq:我们重新实现的另一个版本的 BERT,其中在单个 full-length 序列上训练而没有NSP 任务。

18.2.4 实验结果

  1. Extractive Question Answering:下表展示了在 SQuAD 1.1SQuAD 2.0 上的实验结果。SpanBERT 分别比 Our BERT 高出 2.0% F12.8% F1 ,比 Google BERT 高出 3.3% F15.4% F1 。在 SQuAD 1.1 中,SpanBERT 超出人类性能 3.4% F1

    此外,OurBERT-1seq > Our BERT > Google BERT

    下表表明,这一趋势不仅在 SQuAD 上成立,在每个 MRQA 数据集上也成立。可以看到:

    • 平均而言,我们看到 SpanBERT 超越了 Our BERT 高达 2.9%,尽管其中的一些改进来自于 single-sequence training+1.1%),但大部分改进来自于 span maskingspan boundary objective+1.8%)。
    • 此外,SpanBERTTriviaQAHotpotQA 上相对于 Our Bert-1seq 有特别大的改进,分别高达 +3.2%+2.7% 。这意味着 span maskingspan boundary objective 起到了重要作用。

  2. Coreference Resolution: 下表显示了 OntoNotes 共指消解 benchmark 上的实验结果。可以看到:

    • 平均而言, Our BERT 相比 Google BERT 提高了 1.2% F1,而 single-sequence training (即,Our BERT-1seq)相比于 Our BERT 又带来了 0.5% 的收益。
    • SpanBERTOur BERT-1seq 的基础上又有了很大的提高,达到了一个新的 SOTA 结果 79.6% F1 (之前的 SOTA 结果是 73.0% )。

  3. Relation Extraction:下表显示了 TACRED 上的实验结果。可以看到:

    • SpanBERTOur BERT 高出 3.3% F1 ,并接近目前的 SOTASpanBERT 比他们的 BERT_EM 表现更好,但比 BERT_EM + MTB0.7 分,后者使用 entity-linked text 进行额外的预训练。

    • SpanBERT 超出 Our BERT 的增益的大部分(+2.6% F1 )来自于 single-sequence training ,尽管 span maskingspan boundary objective 的贡献也是可观的 (0.7% F1)。而 span maskingspan boundary objective 的贡献主要来自于更高的召回率(即 R 列)。

      single-sequence training 的贡献主要来自于更高的 precision

  4. GLUE:下表展示了 GLUE 上的实验结果。可以看到:

    • 对于大多数任务,不同的模型似乎表现相似。
    • 没有 NSP 目标的 single-sequence training 大大改善了 CoLA ,并在 MRPCMNLI 上产生了较小(但是仍然可观)的改善。
    • SpanBERT 的主要收益是在 QNLI 数据集( +1.3% ,它基于 SQuAD )、以及 RTE 数据集(+6.9%),后者是 SpanBERTGLUE 平均分上升的主要原因。

  5. 总体趋势:我们在 17benchmark 上将我们的方法与三个 BERT 版本进行了比较,发现 SpanBERT 在几乎每个任务上都优于BERT

    • 14 项任务中,SpanBERT 的表现优于所有 baseline
    • 在两项任务(MRPCQQP )中,SpanBERT 的准确率与 single-sequence 训练的 BERT 相当,但仍优于其他 baseline
    • 在一项任务(SST-2 )中, Google BERTSpanBERT 的准确率高 0.4%

    当考虑到增益的大小时,似乎 SpanBERT 在抽取式问答方面特别好。例如:

    • SQuAD 1.1 中,我们观察到 2.0% F1 的增益,尽管 baseline 已经远远高于人类的表现。
    • MRQA 中,SpanBERTOur BERT 的基础上提高了从 2.0% F1Natural Questions )到 4.6% F1TriviaQA)。

    最后,我们观察到,在各种任务中,single-sequence training 比带有 NSPbi-sequence training ,在效果上要好得多。这是令人惊讶的,因为 BERT 的消融研究显示了来自 NSP 目标的收益。然而,消融研究仍然涉及 bi-sequence 的数据处理(即,预训练阶段只控制 NSP 目标,同时仍然采样两个 half-length 的序列)。我们猜测:bi-sequence training,正如它在BERT 中实现的那样,阻碍了模型学习较长距离的特征,并因此损害了许多下游任务的性能。

18.2.5 消融研究

  1. 我们将我们的 random span masking 方案与 linguistically-informed masking 方案进行比较,发现 masking random span 是一种有竞争力的、并且通常是更好的方法。然后,我们研究了SBO 的影响,并将其与 BERTNSP 目标进行对比。

  2. 掩码方案:以前的工作 ERNIE 表明,在中文数据的预训练中,通过掩码 linguistically informed span ,改善了下游任务的表现。我们将我们的 random span masking 方案与linguistically informed span 掩码进行比较。具体而言,我们训练了以下五种 baseline 模型,它们的区别仅仅在于 token 的掩码方式:

    • Subword Tokens:我们采样随机的 Wordpiece token ,就像在 original BERT 中一样。

    • Whole Words:我们采样随机的单词,然后掩码这些单词中的所有 subword tokenmasked subword token 总共占所有 token15%

    • Named Entities:在 50% 的时间里,我们从文本中采样命名实体,而在剩下 50% 的时间里随机采样全词 whole wordmasked subword token 总共占所有 token15%

      具体而言,我们在语料库上运行 spaCynamed entity recognizer ,并选择所有非数值型的命名实体作为候选。

    • Noun Phrases:与 Named Entities 类似,我们在 50% 的时间内采样名词短语。名词短语是通过 spaCy’s constituency parser 抽取的。

    • Geometric Spans:我们从几何分布中随机采样 span ,如我们的 SpanBERT 所示。

    Whole Words, Named Entities, Noun Phrases, Geometric Spans 都是 span-based 掩码策略。

    下表显示了不同的预训练掩码方案在不同任务验证集上的效果。所有的模型都是在验证集上评估的,并且是基于默认的 BERT 设置(即带 NSPbi-sequence training ),其结果不能直接与 main evaluation 相比较。可以看到:

    • 除了共指消解之外,masking random span 比其他策略更好。

      尽管 linguistic masking 方案(命名实体和名词短语)通常与 random span 的竞争力相当,但它们的性能并不是一致 consistent 的。例如,在 NewsQA 上,masking noun phrase 实现了与 random span 相同的效果,但在 TriviaQA 上表现不佳(-1.1% F1 )。

    • 在共指消解方面,masking random subword token 比任何形式的 span masking 都要好。然而,我们将在下面的实验中看到,将 random span maskingspan boundary objective 相结合可以大大改善这一结果。

    总体而言,这些掩码方案的差距不大。

  3. 辅助目标:如前所述,与 single-sequence training 相比,带 NSP 目标的 bi-sequence training 会损害下游任务的性能。 我们测试了这一点对于用 span masking 预训练的模型是否成立,同时也评估了用 SBO 目标替代 NSP 目标的效果。

    下表证实了 single-sequence training 通常会提高性能。加入 SBO 可以进一步提高性能,与 span masking alone 相比,共指消解有很大的提高( +2.7% F1 )。不像 NSP 目标,SBO 似乎没有任何不利影响。

    SBO 对模型性能提升的幅度不大,同时 Geometric Spans 对模型性能提升的幅度也不大,但是 SpanBERT 整体相对于 Google BERT 的性能提升较大。这意味着数据预处理和优化过程(如,动态掩码,废除短序列策略)的影响也较大。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文