【论文阅读】RoBERTa: A Robustly Optimized BERT Pretraining Approach[arXiv2019]
论文地址:https://arxiv.org/pdf/1907.11692.pdf
代码地址(Pytorch):https://github.com/pytorch/fairseq
1 Introudce
我们提出了一项BERT预训练的复制研究(Devlin等人,2019年),其中包括仔细评估超参数调节和训练集大小的影响。我们发现BERT的训练明显不足,并提出了一种改进的训练BERT模型的方法,我们称之为RoBERTa,它可以匹配或超过所有后BERT方法的性能。我们的修改很简单,包括:(1)训练模型的时间更长,批量更大,数据更多(2) 删除下一句预测目标(3) 长序列训练;以及(4)动态地改变应用于训练数据的mask pattern。我们还收集了一个与其他私人使用的数据集大小相当的大型新数据集(CC-NEWS),以更好地控制训练集大小的影响。
我们的模型建立了4/9 GLUE任务的最新水平:MNLI, QNLI, RTE和STS-B。我们也匹配最先进的结果在SQuAD和RACE。其余几项任务通过调整也有可能取得更好的结果,留给未来工作。
综上所述,本文的贡献如下:(1)我们提出了一套重要的BERT设计选择和训练策略,并引入了可导致更好的下游任务绩效的替代方案;(2)我们使用了一个新的数据集CC-NEWS,并确认使用更多的数据进行预训练可以进一步提高下游任务的性能;(3)我们的训练改进表明,在正确的设计选择下,掩码语言模型预训练方法与最近发布的其他方法相比具有很强的竞争力。我们发布了在PyTorch中实现的模型、预训练和微调代码(Paszke et al., 2017)。
BERT training object:MLM+NSP(next sentence prediction)
在最初的实现中,随机掩蔽和替换在开始时执行一次,并在训练期间保存,尽管在实践中,数据是重复的,因此每个训练句子的掩蔽并不总是相同的(参见4.1节)。NSP的目标是提高下游任务的表现,如自然语言推理(Bowman et al., 2015),这需要对句子对之间的关系进行推理。
2.4 Optimization
BERT is optimized with Adam (Kingma and Ba, 2015) using the following parameters:$β_1= 0.9$, $β_2 = 0.999$, $\epsilon = 1e-6$ and $L_2$ weight decay of 0.01. The learning rate is warmed up over the first 10,000 steps to a peak value of 1e-4, and then linearly decayed. BERT trains with a dropout of 0.1 on all layers and attention weights, and a GELU activation function (Hendrycks and Gimpel, 2016). Models are pretrained for S = 1,000,000 updates, with minibatches containing $B = 256$ sequences of maximum length $T = 512$ tokens.
3 Experimental Setup
In this section, we describe the experimental setup for our replication study of BERT.
3.1 Implementation
我们在$FAIRSEQ$中重新实现BERT (Ott et al., 2019)。我们主要遵循第2节中给出的原始BERT优化超参数,除了峰值学习率和热身warmup步骤的数量,它们分别针对每个设置进行了调整。我们还发现训练对Adam项非常敏感,在某些情况下,我们在调优它后获得了更好的性能或改善了稳定性。同样,我们发现设置$β_2= 0.98$可以提高大批量训练的稳定性。
我们用最多$T = 512$个令牌的序列进行预训练。与Devlin等人(2019)不同,我们没有随机注入短序列,我们也没有在前90%的更新中使用缩减的序列长度进行训练。我们只使用全长度序列进行训练。
我们在DGX-1机器上使用混合精度浮点运算进行训练,每台机器使用8 × 32GB的英伟达V100 gpu,通过Infiniband互连(Micikevicius et al., 2018)。
3.2 Data
伯特式BERT-style的预训练主要依赖于大量的文本。Baevski等人(2019)证明,增加数据大小可以改善最终任务性能。一些研究已经在比原始BERT更大、更多样化的数据集上进行了训练(Radford et al., 2019;Yang et al., 2019;Zellers等人,2019)。不幸的是,并不是所有的附加数据集都可以公开发布。在我们的研究中,我们专注于收集尽可能多的数据用于实验,使我们能够在每次比较中匹配数据的总体质量和数量。
我们考虑了五个不同大小和领域的英语语料库,总计超过160GB的未压缩文本。我们使用以下文本语料库:
1.BOOKCORPUS (Zhu et al., 2015) plus English WIKIPEDIA. This is the original data used to train BERT. (16GB).
2.CC-NEWS, which we collected from the English portion of the CommonCrawl News dataset (Nagel, 2016). The data contains 63 million English news articles crawled between September 2016 and February 2019. (76GB after filtering)
3.OPENWEBTEXT (Gokaslan and Cohen, 2019), an open-source recreation of the WebText corpus described in Radford et al. (2019). The text is web content extracted from URLs shared on Reddit with at least three upvotes. (38GB).
4.STORIES, a dataset introduced in Trinh and Le (2018) containing a subset of CommonCrawl data filtered to match the story-like style of Winograd schemas. (31GB).
3.3 Evaluation
评价标准:
GLUE
SQuAD:对于SQuAD V1.1,我们采用与BERT (Devlin et al., 2019)相同的跨度预测方法。对于SQuAD V2.0,我们添加了一个额外的二元分类器来预测问题是否可回答,我们通过求和分类和跨度损失项共同训练它。在评估过程中,我们只预测了分类为可回答的对的跨度指数。
RACE:考试阅读理解(RACE) (Lai et al., 2017)任务是一个大型阅读理解数据集,包含28,000多篇文章和近100,000个问题。数据集来自中国的英语考试,专为初高中学生设计。在RACE中,每一篇文章都与多个问题相关。对于每个问题,任务是从四个选项中选择一个正确答案。RACE比其他流行的阅读理解数据集有更长的上下文,并且需要推理的问题的比例非常大。
4 Training Procedure Analysis
本节探讨并量化哪些选择对于成功训练BERT模型是重要的。我们保持模型架构不变具体来说,我们首先使用与$BERT_{BASE}$相同的配置(L = 12, H = 768, A = 12, 110M参数)来训练BERT模型。
4.1 Static vs. Dynamic Masking
正如第2节所讨论的,BERT依赖于随机掩蔽和预测标记。原始BERT实现在数据预处理期间执行一次屏蔽,从而产生一个静态屏蔽。为了避免对每个epoch中的每个训练实例使用相同的掩码,训练数据被重复10次,以便在40个训练epoch中,每个序列以10种不同的方式被掩码。因此,在训练过程中,每个训练序列使用相同的掩码观看四次。
我们将此策略与动态掩蔽进行比较,动态掩蔽每次向模型提供序列时都生成掩蔽模式mask pattern。当进行更多步骤或更大数据集的预训练时,这就变得至关重要。
Results
表1将Devlin等人(2019年)公布的$BERT_{BASE}$ results与我们采用静态或动态掩蔽的重新实施进行了比较。我们发现,我们用静态掩蔽重新实现的性能与原始的伯特模型相似,并且动态掩蔽略优于静态掩蔽。
鉴于这些结果和动态掩蔽的额外效率优势,我们在其余的实验中使用动态掩蔽。
4.2 Model Input Format and Next Sentence Prediction
在原始的BERT预训练过程中,模型观察到两个串联的文档段,它们要么从同一文档($p=0.5$)连续采样,要么从不同的文档采样。除了蒙面语言建模目标外,还通过辅助下一句预测(NSP)损失对模型进行训练,以预测观察到的文档片段是否来自相同或不同的文档。
假设NSP损失是训练原始BERT模型的一个重要因素。Devlin等人(2019年)观察到,移除NSP会损害绩效,QNLI、MNLI和SQuAD1.1的绩效显著下降。然而,最近的一些研究质疑了NSP损失的必要性(Lample和Conneau,2019;杨等人,2019年;Joshi等人,2019年)。
比较了几种训练目标:
SEGMENT-PAIR+NSP: 这遵循BERT (Devlin et al., 2019)中使用的原始输入格式,有NSP损失。每个输入都有两段a pair of segments,每个段可以包含多个自然句子,但总长度必须小于512个标记。
SENTENCE-PAIR+NSP: 每个输入包含一对自然句子,可以从一个文档的连续部分采样,也可以从单独的文档中采样。由于这些输入明显短于512个令牌,因此我们增加了批大小,以便令牌的总数与段对+NSP相似。我们保留NSP损失。
FULL-SENTENCES:每个输入都包含从一个或多个文档中连续采样的完整句子,因此总长度最多为512个标记。输入可能跨越文档边界。当我们到达一个文档的末尾时,我们开始从下一个文档中抽取句子,并在文档之间添加一个额外的分隔符标记。我们消除了NSP损失。【去除了NSP,而是每次输入连续的多个句子,直到最大长度512(可以跨文章),而原来的Bert每次只输入两个句子。实验表明在MNLI这种推断句子关系的任务上RoBERTa也能有更好性能。】
DOC-SENTENCES:输入的构造类似于完整句子,只是它们不能跨越文档边界。在文档末尾附近采样的输入可能短于512个标记,因此在这些情况下,我们动态增加批处理大小,以获得与Full-Sequences相似的总标记数。我们消除了NSP损失。

