RoBERTa:一种稳健优化的 BERT 预训练方法

Yinhan Liu § Myle Ott∗§ Naman Goyal∗§ Jingfei Du∗§ Mandar Joshi


Danqi Chen§ Omer Levy§ Mike Lewis§ Luke Zettlemoyer†§ Veselin Stoyanov§
Paul G. Allen School of Computer Science & Engineering,


University of Washington, Seattle, WA


{mandar90,lsz}@cs.washington.edu
§ Facebook AI


{yinhanliu,myleott,naman,jingfeidu,


danqi,omerlevy,mikelewis,lsz,ves}@fb.com



*相等的贡献。
摘要

语言模型的预训练已经带来显着的性能提升,但是不同方法之间的详细细比较非常具有挑战性。 训练的计算量很大,通常是在不同大小的私有数据集上进行的,而且正如我们将要展示的,超参数的选择对最终结果有重大影响。 我们呈现一个对 BERT 预训练(Devlin 等人,2019)的重复研究,仔细衡量许多关键超参数和训练数据量的影响。 我们发现 BERT 的训练不充分,并且可以匹配或超过它之后发布的所有模型的性能。 我们最好的模型在 GLUE、RACE 和 SQuAD 上获得最先进的结果。 这些结果强调之前设计上忽略的一些选择的重要性,并对最近报告的一些改进提出质疑。 我们发布我们的模型和代码。1

1 简介

自训练方法如 ELMo(Peters 等人,2018)、GPT(Radford 等人,2018)、BERT(Devlin 等人,2019)、XLM(Lample 和 Conneau,2019)和 XLNet(Yang 等人,2019)带来显着的性能提升,但确定这些方法哪些方面贡献最大具有挑战性。 训练在计算上比较昂贵限制可以完成的调优数量,并且经常使用大小不一的私有训练数据来完成,从而限制我们衡量优势模型效果的能力。

我们呈现一个对 BERT 预训练的重复研究(Devlin 等人,2019),包括对超参数调整和训练集大小影响的仔细评估。 我们发现 BERT 训练不充分,并提出一种改进的方法来训练 BERT 模型(我们称为 RoBERTa),该模型可以匹配或超过所有 BERT 之后的方法的性能。 我们的修改很简单,其中包括:(1)通过更多批次、更多数据对模型进行更长的训练; (2)删除下一句预测目标; (3)对更长序列的训练; (4)动态改变应用于训练数据的掩蔽模式。 我们还收集一个新的大型数据集(CC-News),大小与其它私有数据集相当,以更好地控制训练集大小的效果。

在控制训练数据时,我们改进的训练过程改进了 GLUE 和 SQuAD 上已发布的 BERT 结果。 经过更多数据训练后,我们的模型在公开 GLUE 排行榜上得分为 88.5,与报告的 88.4 相匹配 Yang 等人 2019)。 我们的模型针在 9 个 GLUE 任务上的 4 个建立了新的最先进结果:MNLI、QNLI、RTE 和 STS-B。 我们还匹配 SQuAD 和 RACE 上的最先进结果。 总的来说,我们重新确立 BERT 的掩蔽语言模型训练目标与最近提出的其它训练目标如扰动自回归语言模型(Yang 等人,2019)相比具有竞争力。2

总而言之,本文的贡献是:(1)我们提出一组重要的 BERT 设计选择和训练策略,并引入可以改善下游任务性能的其它方法;(2)我们使用新的数据集 CC-News,并确认使用更多数据进行预训练可以进一步提高下游任务的性能;(3)我们的训练改进表明,在正确的设计选择下,屏蔽语言模型预训练与所有其它最近发布的方法相比具有竞争力。 我们发布我们的模型、预训练和微调代码,用 PyTorch(Paszke 等人,2017)实现。

2 背景

在本节中,我们简要概述 BERT(Devlin 等人,2019)预训练方法以及我们将在下一节中通过实验检验的一些训练选择。

2.1 设置

BERT将两个分段(词符序列)相连接作为输入,x1,…,xNy1,…,yM 每个分段通常包含一个以上的自然句子。 两个分段作为单个输入序列呈现给 BERT,并用特殊的记号分隔它们:[CLS],x1,…,xN,[SEP],y1,…,yM,[EOS] MN 满足 M+N < T 约束,其中 T 是一个超参数,控制训练时的最大长度。

该模型首先在一个大型的未标记文本语料库上进行预训练,然后使用最终任务有标记的数据进行微调。

2.2 结构

BERT 使用现在无处不在的 transformer 结构(Vaswani 等人,2017),我们将不对其进行详细介绍。 我们使用具有 L 层的 transformer 结构。 每个网络块使用 A 个自注意头和隐藏大小 H

2.3 训练目标

在预训练期间,BERT 使用两个目标:掩蔽语言模型和下一句预测。

掩蔽语言模型(MLM)随机选择输入序列中的词符,并用特殊词符 [MASK] 替换它们。 MLM 的目标是预测被掩蔽词符的交叉熵损失。 BERT 统一选择 15% 的输入词符进行替换。 在所选词符中,80% 被替换为 [MASK],10% 保持不变,10% 被替换为随机选择的词汇表中的词符。

在最初的实现中,随机掩蔽和替换从一开始就执行一次,并在训练期间保存;然而在实践中,数据被重复,所以每个训练语句的掩蔽并不总是相同的(请参见4.1节)。

下一个句子预测(NSP) NSP是二元分类损失,用于预测原始文本中两个分段是否彼此跟随。 通过从语料库中获取连续的句子来创建正样本。 负样本通过将来自不同文档的分段变成一对来创建。 正样本和负样本均以相同的概率采样。

