论文阅读RoBERTa: A Robustly Optimized BERT Pretraining Approach

论文信息

题目

RoBERTa: A Robustly Optimized BERT Pretraining Approach
一个强力优化的BERT预训练方法

作者

Yinhan Liu,Myle Ott,Naman Goyal, Jingfei Du等

其他

论文下载地址:https://arxiv.org/abs/1907.11692?context=cs.CL


Abstract

这篇论文更像是一篇丰富的实验报告,作者发现BERT严重训练不足,若加大训练后,BERT性能会有很大的提升。
因此,作者从模型设计选择(design choice)、训练策略、语料等方面入手,重新对BERT进行了预训练,得到RoBERTa。实验结果表明RoBERTa在GLUE、RACE和SQuAD都达到了SOTA。这些结果突出了以前被忽略的设计选择的重要性。


Introduction

ELMo、GPT、BERT、XLM等方法虽取得了很大的性能提升,但是很难说清,这么方法中,哪一部分起到最关键的作用。

作者对BERT的预训练过程进行了复现研究,对超参数和训练集的大小的影响进行了评估。

经过实验,作者发现BERT严重训练不足,并提出了训练BERT模型的诀窍,将优化后的模型称为RoBerta,超越了所有现有BERT改进模型。

相比原BERT模型,该文提出的训练的改进方法:

  • 训练更久,增加batch size和数据。
  • 移除BERT中的NSP任务
  • 训练更长的序列
  • 根据训练数据动态调整mask方案

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

该文章的贡献总结:

  • 提出一系列重要的BERT设计选择和训练策略。
  • 使用新的更大的数据集CC-NEWS,证明了更多的训练数据能够进一步提升BERT模型在下流任务中的表现。
  • 实验结果表明,masked language model在正确的模型设计配置下,比最近提出的其他模型方法都要好。

Background

作者首先回顾介绍了BERT模型的一些内容,本文在这里省略。


Experimental Setup

该节介绍了实验的一些设置

Implementation

作者使用FAIRSEQ复现BERT,但改变了学习率的峰值以及学习率预热的步数,根据不同的设置调整数值,其他超参数与原BERT相同。

作者发现训练时模型对Adam的ε系数敏感,有时通过调整该系数会取得更好的稳定性。当以较大的batch size训练时,将正则项系数β2=0.98也能提升模型稳定性。

Data

作者实验使用了五种大小和领域不同的英语语料库,总计超过160GB的未压缩文本。

数据集:
在这里插入图片描述
在这里插入图片描述

Evaluation

使用GLUE、SQuAD、RACE三类任务进行评估。


Training Procedure Analysis

该章节探索和量化什么样的设置对于预训练BERT是重要的。

作者实验的模型初始设置与 B E R T B A S E ( L = 12 , H = 768 , A = 12 , 110 M p a r a m s ) BERT_{BASE} (L =12, H = 768, A = 12, 110M params) BERTBASE(L=12,H=768,A=12,110Mparams)一致。

Static vs. Dynamic Masking

原始BERT采用静态mask的方式,mask处理是在数据预处理过程中完成。为了避免每个epoch遇见的每个训练实例的mask情况都相同,故将训练数据复制10份,并以10种不同的mask方式进行遮罩,但是即使这样,训练40epoch,同一种mask方式的同一句子,在训练时模型也会重复遇见4次。

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

实验结果对比分析:
在这里插入图片描述
动态mask略比静态mask好,因此作者后面的实验均采用动态mask方式。

Model Input Format and Next Sentence Prediction

Devlin发现移除NSP任务在QNLI,MNLI等任务上会有大幅度性能下降,然而最近的一些工作质疑NSP的必要性。因此,作者做了一系列的实验来分析NSP任务的必要性。

为了更好的对比试验,作者提出了以下几种供选择的训练方案:
在这里插入图片描述
在这里插入图片描述

  • SEGMENT-PAIR:输入为一个片段,可以包含多个句子,但总长度不超过512tokens,包含NSP loss。
  • SENTENCE-PAIR:每个输入为一个句子对,为了保持总长度与SEGMENT-PAIR一致,故增加了batch size。
  • FULL-SENTENCES:取一系列连续的句子,总长度不超过512tokens,句子可跨文档,不同文档之间使用额外一个分割标志位来标识,不包含NSP loss。
  • DOC-SENTENCES:与FULL-SENTENCES类似,不过不能跨文档。不包含NSP loss。

实验结果分析:
在这里插入图片描述

  • 作者发现使用单个句子会损害下游任务的性能,作者推测这是因为该模型无法学习远程依赖关系。
  • 去掉NSP任务会有略微的提升。
  • DOC-SENTENCES比FULL-SENTENCES表现好。

Training with large batches

最近的研究表明,BERT很适合较大规模的batch训练。

实验结果分析:

在这里插入图片描述
通过实验发现,增大batch size能够进一步提升模型的性能,且更大的batch size更易于分布式数据的并行训练。

Text Encoding

字节对编码(BPE)是字符级和单词级表示形式的混合体,可以处理自然语言语料库中常见的大词汇。

Radford在GPT2里提出了一种更巧妙的BPE实现版本byte-level text encoding,该方法使用bytes作为基础的子词单元,这样便把词汇表的大小控制到了5w。它可以在不需要引入任何未知字符前提下对任意文本进行编码。

BERT原始版本使用字符级(character-level)的BPE词汇表,大小是3w,是用启发式分词规则对输入进行预处理学习得到的。

之前的一些实验结果表明,这两种文本编码的实验性能区别不大,可能Radford BPE Encoding在某些任务上的终端性能略微差点,但是RoBerta作者坚信通用的编码模式比性能上的轻微损失更重要,所以在实验中采用了byte-level text encoding。


RoBERTa

结合之前章节提出的改进配置,作者将这些配置结合起来,改进后的模型成为RoBERTa。
RoBERTa使用dynamic mask、FULL-SENTENCES without NSP、large mini-batches以及byte-level BPE等设置。

作者训练RoBERTa时与 B E R T L A R G E ( L = 24 , H = 1024 , A = 16 , 355 M p a r a m e t e r s ) BERT_{LARGE}(L = 24, H = 1024, A = 16, 355M parameters) BERTLARGE(L=24,H=1024,A=16,355Mparameters)结构一致。

实验结果:
在这里插入图片描述

实验发现,RoBERTa相比于 B E R T l a r g e BERT_{large} BERTlarge,性能有很大的提升。

进一步,使用更多的训练数据训练RoBERTa(160GB的训练文本),结果发现模型性能进一步提升,证明了在预训练过程中,数据集规模和多样性的重要性。

增大预训练步骤,将step从100K增加大300K、500K,模型性能进一步明显提升,且最长训练过后的模型,并未出现过拟合现象。

作者在GLUE,SQuaD和RACE这三个不同的基准上评估了RoBERTa模型。

GLUE Results

在GLUE上的结果:对于单任务单模型,RoBERTa九个任务均达到SOTA。
在这里插入图片描述

SQuAD Results

在SQuAD上的结果:RoBERTa的成绩还可以。

在这里插入图片描述

RACE Results

在RACE上的对比结果:从实验结果上看,RoBERTa均达到了SOTA。

在这里插入图片描述


Conclusion

RoBERTa其实本质上只是一个调参达到最优的BERT,和XLNet不相上下。
RoBERTa再一次证明BERT才是众多预训练模型中的首选和扛鼎之作,也是那个真正引起质变的模型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值