表2显示了四种不同设置的结果。我们首先将Devlin等人(2019)的原始段对SEGMENT-PAIR输入格式与句子对SENTENCE-PAIR格式进行比较;两种格式都保留NSP损失,但后者使用单句。我们发现使用单个句子会影响下游任务的表现,我们假设这是因为该模型无法学习长期依赖关系。
接下来,我们比较无NSP loss的培训和使用单个文档中的文本块(DOC-sequences)的培训。我们发现,与Devlin等人(2019年)相比,该设置优于最初发布的$BERT_{BASE}$ results,移除NSP损失匹配或略微改善下游任务性能。原始的BERT实现可能只删除了丢失项,而仍然保留段对输入格式。It is possible that the original BERT implementation may only have removed the loss term while still retaining the SEGMENT-PAIR input format.
最后,我们发现限制来自单个文档的序列(DOC-sequences)比打包来自多个文档的序列(FULL-sequences)的性能稍好。然而,由于DOC-sequences格式会导致不同的批量大小,因此我们在剩下的实验中使用full-seqences,以便于与相关工作进行比较。
4.3 Training with large batches

在表3中,我们比较了$Bert_{base}$的困惑度和最终任务性能,因为我们增加了批量大小,控制了通过训练数据的次数。我们观察到,大批量训练提高了蒙面语言建模目标的复杂性,以及最终任务的准确性。通过分布式数据并行训练,大批量也更容易并行化,在以后的实验中,我们使用8K序列进行批量训练。
值得注意的是,You等人(2019年)用更大的批次大小训练BERT,最多32K序列。我们将进一步探索大批量培训的局限性留给未来的工作。
4.4 Text Encoding
字节对编码(BPE,Byte-Pair Encoding)(Sennrich et al.,2016)是字符级和单词级表示的混合,允许处理自然语言语料库中常见的大型词汇表。BPE依赖于子词单元,而不是完整的词,子词单元是通过对训练语料库进行统计分析来提取的。
BPE词汇表的大小通常在10K-100K子单词单位之间。然而,在建模大型和多样的语料库时,unicode字符可以占这个词汇表中相当大的一部分,比如本文中考虑的语料库。Radford et al.(2019)介绍了一种巧妙的BPE实现,它使用字节而不是unicode字符作为基本子字单元。使用字节可以学习中等大小(50K个单位)的子单词词汇表,它仍然可以对任何输入文本进行编码,而不引入任何“未知”标记。
最初的BERT实现(Devlin et al.,2019)使用大小为30K的字符级BPE词汇表,该词汇表是在使用启发式标记化规则预处理输入后学习的 which is learned after preprocessing the input with heuristic tokenization rules。在Radford等人(2019)之后,我们考虑用更大的字节级的BPE词汇来训练BERT,其中包含50K的子字单位subword units,而不需要任何额外的预处理或令牌化。这分别为$BERT_{BASE}$和$BERT_{LARGE}$增加了约15M和20M的额外参数。
早期的实验表明,这些编码之间只有细微的差异,Radford等人(2019年)的BPE在某些任务上的最终任务性能稍差。尽管如此,我们相信通用编码universal encoding方案的优势超过了性能上的微小下降,并在我们剩余的实验中使用这种编码。这些编码的更详细的比较留待以后的工作进行。
5 RoBERTa
在上一节中,我们建议对BERT预训练程序进行修改,以提高最终任务的性能。我们现在汇总这些改进并评估其综合影响。We call this configuration RoBERTa for Robustly optimized BERT approach。具体而言,RoBERTa接受了动态掩蔽(第4.1节)、无NSP loss的完整句子(第4.2节)、大型小批量(第4.3节)和较大字节级BPE(第4.4节)的培训。
此外,我们还调查了在以前的工作中被低估的另外两个重要因素:(1)用于预训练的数据,以及(2)通过数据的训练次数。例如,最近提出的XLNet架构(Yang等人,2019年)使用比原始BERT(Devlin等人,2019年)多近10倍的数据进行预训练。它还以8倍于优化步骤一半的批量进行训练,因此在预训练中看到的序列数量是BERT的4倍。
为了帮助将这些因素的重要性与其他建模选择(例如,预训练目标)区分开来,我们首先按照$BERT_{BASE}$体系结构(L=24,H=1024,A=16,355M参数)对RoBERTa进行培训。我们对Devlin等人(2019年)使用的可比图书语料库BOOKCORPUS和维基百科数据集进行了10万步的预训练。我们使用1024 V100 gpu对我们的模型进行大约一天的预训练。
Results
我们在表4中给出了我们的结果。在控制训练数据时,我们观察到RoBERTa比最初报告的$BERT_{LARGE}$结果有了很大的改进,这重申了我们在第4节中探讨的设计选择的重要性。