NSP 目标旨在提高下游任务的性能,例如自然语言推理(Bowman 等人,2015),这需要对句子对之间的关​​系进行推理。

2.4 优化

BERT 使用 Adam (Kingma 和 Ba, 2015) 优化,参数如下:β1 = 0.9, β2 = 0.999, ε= 1e-6 以及 L2 权重衰减 0.01 在最初的 10,000 步中,学习率预热到 1e-4 的峰值,然后线性衰减。 BERT 使用所有网络层和注意力的权重丢弃率 0.1 和 GELU 激活函数(Hendrycks 和 Gimpel,2016)训练。 模型预训练 S = 1,000,000 次更新,每个批次包含 B = 256 个序列,最大长度为 T = 512 个词符。

2.5 数据

BERT 在 BookCorpus (Zhu 等人,2015) 和 English Wikipedia 上训练,总共是 16GB 未压缩的文本。3

3 实验设置

在本节中,我们将描述用于复现 BERT 研究的实验设置。

3.1 实现

我们用 fairseqOtt 等人,2019)重新实现 BERT。 除峰值学习速率和预热步骤数针对每个设置分别调整之外,我们主要遵循第2节中给出的原始 BERT 优化超参数。 我们还发现训练对 Adam epsilon 项非常敏感,在某些情况下,对其进行调整后,我们可以获得更好的性能或更高的稳定性。 同样,我们发现在大的批次大小时设置 β2 = 0.98 可以提高稳定性。

我们使用最多 T = 512 个词符的序列进行预训练。 不同于 Devlin 等人 2019),我们没有随机注入短序列,对于前 90% 的更新,我们没有以缩短的序列长度进行训练。 我们只训练全长序列。

我们在 DGX-1 机器上使用混合精度浮点算法进行训练,每个机器都具有 8 × 32GB Nvidia V100 GPU,由 Infiniband 互连(Micikevicius 等人,2018)。

3.2 数据

BERT 风格的预训练严重地依赖于大量文本。 Baevski 等人 2019)证明增加数据大小可以提高最终任务性能。 一些努力已经在比原始 BERT 更大、更多样化的数据集上进行了训练(Radford 等人,2019Yang 等人,2019Zellers 等人,2019)。 不幸的是,这些额外的数据集并非所有都可以公开发布。 对于我们的研究,我们专注于收集尽可能多的数据以进行实验,从而使我们每次能够比较适当地匹配数据的整体质量和数量。

我们考虑五个大小和领域不同的英语语料库,总计超过 160GB 的未压缩文本。 我们使用以下文本语料库:

3.3 评估

在完成之前的工作之后,我们使用以下三个基准评估针对下游任务的预训练模型。

GLUE 通用语言理解评估(GLUE)基准(Wang 等人,2019b)是 9 个用于评估自然语言理解系统的数据集。6 任务构造为单句分类任务或句子对分类任务。 GLUE 的组织者提供训练数据和开发数据的划分以及上传服务器和排行榜,使参与者可以根据私有的测试数据评估和比较他们的系统。

对于第4节中的复现研究,我们在相应的单任务训练数据上对预训练模型进行微调后,报告开发集的结果(即没有多任务训练或融合)。 我们的微调程序遵循原始BERT论文(Devlin等人,2019)。

5节中,我们还报告从公共排行榜获得的测试集结果。 这些结果取决于几个特定于任务的修改,我们将在5.1节中进行介绍。

SQuAD 斯坦福问答数据集(SQuAD)提供一段上下文和一个问题。 任务是通过从上下文中提取相关范围来回答问题。 我们评估 SQuAD 的两个版本:V1.1 和 V2.0(Rajpurkar 等人,2016,2018)。 在 V1.1 中,上下文始终包含一个答案,而在 V2.0 中,某些问题在提供的上下文中没有回答,这使任务更具挑战性。

对于 SQuAD V1.1,我们采用与 BERT 相同的跨度预测方法(Devlin 等人,2019)。 对于 SQuAD V2.0,我们添加一个附加的二元分类器来预测问题是否可以解决,我们通过对分类和跨度损失项求和来共同进行训练。 在评估期间,我们仅预测归类为可回答的数据对上的跨度指数。

RACE 考试阅读理解(RACE)(Lai 等人,2017)任务是大规模阅读理解数据集,包含 28,000 多个段落和将近 ​​100,000 个问题。 数据集是从中国的英语考试中收集的,这些考试是为中、高中学生设计的。 在 RACE 中,每个段落都与多个问题相关联。 对于每个问题,任务是从四个选项中选择一个正确答案。 与其它流行的阅读理解数据集相比,RACE 具有更长的上下文,并且需要推理的问题比例非常大。

4 训练过程分析

本节探讨并量化哪些选择对于成功地预训练 BERT 模型很重要。 我们保持模型结构固定。7 具体地,我们使用与 BERTbase 相同的配置开始训练 (L = 12, H = 768, A = 12, 110M 个参数)。

4.1 静态掩蔽 vs. 动态掩蔽

如第2节所述,BERT 依赖于随机掩蔽和预测词符。 原始的 BERT 实现在数据预处理期间执行一次屏蔽,从而产生单个静态 掩蔽。 为避免在每个周期中对每个训练实例使用相同的掩蔽,将训练数据重复 10 次,以便在 40 个周期中以 10 种不同的方式对每个序列进行掩蔽。 因此,每个训练序列在训练过程中都用相同的掩蔽看到四次。

