RoBERTa - 论文解读

2022-02-16  本文已影响0人  涓涓自然卷
image.png
论文地址:https://arxiv.org/pdf/1907.11692.pdf
论文标题:
GitHub地址:
BERT论文解读:https://www.jianshu.com/p/18ebd5ab4e45

0、摘要:

语言模式预训练已经带来了显著的性能提升,但仔细比较不同方法是一个挑战。训练的计算成本很高,通常是在不同大小的私有数据集上进行的,我们将展示,超参数选择对最终结果有重大影响。我们对BERT 预训练进行了一项复制研究,仔细测量了许多关键超参数和训练数据大小的影响。

我们发现,BERT的训练明显不足,可以与发布后的每个模型的性能相匹配或超过。作者从模型设计选择(design choice)、训练策略、语料等方面入手,重新对BERT进行了预训练,得到RoBERTa。实验结果表明RoBERTa在GLUE、RACE和SQuAD都达到了SOTA。这些结果突出了以前被忽略的设计选择的重要性。

1、介绍:

自训练方法,如ELMo、GPT、XLM和XLNet带来了显著的性能提升,但是很难说清,这么方法中,哪一部分起到最关键的作用。训练在计算上是昂贵的,限制了可以进行的调整的数量,并且通常使用大小不同的私人训练数据进行训练,限制了我们测量建模效果的能力有所提高。

我们提出了一项BERT预训练的复制研究,其中包括对超参数调节和训练集大小的影响的仔细评估。我们发现BERT的训练明显不足,并提出了一种改进的训练BERT模型的方法,我们称之为RoBERTa,它可以匹配或超过所有post-BERT方法的性能。

○ RoBERTa改进很简单,包括:

RoBERTa在GLUE任务上,创造了4项新的SOTA记录,并在SQuAD和RACE上也与SOTA水平相匹配。

○ 总之,本文的贡献是:

2、 背景:

在本节中,我们简要概述了BERT的预训练方法和一些训练选择,我们将在下一节中进行实验研究。

2.1 设置:

BERT将两段(tokens序列)的串联作为输入, x1, . . . , xN 及 y1, . . . , yM。片段通常由多个自然句子组成。这两个段以单个输入序列的形式呈现给BERT,并用特殊标记对其进行分隔: [CLS], x1, . . . , xN , [SEP], y1, . . . , yM, [EOS]。M和N受到约束,使得M+N<T。其中T是一个参数,用于控制训练期间的最大序列长度。该模型首先在一个大型的未标记文本语料库上进行预训练,然后使用结束任务标记的数据进行微调。

2.2 架构:

BERT使用了现在无处不在的Transformer架构,我们将不详细回顾。我们使用带有L层的Transformer架构。每个Block块使用一个self-attention heads,隐藏层的维度为 H。

2.3 训练目标:

○ 训练期间,BERT的两个训练目标:

Masked Language Model (MLM):随机的输入序列中的token示例如下:选择并替换为特殊token[MASK]。在预测被masked的tokens时,MLM的目标函数是交叉熵损失函数。

BERT 的 mask策略:
随机选择 15% 的 token;
这些15%要被 masked 的 token 并不会真的全替换成 [MASK],而是从这些 token 中:
(1)随机选择 80% 替换成 [MASK] ;
(2)随机选择 10% 替换成随机 token;
(3)随机选择 10% 不改变原 token。
然后 使用交叉熵损失来预测原始的 token。

在最初的实现中,随机mask和replace在开始时执行一次,并在训练期间保存,尽管在实践中,数据是重复的,但每个训练句子的mask并不总是相同的。

Next Sentence Prediction (NSP)
下一句预测(NSP)NSP是一种二元分类损失,用于预测原始文本中两段话是否上下文。通过从文本语料库中选取连续的句子来构建正例。通过将不同文档中的片段配对,可以构建负例**。正反两个例子的抽样概率相等。

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

2.4 优化:

BERT使用Adam进行优化参数如下: β1 = 0.9, β2 = 0.999, ǫ = 1e-6,L2重量衰减系数为0.01,在前10000个步骤中,学习速率被预热到1e-4的峰值,然后线性衰减。BERT训练时,所有层和注意力权重的dropout值均为0.1,并具有一个GELU激活函数。模型针对S=1000000更新进行预训练,小批量包含最大长度为T=512的 B=256 序列标记。

2.5 数据:

3、实验设置:

在本节中,将介绍我们对BERT进行复制研究的实验设置。

3.1 实施:

我们在FAIRSEQ重新实施了BERT。我们主要遵循原始BERT优化超参数,除了峰值学习率和预热步骤数,这两个参数分别针对每个设置进行调整。此外,我们还发现训练对Adam 的ε项非常敏感,在某些情况下,我们在调整后获得了更好的性能或稳定性。同样,我们发现当以较大的batch size训练时,将正则项系数β2=0.98也能提升模型稳定性。

我们用最多T=512个标记的序列进行预训练。与Devlin等人不同,我们不会随机注入短序列,也不会在前90%的更新中使用缩短的序列长度进行训练。我们只训练全长序列。我们在DGX-1机器上使用混合精度浮点算法进行训练,每台机器配备 8×32GB Nvidia V100 GPU,由Infiniband互连。