接下来,我们将此数据与第3.2节中描述的三个附加数据集相结合。我们使用与之前相同的训练步骤数(100K)对RoBERTa进行组合数据训练。我们总共预训练了超过160GB的文本。我们观察到所有下游任务的性能进一步提高,验证了数据大小和多样性在预训练中的重要性
最后,我们对RoBERTa进行了更长时间的预训练,将预训练步骤的数量从100K增加到300K,然后进一步增加到500K。我们再次观察到下游任务性能的显著提高,300K和500K步长模型在大多数任务中都优于XLNetLarge。我们注意到,即使是我们训练时间最长的模型也不会过度拟合我们的数据,可能会从额外的训练中受益。
在本文的其余部分中,我们将根据三个不同的基准评估我们最好的RoBERTa模型:GLUE、SQuAD和RACE。具体来说,我们认为RoBERTa在3.2节中介绍的所有5个数据集上训练了500K步。
5.1 GLUE Results
对于GLUE,我们考虑两种微调设置。在第一个设置(single-task,dev)中,我们针对每个GLUE任务分别微调RoBERTa,只使用相应任务的训练数据。我们考虑对每个任务进行有限的超参数扫描,batch_size∈{16,32},学习速率∈{1e−5,2e−5,3e−5},前6%的步骤linear warmup,然后线性衰减到0。我们对10个epochs进行微调,并基于每个任务在开发集中的评估指标执行早期停止。其他超参数保持与训练前相同。在这种情况下,我们报告了每个任务经过5次随机初始化后的中值开发集结果,没有模型集成。
在第二个设置(ensemble, test)中,我们通过GLUE排行榜将RoBERTa与测试集中的其他方法进行比较。虽然GLUE排行榜的许多提交依赖于多任务微调,但我们的提交只依赖于单任务微调。对于RTE, STS和MRPC,我们发现从MNLI单任务模型开始微调是有帮助的,而不是baseline pretrained RoBERTa。我们探索一个稍微宽一点的超参数空间,在附录中描述,每个任务集成5到7个模型。
Task-specific modifications
GLUE中的两个任务需要特定任务的微调方法来实现有竞争力的排行榜结果。
QNLI:最近在GLUE排行榜上提交的问题对QNLI任务采用了一种成对的排名公式,其中候选答案从训练集中挖掘出来,并相互比较,single(question,candidate)单对被分类为正(Liu et al., 2019b,a;杨等人,2019)。这种公式显著简化了任务,但不能直接与BERT (Devlin et al., 2019)相比。在最近的工作中,我们为测试提交采用了排名方法,但是为了与BERT直接比较,我们报告基于纯分类方法的开发集结果。
WNLI:我们发现提供的NLI-format的数据很难处理。相反,我们使用来自SuperGLUE (Wang et al., 2019a)的重新格式化的WNLI数据,它表示查询代词和指称项的广度。我们利用Kocijan et al.(2019)的利润率排名损失margin ranking loss对RoBERTa 进行了微调。对于给定的输入句子,我们使用spaCy (Honnibal and Montani, 2017)从句子中提取额外的候选名词短语,并调整我们的模型,使其给积极指代短语的分数高于生成的任何消极指代短语的分数。这个公式的一个不幸后果是,我们只能使用正向训练示例,这排除了超过一半的所提供的训练示例