我们将此策略与动态掩蔽 进行比较,在动态掩蔽中,每次向模型输入序列时都会生成掩蔽模式。 当预训练更多步骤或使用更大的数据集时,这变得至关重要。

结果

Masking SQuAD 2.0 MNLI-m SST-2
reference 76.3 84.3 92.8
我们的重新实现:
static 78.3 84.3 92.5
dynamic 78.7 84.0 92.9
表 1:BERTbase 的静态掩蔽和动态掩蔽之间的比较。 我们报告 SQuAD 的 F1、MNLI-m 和 SST-2 的准确性。 报告的结果是 5 次随机初始化(种子)的中位数。 参考结果来自 Yang 等人 2019)。

1 比较发表的 BERTbase 结果 Devlin 等人 2019)和我们用静态与动态掩蔽的重新实现。 我们发现,使用静态掩蔽的重新实现与原始 BERT 模型相似,动态掩蔽与静态掩蔽相当或稍好于静态掩蔽。

鉴于这些结果以及动态掩蔽的其它效率优势,我们在其余的实验中使用动态掩蔽。

4.2 模型输入格式和下一句预测

模型 SQuAD 1.1 / 2.0 MNLI-m SST-2 RACE
我们的重新实现(NSP损失):
segment-pair 90.4/78.7 84.0 92.9 64.2
sentence-pair 88.7/76.2 82.9 92.1 63.0
我们的重新实现(没有 NSP 损失):
full-sentences 90.4/79.1 84.7 92.5 64.8
doc-sentences 90.6/79.7 84.7 92.7 65.6
BERT base 88.5/76.3 84.3 92.8 64.3
XLNet base(K = 7) –/81.3 85.8 92.7 66.1
XLNet base(K = 6) –/81.0 85.6 93.4 66.7
表 2:经过预训练的基础模型的开发集结果,基于 BookCorpus Wkipedia 所有模型都经过 1M 步的训练,批次大小为 256 个序列。 我们报告 SQuAD 的 F1,MNLI-m、SST-2 和 RACE 的准确率。 报告的结果是五个随机初始化(种子)的中位数。 BERT base 和 XLNet base 的结果来自 Yang 等人 2019)。

在原始的 BERT 预训练过程中,模型观察两个相连接的文档分段,它们是从同一文档中连续采样(以概率 p= 0.5)或来自不同文档。 除掩蔽语言模型目标外,模型的训练还辅助训练下一句预测(NSP)损失来预测观察到的文档片段是来自相同的还是不同的文档。

NSP 损失曾经被认为是训练原始 BERT 模型的重要因素。 Devlin 等人 2019)观察到,删除 NSP 会损害性能,并且 QNLI、MNLI 和 SQuAD 1.1 的性能会大大降低。 但是,最近的一些工作对 NSP 损失的必要性提出了质疑(Lample 和 Conneau,2019Yang 等人,2019Joshi 等人,2019)。

为了更好地理解这种差异,我们比较几种其它的训练方式:

结果 2显示四种不同设置的结果。 我们首先比较原生的 segment-pair 的输入格式, Devlin 等人 2019)和 sentence-pair 格式;两种格式都保留 NSP 损失,但后者使用单个句子。 我们发现使用单个句子会损害 在下游任务上的表现,我们推测这是因为该模型无法学习远程依赖关系。

接下来,我们将比较没有 NSP 损失的训练和从单个文档(doc-sentences)中的文本块进行的训练。 我们发现,此设置优于最初发布的 BERT base 结果,并且删除 NSP 损失匹配或可以稍微改进下游任务的性能 Devlin 等人 2019)。 原始 BERT 实现可能只删除损失项,同时仍保留 segment-pair 输入格式。

最后,我们发现限制序列来自单个文档(doc-sentences)比来自多个文档(full-sentences)性能稍微好一些。 但是,因为 doc-sentences 格式导致批次大小可变,我们使用 full-sentences 在我们其余的实验中,可以更容易地与相关工作进行比较。

4.3 用大的批次训练

神经机器翻译的过去工作表明,当适当提高学习率时,使用非常大的批次进行训练既可以提高优化速度,又可以提高最终任务性能(Ott 等人,2018)。 最近的工作表明 BERT 也适合进行大批次训练(You 等人,2019)。

Devlin 等人 2019)最初训练 BERT base 1M 步骤,批次大小为 256 个序列。 通过梯度累积,这在计算成本上等同于训练批次大小为 2K 个序列的 125K 步或批次大小为 8K 的 31 K步。

s steps r ppl MNLI-m SST-2
256 1M 1e-4 3.99 84.7 92.7
2K 125K 7e-4 3.68 85.2 92.9
8K 31K 1e-3 3.77 84.6 92.8
表 3:训练数据(ppl)的困惑性和经过训练的基础模型的开发集准确性,基于 BookCorpus Wikipedia ,使用不同的批次大小(bsz)。 我们调整每种设置的学习率(lr)。 模型在数据上进行相同次数的遍历(周期),并且具有相同的计算成本。

在表 3中,我们比较 BERT base 的困惑度和最终任务性能,因为我们增加批次大小,控制训练数据的遍历次数。 我们观察到,大批次训练可提高掩蔽语言模型目标的困惑度以及最终任务的准确性。 大批次也更容易通过分布式数据并行训练进行并行化8,在后面的实验中,我们以批次大小为 8K 的序列训练。

值得注意的是 You 等人 2019)以更大的批次大小(最大 32K 个序列)训练 BERT。 我们将进一步探讨大批次训练对未来工作的局限性。

4.4 文本编码