3.2 数据:

BERT风格的预训练主要依赖于大量的文本。Baevski等人对比于BERT,通过几项工作针对更大、更多样化的数据集进行了训练,得以证明:增加数据大小可以提高最终任务的性能

不幸的是,并非所有额外的数据集都可以公开发布。在文中的研究中,作者专注于收集尽可能多的实验数据,使能够在每次比较中匹配数据的整体质量和数量。

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

3.3 评估:

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

○ GLUE通用语言理解评估基准是评估自然语言理解系统的9个数据集的集合。

6项任务分为单句分类任务和句子对分类任务。GLUE组织者提供训练和开发数据拆分,以及一个提交服务器和排行榜,允许参与者评估和比较他们的系统与私有的测试数据。

对于第4节中的复制研究,我们报告了在相应的单任务训练数据(即,没有多任务训练或整合)上微调预训练模型后,开发集的结果。我们的微调程序遵循最初的BERT论文。在第5节中,我们还报告了从公共排行榜获得的测试集结果。这些结果取决于我们在第5.1节中描述的几个特定于任务的修改。

○ 斯坦福问答数据集(STAND)提供了一段上下文和一个问题。任务是回答这个问题通过从上下文中提取相关span。

我们评估了两个版本的SQuAD:V1.1 和 V2.0。在V1中上下文总是包含答案,而在V2中提供的上下文中,有些问题没有得到回答,使任务更具挑战性。

对于SQuAD 的V1.1版本,我们采用了与BERT相同的span预测方法。 对于SQuAD V2.2,我们添加了一个额外的二元分类器来预测问题是否可以回答,我们通过将分类项和span损失项相加来联合训练。在评估过程中,我们只预测分类为成对的span指数。

(3)RACE: ReAding Comprehension from Examinations

○ RACE考试阅读理解任务是一个大规模的阅读理解数据集:

包含28000多篇文章和近100000个问题。该数据集收集自中国为中学生设计的英语考试。在比赛中,每篇文章都有多个问题。对于每个问题的任务是从四个选项中选择一个正确答案。与其他流行的阅读理解数据集相比,RACE的语境要长得多,而且需要推理的问题比例非常大。

4 训练程序分析:

该章节探索和量化什么样的设置对于预训练BERT是重要的。
作者实验的模型初始设置与BERT-base ( L = 12 , H = 768 , A = 12 , 110 M params ) 一致。

4.1 Static vs. Dynamic Masking:
○ BERT依赖于随机mask和预测标记。原始的BERT实现在数据预处理期间执行一次mask,从而产生一个静态mask。为了避免对每个epoch中的每个训练实例使用相同的mask,训练数据被复制了10次,以便在40个epoch中,每个序列以10种不同的方式被mask训练。因此,在训练过程中,每个训练序列都被用同一个mask观看四次。

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

○ 动态mask:对每个序列进行mask的操作是在喂给模型该序列时执行的。这在预训练更多步骤或更大数据集时,至关重要。
image.png
实验结果:

表1发现:动态mask略比静态mask好,因此作者后面的实验均采用动态mask方式。

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

Model Input Format and Next Sentence Prediction

在原始的BERT预训练过程中,模型观察到两个串联的文档段,它们要么是连续采样的来自同一文档(p=0.5)或不同文档。除了MLM 建模目标,该模型还通过辅助下一句预测(NSP)来预测观察到的文档片段是否来自相同或不同的文档。

假设NSP loss是训练原始BERT模型的一个重要因素。Devlin等人观察到,移除NSP会损害性能,QNLI、MNLI和SQuAD1.1的性能显著下降。然而,最近的一些研究质疑了NSP loss 的必要性。为了更好地理解这种差异,我们比较了几种不同的训练形式:

image.png
实验结果:

然而,由于DOC-sequences格式会导致不同的批量大小,我们在剩下的实验中使用FULL-SENTENCES,以便与相关工作进行比较。

4.3 大批量训练:

过去的工作在神经机器翻译已经表明,训练非常大的小批量可以同时提高优化速度和结束任务性能时,学习率适当增加。最近的研究表明,BERT很适合较大规模的batch训练。

Devlin等人最初对BERT-base进行了1M步的训练,批量大小为256个序列。这相当于计算成本,通过梯度累积,训练125K步,批量大小为2K序列,或批量为8K的31K步骤。

image.png

在表3中,我们比较了BERT-base在增加batch size时的困惑度和最终任务性能,控制了通过训练数据的次数。我们观察到,大批量的训练提高了MLM模型目标的复杂性,以及最终任务的准确性。通过分布式数据并行训练,大批量也更容易并行化,在以后的实验中,我们使用8K序列进行批量训练。

值得注意的是,You等人用更大的批量训练BERT,最多32K序列。我们将进一步探索大批量训练的局限性留给未来的工作。

总结:通过实验发现,增大batch size能够进一步提升模型的性能,且更大的batch size更易于分布式数据的并行训练。
4.4 文本编码 - Text Encoding:
○ 字节对编码Byte-Pair Encoding (BPE) :