我们在表5中展示了我们的结果。在第一个设置(single,dev)中,RoBERTa在所有9个GLUE任务开发集上实现了最先进的结果。至关重要的是,RoBERTa使用与$BERT_{LARGE}$相同的掩蔽语言建模前训练目标和架构,但始终优于$BERT_{LARGE}$和$XLNet_{LARGE}$。与我们在本工作中探索的数据集大小和训练时间等更普通的细节相比,这提出了关于模型体系结构和预训练目标的相对重要性的问题。
在第二种设置(ensemble,test)中,我们将RoBERTa提交到GLUE排行榜,并在9个任务中获得4个最先进的结果,并获得迄今为止最高的平均分数。这是特别令人兴奋的,因为RoBERTa不依赖于多任务微调,不像其他大多数顶级提交。我们期望未来的工作可以通过加入更复杂的多任务微调程序来进一步改善这些结果。
5.2 SQuAD Results
与过去的工作相比,我们对SQuAD采用了一种更简单的方法。特别是,当BERT (Devlin et al., 2019)和XLNet (Yang et al., 2019)使用额外的QA数据集来增强他们的训练数据时,我们只使用提供的SQuAD训练数据对RoBERTa进行了精细调整。Yang等人(2019)也使用了自定义的分层学习速率计划来微调XLNet,而我们对所有层使用相同的学习速率。
对于SQuADv1.1,我们遵循与Devlin等人(2019)相同的微调程序。对于SQuAD v2.0,我们还对给定的问题是否可回答进行了分类;我们通过对分类项和跨度损失项的求和来联合训练这个分类器和跨度预测器。