字节对编码(BPE)(Sennrich 等人,2016)是字符级和单词级表示形式的混合体,允许处理自然语言语料库中常见的大词汇量。 BPE 不依赖完整的单词而是依赖子单词单元,通过对训练语料库进行统计分析提取而来。

BPE 词汇量通常在 10K-100K 子词单元范围内。 但是,在为大型多样的语料库(例如本工作中考虑的语料库)建模时,unicode 字符会占该词汇表的很大一部分。 Radford 等人 2019)引入 BPE 的一种更巧妙的实现,使用 bytes 而不是 unicode 字符作为基本子词单元。 使用 bytes 可以学习适中大小(50K 单元)的子词词汇,但仍可以对任何输入文本进行编码,而无需引入任何“未知”词符。

最初的 BERT 实现(Devlin 等人,2019)使用大小为 30K 的字符级 BPE 词汇表,该词汇表是在使用启发式词符化规则对输入进行预处理之后学习的。 遵循 Radford 等人 2019),我们取而代之的是使用更大的字节级 BPE 词汇表来训练 BERT,该词汇表包含 50K 子词单元,而无需对输入进行任何额外的预处理或词符化。 这分别为 BERT base 和 BERT large 添加大约 15M 和 20M 的额外参数。

早期的实验表明,这些编码之间只有很小的差异, Radford 等人 2019)的BPE 在某些任务上的最终任务性能稍差。 尽管如此,我们认为通用编码方案的优势胜于性能的轻微降低,因此在我们的其余实验中都将使用这种编码。 这些编码的更详细的比较留给以后的工作。

5 RoBERTa

模型
数据
bsz
steps
SQuAD
MNLI-m
SST-2
(v1.1/2.0)
RoBERTa
with Books + Wiki 16GB 8K 100K 93.6/87.3 89.0 95.3
+ additional data (§3.2) 160GB 8K 100K 94.0/87.7 89.3 95.6
+ pretrain longer 160GB 8K 300K 94.4/88.7 90.0 96.1
+ pretrain even longer 160GB 8K 500K 94.6 / 89.4 90.2 96.4
BERTlarge
with Books + Wiki 13GB 256 1M 90.9/81.8 86.6 93.7
XLNetlarge
with Books + Wiki 13GB 256 1M 94.0/87.8 88.4 94.4
+ additional data 126GB 2K 500K 94.5/88.8 89.8 95.6
表4:当我们预训练更多数据(16GB 160GB文本)并预训练更长的时间(100K 300K 500K步骤时,RoBERTa的开发设置结果)。 每行都累积了以上行的改进。 RoBERTa符合BERT large的体系结构和培训目标。 BERT large 和 XLNet large 的结果来自 Devlin 等人 2019)和 Yang 等人 2019)。 有关所有GLUE任务的完整结果,请参见附录。

在上一节中,我们提出对 BERT 预训练过程的修改,以提高最终任务的性能。 现在,我们汇总这些改进并评估它们的综合影响。 我们称这个配置为 RoBERTa,即 Robustly optimized BERT approach。 具体来说,RoBERTa 使用动态掩蔽(4.1)、 full-sentences 、没有 NSP 损失(4.2节)、更大的批次(4.3节)和更大的字节级 BPE(4.4节)。

此外,我们研究了先前工作中未充分强调的两个其他重要因素:(1)用于预训练的数据,以及(2)通过数据进行训练的次数。 例如,最近提出的 XLNet 架构(Yang 等人,2019)使用的数据是原始 BERT(Devlin 等人,2019)的近 10 倍。 它也以八倍大的批次大小进行了训练,所需的优化步骤只有一半,因此与 BERT 相比,预训练中的序列是其四倍。

为了帮助将这些因素的重要性与其它建模选择(例如,预训练目标)区分开来,我们首先按照 BERT large架构(L = 24H = 1024A = 16,355M参数)。 我们在类似的 Book Corpus 加上 Wkipedia 数据集,如 Devlin 等人 2019)。 我们使用 1024 个 V100 GPU 预训练模型大约一天。

结果 我们将结果显示在表4中。 在控制训练数据时,我们发现 RoBERTa 相对于最初报告的 BERT large 结果提供了很大的改进,重申了我们在第4节中探讨的设计选择的重要性。

接下来,我们将这些数据与3.2节中所述的三个附加数据集结合。 我们以与以前相同的训练步骤数(100K)对组合数据进行RoBERTa训练。 我们总共预训练了160GB以上的文本。 我们观察到所有下游任务在性能上的进一步改进,从而验证了数据大小和多样性在预训练中的重要性。9

MNLI QNLI QQP RTE SST MRPC CoLA STS WNLI Avg
开发集上的单任务单模型
BERT large 86.6/- 92.3 91.3 70.4 93.2 88.0 60.6 90.0 - -
XLNet large 89.8/- 93.9 91.8 83.8 95.6 89.2 63.6 91.8 - -
RoBERTa 90.2 / 90.2 94.7 92.2 86.6 96.4 90.9 68.0 92.4 91.3 -
测试集上的融合(截止到2019年7月25日的榜单)
ALICE 88.2/87.9 95.7 90.7 83.5 95.2 92.6 68.6 91.1 80.8 86.3
MT-DNN 87.9/87.4 96.0 89.9 86.3 96.5 92.7 68.4 91.1 89.0 87.6
XLNet 90.2/89.8 98.6 90.3 86.3 96.8 93.0 67.8 91.6 90.4 88.4
RoBERTa 90.8 / 90.2 98.9 90.2 88.2 96.7 92.3 67.8 92.2 89.0 88.5
表5:GLUE上的结果。 所有结果均基于24层架构。 BERT large和XLNet large结果来自 Devlin 等人 2019)和 Yang 等人 2019)。 RoBERTa在开发集上的结果是五次运行的中位数。 测试集上的 RoBERTa 结果是单任务 模型的融合。 对于 RTE、STS 和 MRPC,我们从 MNLI 模型而不是基线预训练模型开始进行微调。 平均值从 GLUE 排行榜获得。