是字符级和单词级表示的混合,允许处理自然语言语料库中常见的大型词汇。BPE依赖于子词单元,而不是完整的词,子词单元是通过对训练语料库进行统计分析来提取的。BPE词汇表的大小通常在10K-100K子单词单位之间。然而,unicode字符在其中占了相当大的一部分在建模大型和多样的语料库时使用的词汇,例如本工作中考虑的语料库。Radford et al介绍了一种巧妙的BPE实现,它使用字节而不是unicode字符作为基本子字单元。使用字节可以学习中等大小(50K个单位)的子单词词汇表,它仍然可以对任何输入文本进行编码,而不引入任何“未知”标记。

最初的BERT实现使用字符级别大小为30K的BPE词汇表,在使用启发式标记化规则对输入进行预处理后学习。在Radford等人之后,我们考虑用更大的字节级的BPE词汇来训练BERT,其中包含50K的子字单位,而不需要任何额外的预处理或令牌化。这分别为BERT - base和Bert - lagle增加了约15M和20M的额外参数。

文本编码总结以下几点:

5、RoBERTa:

○ 具体来说,RoBERTa使用:

此外,我们还调查了在之前的工作中被低估的另外两个重要因素

例如,最近提出的XLNet架构使用比原始BERT多近10倍的数据进行预训练。它还以8倍于优化步骤一半的批量进行训练,因此在预训练中看到的序列数量是BERT的4倍。

为了将这些因素的重要性与其他建模选择区分开来,从训练RoBERTa开始遵循大型架构(L=24,H=1024,A=16,355M参数)。在Devlin等人使用的可比图书语料库和维基百科数据集上预训练了10万步。使用1024个V100 GPU对模型进行了大约一天的预训练。

image.png
实验结果:
5.1 GLUE 结果:
image.png
对于GLUE,我们考虑两个定影设置:
○ 特定于任务的改进:

GLUE任务中的两个需要特定于任务的微调方法,以实现有竞争力的排行榜结果。

5.2 SQuAD 结果:

与过去的工作相比,我们对SQuAD采取了更简单的方法。特别是,虽然BERT和XLNet都使用额外的QA数据集来增加他们的训练数据,但我们仅使用提供的SQuAD训练数据对RoBERTa进行微调。Yang等人还采用了一个定制的分层学习速率计划layer-wise learning rate schedule来进行微调。

image.png

对于SQuAD v1.1我们遵循与Devlin等人相同的微调程序。此外SQuAD v2.0,我们还对给定的这个问题是可以回答的;我们通过将分类项和span loss项相加,将该分类器与span 预测器联合训练。

结果:

结果我们在表6中给出了我们的结果。SQuAD v1.1开发集,RoBERTa与XLNet最先进的设置相匹配(SOTA:state-of-the-art)。

在SQuAD v2.0开发集,RoBERTa设置了一个新的SOTA,提高了0.4个点(EM)和0.6个点(F1)。我们还将RoBERTa提交公SQuA D2.0排行榜,并评估其相对于其他系统的性能。

大多数顶级系统建立在BERT或XLNet。两者都依赖于额外的外部训练数据。相比之下,我们提交的工作没有使用任何其他数据。单一RoBERTa模型优于其他所有单一模型,是不依赖数据扩充的模型中得分最高的。

5.3 RACE 结果:

在RACE中,系统提供一条通道文本、一个相关问题和四个候选答案。系统需要对以下哪项进行分类这四个候选答案是正确的。我们通过将每个候选答案与相应的问题和段落连接起来来改进RoBERTa的这项任务。然后我们对每个这四个序列并将[CLS]经过全连接层进行表示,用于预测正确答案。截断长度大于问题-答案对的128个tokens,甚至还包括通道,以便总长度最多为512个tokens。

image.png

6、相关工作:

最近的许多论文都为每个最终任务使用了微调模型的基本方式,并使用某种不同的MLM模型目标进行预训练。然而,较新的方法通过多任务微调、实体嵌入、span预测和自回归预训练的多种变体提高了性能。通过在更多数据上训练更大的模型,性能通常也会得到改善。我们的目标是复制、简化和更好地调整BERT的训练,作为更好地理解所有这些方法的相对性能的参考点。

7、 结论:

在预训练BERT模型时,我们仔细评估了一些设计策略。发现,通过对模型进行更长时间的训练,对更多数据进行更大批量的训练,可以显著提高性能;删除下一句预测目标NSP;长序列训练;以及动态地改变应用于训练数据的mask模式。这些改进称之为RoBERTa,在GLUE, RACE 和 SQuAD方面取得了SOTA,而不需要对GLUE进行多任务微调,也不需要为SQuAD提供额外的数据。

这些结果说明了这些之前被忽视的设计决策的重要性,并表明BERT的预训练目标与最近提出的备选方案相比仍然具有竞争力。此外,我们还使用了一个新的数据集CC-NEWS,并在以下网址发布了预训练和微调的模型和代码:https://github.com/pytorch/fairseq

上一篇 下一篇

猜你喜欢

热点阅读