我们在表6中展示了我们的结果。在SQuAD v1.1开发集上,RoBERTa与XLNet的先进设置相匹配。在SQuAD 2.0开发集上,RoBERTa达到最先进结果,比XLNet提高了0.4分(EM)和0.6分(F1)。
我们还将RoBERTa提交到公开的SQuAD 2.0排行榜,并评估其相对于其他系统的表现。大多数顶级系统都是基于BERT (Devlin et al., 2019)或XLNet (Yang et al., 2019)构建的,两者都依赖于额外的外部训练数据。相反,我们的提交没有使用任何额外的数据。
我们的单一RoBERTa模型比所有提交的单一模型都要好,并且是那些不依赖于数据增强的系统中得分最高的系统。
5.3 RACE Results
在RACE中,系统提供了一段文本,一个相关的问题和四个候选答案。系统需要区分四个答案中哪个是正确的。
我们修改了RoBERTa,将每个考生的答案与相应的问题和段落联系起来。然后我们对这四个序列中的每一个进行编码,并将得到的[CLS]表示通过一个完全连接的层传递,该层用于预测正确的答案。我们截断长度超过128个标记的问答对,如果需要,截断段落,使总长度最多为512个标记。

RACE测试集的结果如表7所示。RoBERTa在中学和高中都取得了最先进的成绩。
7 Conclusion
在对BERT模型进行预训练时,我们会仔细评估一些设计决策。我们发现,通过在更多的数据上使用更长的时间、更大的批量来训练模型,可以显著提高性能;去掉下一句预测目标;在更长序列训练;并动态改变应用于训练数据的掩蔽模式。我们改进的预训练程序,我们称之为RoBERTa,在GLUE、RACE和SQuAD上实现了最先进的结果,而不需要对GLUE进行多任务微调或为SQuAD添加额外的数据。这些结果说明了这些以前被忽视的设计决策的重要性,并表明BERT的预训练目标与最近提出的替代方案相比仍然具有竞争力。
我们还使用了一个新的数据集CC-NEWS,并在https://github.com/pytorch/fairseq发布了我们的模型和代码,用于预训练和微调。
附录


浙公网安备 33010602011771号