最终,我们对RoBERTa进行了更长的预训练,将预训练步骤的数量从100K增加到300K,然后进一步增加到500K。 我们再次观察到下游任务性能的显着提高,并且300K和500K步进模型在大多数任务中的表现均优于XLNet large 我们注意到,即使是经过最长训练的模型也似乎并不过分拟合我们的数据,并且可能会从其他训练中受益。

在本文的其余部分中,我们将在三个不同的基准上评估我们最好的 RoBERTa 模型:GLUE、SQuaD 和 RACE。 具体来说,我们考虑在 3.2 节介绍的所有五个数据集上进行 500K 步训练的 RoBERTa。

5.1 GLUE结果

对于GLUE,我们考虑两个微调设置。 在第一个设置(单任务,开发集)中,我们仅使用相应任务的训练数据分别针对每个 GLUE 任务微调 RoBERTa。 我们考虑每个任务的有限超参数扫描,批处理大小为∈{ 16 32 } 和学习率∈{ 1 e 5 2 e 5 3 e 5 },对步骤的前6%进行线性预热,然后是线性衰减到0。 我们会微调10个纪元,并根据开发人员集合中每个任务的评估指标执行提前停止。 其余的超参数与预训练期间相同。 在这种情况下,我们报告了五个随机初始化中每个任务的中值开发集结果,而没有模型集合。

在第二个设置(集成,测试)中,我们通过GLUE排行榜将RoBERTa与测试集上的其他方法进行了比较。 尽管许多提交到GLUE排行榜的提交都依赖于多任务微调,但我们的提交仅取决于单任务 finetuning 对于RTE,STS和MRPC,我们发现从MNLI单任务模型而不是基线预训练的RoBERTa开始进行微调很有帮助。 我们探索了附录中描述的稍宽的超参数空间,并且每个任务的模型总数为5到7。

特定于任务的修改其中两个GLUE任务需要特定于任务的微调方法,才能获得有竞争力的排行榜结果。

QNLI:最近在 GLUE 排行榜上提交的内容为 QNLI 任务采用成对排名的公式,其从训练集中提取候选答案并与之进行比较,单个(问题,候选)对被归为正确(Liu 等人,2019b,aYang 等人,2019)。 这种表述显着简化了任务,但无法与 BERT(Devlin 等人,2019)直接比较。 在最近的工作之后,我们对测试提交采用了排名方法,但是为了与BERT直接比较,我们报告了基于纯分类方法的开发集结果。

WNLI:我们发现提供的NLI格式数据很难使用。 取而代之的是,我们使用SuperGLUE(Wang等人,2019a)中重新格式化的WNLI数据,该数据指示查询代词和所指对象的范围。 我们使用来自 Kocijan 等人 2019)。 对于给定的输入句子,我们使用spaCy(Honnibal和Montani,2017)从句子中提取其他候选名词短语,并对模型进行微调,以使其对正指称短语的得分高于任何其他生成的否定候选词组。 这种表述的一个不幸结果是,我们只能使用积极的训练示例,而其中不包括所提供训练示例的一半。10

结果我们在表5中显示结果。 在第一个设置(单任务,开发集)中,RoBERTa 在所有 9 个 GLUE 任务开发集中都获得了最先进的结果。 至关重要的是,RoBERTa使用与BERT large相同的屏蔽语言建模预训练目标和体系结构,但始终优于BERT large和XLNet large 与我们在这项工作中探索的更普通的细节(例如数据集大小和训练时间)相比,这引发了有关模型架构和预训练目标的相对重要性的问题。

在第二种设置(集成,测试)中,我们将RoBERTa提交给GLUE排行榜,并在9项任务中的4项中取得了最新的结果,并且是迄今为止最高的平均分数。 尤其令人兴奋的是,RoBERTa不依赖于多任务微调,这与大多数其他顶级提交文件不同。 我们希望未来的工作可以通过合并更复杂的多任务微调程序来进一步改善这些结果。

5.2 SQuAD结果

与过去的工作相比,我们为SQuAD采用了一种更为简单的方法。 尤其是,尽管BERT(Devlin等人,2019)和XLNet(Yang等人,2019)都通过其他QA数据集来增强他们的训练数据,但我们仅使用提供的SQuAD训练数据来微调RoBERTa Yang 等人 2019)还采用了自定义的逐层学习速率计划来微调XLNet,而我们对所有层使用相同的学习速率。

对于 SQuAD v1.1,我们遵循的微调过程相同于 Devlin 等人 2019)。 对于SQuAD v2.0,我们还对给定问题是否可以回答进行分类。我们通过对分类和跨度损失项求和,与跨度预测器一起训练该分类器。

结果

模型
SQuAD 1.1
SQuAD 2.0
EM F1 EM F1
开发集上单模型,使用/不使用数据增强
BERT large 84.1 90.9 79.0 81.8
XLNet large 89.0 94.5 86.1 88.8
RoBERTa 88.9 94.6 86.5 89.4
测试集上单模型(截至2019年7月25日)
XLNet large
86.3 89.1
RoBERTa
86.8 89.8
XLNet + SG-Net Verifier
87.0 89.9
表6:SQuAD上的结果。 表示取决于其他外部训练数据的结果。 RoBERTa在开发和测试设置中仅使用提供的SQuAD数据。 BERT large和XLNet large结果来自 Devlin 等人 2019)和 Yang 等人 2019)。

我们将结果显示在表6中。 在SQuAD v1.1开发集上,RoBERTa与XLNet的最新集匹配。 在SQuAD v2.0开发套件上,RoBERTa设置了新的最新技术,与XLNet相比分别提高了0.4点(EM)和0.6点(F1)。

我们还将RoBERTa提交给SQuAD 2.0公共排行榜,并评估其相对于其他系统的性能。 大多数顶级系统都基于BERT(Devlin等人,2019)或XLNet(Yang等人,2019)构建,它们都依赖于额外的外部培训数据。 相反,我们的提交没有使用任何其他数据。

我们的单一RoBERTa模型的表现优于单一模型提交中的所有模型,并且是不依赖数据扩充的模型中得分最高的系统。

5.3 RACE 结果

在RACE中,系统提供了一段文本,一个相关的问题以及四个候选答案。 需要系统对四个候选答案中的哪个进行正确分类。

我们通过将每个候选答案与相应的问题和段落连接起来来修改RoBERTa。 然后,我们对这四个序列中的每一个进行编码,并将所得的[CLS]表示形式通过完全连接的层,该层用于预测正确的答案。 我们会截断长度超过128个令牌的问题-答案对,并在需要时截断段落,以使总长度最多为512个令牌。

模型 Accuracy Middle High
单个模型进行测试(截至2019年7月25日)
BERT large 72.0 76.6 70.1
XLNet large 81.7 85.4 80.2
RoBERTa 83.2 86.5 81.3
表7:RACE测试集上的结果。 BERT large 和 XLNet large 结果来自 Yang 等人 2019)。

7中列出了RACE测试集的结果。 RoBERTa在中学和中学环境中均达到了最先进的效果。

6 相关工作

预训练方法已针对不同的训练目标设计,包括语言模型(Dai 和 Le,2015Peters 等人,2018Howard 和 Ruder,2018 ),机器翻译(McCann 等人,2017)和屏蔽语言模型(Devlin 等人,2019Lample 和 Conneau,2019年))。 最近的许多论文都为每个最终任务使用微调模型的基本方法(Howard 和 Ruder,2018Radford 等人,2018),并使用掩蔽语言模型目标的某种变体。 但是,更新的方法通过多任务微调(Dong 等人,2019),合并实体嵌入(Sun 等人,2019),跨度预测(Joshi 等人,2019)和自回归预训练的各种变体(Song 等人,2019Chan 等人,2019Yang 等人,2019)来提高性能。 通常还可以通过在更多数据上训练更大的模型来提高性能(Devlin 等人,2019Baevski 等人,2019Yang 等人,2019Radford 等人,2019)。 我们的目标是复现、简化和更好地调优 BERT 的训练,作为更好地了解所有这些方法的相对性能的参考点。

7 结论

在预训练BERT模型时,我们会仔细评估许多设计决策。 我们发现,通过对模型进行较长时间的训练(使用更多批处理处理更多数据),可以显着提高性能。删除下一个句子预测目标;训练更长的序列;并动态更改应用于训练数据的掩蔽模式。 我们改进的预训练程序(称为RoBERTa)可在GLUE,RACE和SQuAD上获得最新的结果,而无需对GLUE进行多任务微调或对SQuAD进行额外的数据调整。 这些结果说明了这些先前被忽略的设计决策的重要性,并表明BERT的预训练目标与最近提出的替代方案相比仍然具有竞争力。

我们还使用一个新的数据集CC-News,并在以下发布我们预训练和微调的模型和代码于:https://github.com/pytorch/fairseq

参考文献

   Eneko Agirre, Llu’is M‘arquez, and Richard Wicentowski, editors. 2007. Proceedings of the Fourth International Workshop on Semantic Evaluations (SemEval-2007).

   Alexei Baevski, Sergey Edunov, Yinhan Liu, Luke Zettlemoyer, and Michael Auli. 2019. Cloze-driven pretraining of self-attention networks. arXiv preprint arXiv:1903.07785.

   Roy Bar-Haim, Ido Dagan, Bill Dolan, Lisa Ferro, Danilo Giampiccolo, Bernardo Magnini, and Idan Szpektor. 2006. The second PASCAL recognising textual entailment challenge. In Proceedings of the second PASCAL challenges workshop on recognising textual entailment.

   Luisa Bentivogli, Ido Dagan, Hoa Trang Dang, Danilo Giampiccolo, and Bernardo Magnini. 2009. The fifth PASCAL recognizing textual entailment challenge.

   Samuel R Bowman, Gabor Angeli, Christopher Potts, and Christopher D Manning. 2015. A large annotated corpus for learning natural language inference. In Empirical Methods in Natural Language Processing (EMNLP).

   William Chan, Nikita Kitaev, Kelvin Guu, Mitchell Stern, and Jakob Uszkoreit. 2019. KERMIT: Generative insertion-based modeling for sequences. arXiv preprint arXiv:1906.01604.

   Ido Dagan, Oren Glickman, and Bernardo Magnini. 2006. The PASCAL recognising textual entailment challenge. In Machine learning challenges. evaluating predictive uncertainty, visual object classification, and recognising tectual entailment.

   Andrew M Dai and Quoc V Le. 2015. Semi-supervised sequence learning. In Advances in Neural Information Processing Systems (NIPS).

   Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2019. BERT: Pre-training of deep bidirectional transformers for language understanding. In North American Association for Computational Linguistics (NAACL).

   William B Dolan and Chris Brockett. 2005. Automatically constructing a corpus of sentential paraphrases. In Proceedings of the International Workshop on Paraphrasing.

   Li Dong, Nan Yang, Wenhui Wang, Furu Wei, Xiaodong Liu, Yu Wang, Jianfeng Gao, Ming Zhou, and Hsiao-Wuen Hon. 2019. Unified language model pre-training for natural language understanding and generation. arXiv preprint arXiv:1905.03197.

   Danilo Giampiccolo, Bernardo Magnini, Ido Dagan, and Bill Dolan. 2007. The third PASCAL recognizing textual entailment challenge. In Proceedings of the ACL-PASCAL workshop on textual entailment and paraphrasing.

   Aaron Gokaslan and Vanya Cohen. 2019. Openwebtext corpus. http://web.archive. org/save/http://Skylion007.github. io/OpenWebTextCorpus.

   Felix Hamborg, Norman Meuschke, Corinna Breitinger, and Bela Gipp. 2017. news-please: A generic news crawler and extractor. In Proceedings of the 15th International Symposium of Information Science.

   Dan Hendrycks and Kevin Gimpel. 2016. Gaussian error linear units (gelus). arXiv preprint arXiv:1606.08415.

   Matthew Honnibal and Ines Montani. 2017. spaCy 2: Natural language understanding with Bloom embeddings, convolutional neural networks and incremental parsing. To appear.

   Jeremy Howard and Sebastian Ruder. 2018. Universal language model fine-tuning for text classification. arXiv preprint arXiv:1801.06146.

   Shankar Iyer, Nikhil Dandekar, and Kornél Csernai. 2016. First quora dataset release: Question pairs. https://data.quora.com/First- Quora-Dataset-Release-Question- Pairs.

   Mandar Joshi, Danqi Chen, Yinhan Liu, Daniel S. Weld, Luke Zettlemoyer, and Omer Levy. 2019. SpanBERT: Improving pre-training by representing and predicting spans. arXiv preprint arXiv:1907.10529.

   Diederik Kingma and Jimmy Ba. 2015. Adam: A method for stochastic optimization. In International Conference on Learning Representations (ICLR).

   Vid Kocijan, Ana-Maria Cretu, Oana-Maria Camburu, Yordan Yordanov, and Thomas Lukasiewicz. 2019. A surprisingly robust trick for winograd schema challenge. arXiv preprint arXiv:1905.06290.

   Guokun Lai, Qizhe Xie, Hanxiao Liu, Yiming Yang, and Eduard Hovy. 2017. Race: Large-scale reading comprehension dataset from examinations. arXiv preprint arXiv:1704.04683.

   Guillaume Lample and Alexis Conneau. 2019. Cross-lingual language model pretraining. arXiv preprint arXiv:1901.07291.

   Hector J Levesque, Ernest Davis, and Leora Morgenstern. 2011. The Winograd schema challenge. In AAAI Spring Symposium: Logical Formalizations of Commonsense Reasoning.

   Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019a. Improving multi-task deep neural networks via knowledge distillation for natural language understanding. arXiv preprint arXiv:1904.09482.

   Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019b. Multi-task deep neural networks for natural language understanding. arXiv preprint arXiv:1901.11504.

   Bryan McCann, James Bradbury, Caiming Xiong, and Richard Socher. 2017. Learned in translation: Contextualized word vectors. In Advances in Neural Information Processing Systems (NIPS), pages 6297–6308.

   Paulius Micikevicius, Sharan Narang, Jonah Alben, Gregory Diamos, Erich Elsen, David Garcia, Boris Ginsburg, Michael Houston, Oleksii Kuchaiev, Ganesh Venkatesh, and Hao Wu. 2018. Mixed precision training. In International Conference on Learning Representations.

   Sebastian Nagel. 2016. Cc-news. http://web.archive.org/ save/http://commoncrawl.org/2016/ 10/news-dataset-available.

   Myle Ott, Sergey Edunov, Alexei Baevski, Angela Fan, Sam Gross, Nathan Ng, David Grangier, and Michael Auli. 2019. fairseq: A fast, extensible toolkit for sequence modeling. In North American Association for Computational Linguistics (NAACL): System Demonstrations.

   Myle Ott, Sergey Edunov, David Grangier, and Michael Auli. 2018. Scaling neural machine translation. In Proceedings of the Third Conference on Machine Translation (WMT).

   Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan, Edward Yang, Zachary DeVito, Zeming Lin, Alban Desmaison, Luca Antiga, and Adam Lerer. 2017. Automatic differentiation in PyTorch. In NIPS Autodiff Workshop.

   Matthew Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, and Luke Zettlemoyer. 2018. Deep contextualized word representations. In North American Association for Computational Linguistics (NAACL).

   Alec Radford, Karthik Narasimhan, Time Salimans, and Ilya Sutskever. 2018. Improving language understanding with unsupervised learning. Technical report, OpenAI.

   Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, and Ilya Sutskever. 2019. Language models are unsupervised multitask learners. Technical report, OpenAI.

   Pranav Rajpurkar, Robin Jia, and Percy Liang. 2018. Know what you don’t know: Unanswerable questions for squad. In Association for Computational Linguistics (ACL).

   Pranav Rajpurkar, Jian Zhang, Konstantin Lopyrev, and Percy Liang. 2016. SQuAD: 100,000+ questions for machine comprehension of text. In Empirical Methods in Natural Language Processing (EMNLP).

    Rico Sennrich, Barry Haddow, and Alexandra Birch. 2016. Neural machine translation of rare words with subword units. In Association for Computational Linguistics (ACL), pages 1715–1725.

   Richard Socher, Alex Perelygin, Jean Wu, Jason Chuang, Christopher D Manning, Andrew Ng, and Christopher Potts. 2013. Recursive deep models for semantic compositionality over a sentiment treebank. In Empirical Methods in Natural Language Processing (EMNLP).

   Kaitao Song, Xu Tan, Tao Qin, Jianfeng Lu, and Tie-Yan Liu. 2019. MASS: Masked sequence to sequence pre-training for language generation. In International Conference on Machine Learning (ICML).

   Yu Stephanie Sun, Shuohuan Wang, Yukun Li, Shikun Feng, Xuyi Chen, Han Zhang, Xinlun Tian, Danxiang Zhu, Hao Tian, and Hua Wu. 2019. ERNIE: Enhanced representation through knowledge integration. arXiv preprint arXiv:1904.09223.

   Trieu H Trinh and Quoc V Le. 2018. A simple method for commonsense reasoning. arXiv preprint arXiv:1806.02847.

   Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Łukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Advances in neural information processing systems.

   Alex Wang, Yada Pruksachatkun, Nikita Nangia, Amanpreet Singh, Julian Michael, Felix Hill, Omer Levy, and Samuel R. Bowman. 2019a. SuperGLUE: A stickier benchmark for general-purpose language understanding systems. arXiv preprint 1905.00537.

   Alex Wang, Amanpreet Singh, Julian Michael, Felix Hill, Omer Levy, and Samuel R. Bowman. 2019b. GLUE: A multi-task benchmark and analysis platform for natural language understanding. In International Conference on Learning Representations (ICLR).

   Alex Warstadt, Amanpreet Singh, and Samuel R. Bowman. 2018. Neural network acceptability judgments. arXiv preprint 1805.12471.

   Adina Williams, Nikita Nangia, and Samuel Bowman. 2018. A broad-coverage challenge corpus for sentence understanding through inference. In North American Association for Computational Linguistics (NAACL).

   Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, and Quoc V Le. 2019. Xlnet: Generalized autoregressive pretraining for language understanding. arXiv preprint arXiv:1906.08237.

   Yang You, Jing Li, Jonathan Hseu, Xiaodan Song, James Demmel, and Cho-Jui Hsieh. 2019. Reducing bert pre-training time from 3 days to 76 minutes. arXiv preprint arXiv:1904.00962.

   Rowan Zellers, Ari Holtzman, Hannah Rashkin, Yonatan Bisk, Ali Farhadi, Franziska Roesner, and Yejin Choi. 2019. Defending against neural fake news. arXiv preprint arXiv:1905.12616.

   Yukun Zhu, Ryan Kiros, Richard Zemel, Ruslan Salakhutdinov, Raquel Urtasun, Antonio Torralba, and Sanja Fidler. 2015. Aligning books and movies: Towards story-like visual explanations by watching movies and reading books. In arXiv preprint arXiv:1506.06724.

MNLI QNLI QQP RTE SST MRPC CoLA STS
RoBERTa base
+ all data + 500k steps 87.6 92.8 91.9 78.7 94.8 90.2 63.6 91.2
RoBERTalarge
with Books + Wiki 89.0 93.9 91.9 84.5 95.3 90.2 66.3 91.6
+ additional data (§3.2) 89.3 94.0 92.0 82.7 95.6 91.4 66.1 92.2
+ pretrain longer 300k 90.0 94.5 92.2 83.3 96.1 91.1 67.4 92.3
+ pretrain longer 500k 90.2 94.7 92.2 86.6 96.4 90.9 68.0 92.4
表8:针对RoBERTa的各种配置的GLUE任务的开发结果集。

超参数 RoBERTa large RoBERTa base
Number of Layers 24 12
Hidden size 1024 768
FFN inner hidden size 4096 3072
Attention heads 16 12
Attention head size 64 64
Dropout 0.1 0.1
Attention Dropout 0.1 0.1
Warmup Steps 30k 24k
Peak Learning Rate 4e-4 6e-4
Batch Size 8k 8k
Weight Decay 0.01 0.01
Max Steps 500k 500k
Learning Rate Decay Linear Linear
Adam ε 1e-6 1e-6
Adam β1 0.9 0.9
Adam β2 0.98 0.98
Gradient Clipping 0.0 0.0
表9:用于预训练RoBERTa large和RoBERTa base的超参数。

超参数 RACE SQuAD GLUE
Learning Rate 1e-5 1.5e-5 { 1e-5、2e-5、3e-5 }
Batch Size 16 48 { 16,32 }
Weight Decay 0.1 0.01 0.1
Max Epochs 4 2 10
Learning Rate Decay Linear Linear Linear
Warmup ratio 0.06 0.06 0.06
表10:用于在RACE,SQuAD和GLUE上微调RoBERTa large的超参数。

“ RoBERTa:稳健优化的BERT预训练方法”的附录

A 关于GLUE的完整结果

在表8中,我们列出 RoBERTa 的完整开发集结果。 我们给出遵循 BERT largelarge 配置以及遵循 BERT basebase 配置的结果。

B 预训练超参数

9描述预训练 RoBERTa large 和 RoBERTa base 的超参数

C 微调超参数

10中给出 RACE、SQuAD 和 GLUE 的微调超参数。 我们基于每个任务的5个随机种子的中值选择最佳超参数值。