[预训练语言模型专题] RoBERTa: 捍卫BERT的尊严

2020 年 6 月 18 日 AINLP

本文为预训练语言模型专题的第15篇。
快速传送门     
1-4: [萌芽时代][风起云涌][文本分类通用技巧] 、  [GPT家族]
5-8: [BERT来临][浅析BERT代码][ERNIE合集]、[ MT-DNN(KD)]
9-12: [Transformer][Transformer-XL][UniLM][Mass-Bart]
13-14: [跨语种模型][XLNet]


感谢清华大学自然语言处理实验室对预训练语言模型架构的梳理,我们将沿此脉络前行,探索预训练语言模型的前沿技术,红框中为已介绍的文章,绿框中为本期介绍的模型,欢迎大家留言讨论交流。



RoBERTa: A Robustly Optimized BERT Pretraining Approach(2019)

众所周知,BERT对NLP领域的发展产生了极大的影响,刚一出现,它在当时的不少榜单上,都取得了压倒性的优势。在那之后,预训练语言模型领域有了蓬勃的发展,各种模型百花齐放,其中有一些还在各排行榜上超越了BERT,成为了当时的state-of-art。

而本文是对BERT预训练语言模型进行了一个重复性的研究。作者认为BERT实际上是大大地被undertrained了,将之充分地训练以后可以反超在它之后发布的所有模型的效果。同时,在GLUE,RACE,SQuAD等数据集上,作者进行了实验,确实又夺得了state-of-art的效果。作者认为,这显示人们以前忽略了设计选择的重要性,同时对最近的一些报告上,模型效果提升的来源(是否是结构导致的提升)提出了疑问。

大量的预训练模型如ELMo,GPT,BERT,XLM,XLNet等都给下游的任务带来了很大的收益,但是很难去确定这些收益来源于哪里,因为语言模型的预训练是很昂贵的。作者对BERT的预训练进行了仔细的评估,包括超参数和训练集大小的配置,发现BERT其实没有很充分地训练,从而提出了更好地训练BERT的方法,称为RoBERTa,它超过了在BERT之后发表的所有post-BERT方法的效果。

方法其实很简单:

  1. 更长的时间更大的batch size更多的数据进行训练
  2. 去掉BERT中的 NSP目标(next sentence prediction)
  3. 更长的句子上进行训练
  4. 根据训练数据 动态地改变mask的模式

同时作者总结了一下文章的主要贡献:

  • 展示了一组重要的BERT的设计选择和新的训练策略,使模型在下游任务上取得更好的效果。
  • 使用了新的dataset,CC-News,并确认了更多的数据预训练能给下游任务带来更好的效果
  • 证明了在合适的设计选择下,masked language model(BERT)是和所有最新发布的模型相比都是极具竞争力的

模型细节

RoBERTa同样使用了Adam,β1为0.9,β2为0.999,ε=1e-6,L2 weight decay为0.01,全部层的dropout为0.1,线性激活为GELU。和BERT不同的是,其warmup的步数,以及warmup到达的最大学习率会根据设置而进行finetune,而且RoBERTa所有的训练样本几乎都是全长512的序列,这与BERT先通过小的序列长度进行训练不同。

数据

BERT类的模型依赖于大规模的文本进行训练,RoBERTa的训练样本就比BERT更多而且更有多样性。最后使用了BOOKCORPUS(16GB),CC-NEWS(76GB),OPENWEBTEXT(38GB),STORIES(31GB) 总共160GB左右的数据,BOOKCORPUS是BERT原始的训练数据,可以看到,RoBERTA数据量多了10倍

模型通过混合精度在8 * 32GB的V100上进行训练。

动态掩码(Dynamic Masking)

BERT的masking是在预处理时进行的,导致这种Masking是静态的,每个epoch的masking结果一致。原本的BERT为了避免这种情况,把数据复制了十份,然后进行了十种不同的静态masking。这样在40个epochs的训练中,同样masking的数据会在整个训练中出现四次。

而RoBERTa中使用Dynamic Masking,只是在序列送入模型中的时候才去进行动态的masking,这样在更大的数据集上或者更多步数的训练上会表现更好。

输入形式与NSP任务

作者比较了几种输入方式

  • SEGMENT-PAIR+NSP 首先模型输入为包括两个segment的SEGMENT PAIR,其中每个segment可以包含多个句子,用[SEP]分割,这和BERT本来的输入方式相同,并且包含NSP任务。
  • SENTENCE-PAIR+NSP 模型输入为包含两个句子的SENTENCE-PAIR, 用[SEP]分割,这会导致序列的长度远小于512,同样保持了NSP任务。
  • FULL-SENTENCES 模型输入为全量的句子,填满512的长度,采集样本的时候可以跨越文章的界限,去除了NSP loss
  • DOC-SENTENCES 模型输入和FULL-SENTENCE类似,但是一个样本不能跨越两个document

比较了SEGMENT-PAIR和SENTENCE-PAIR后,作者发现,使用单个句子相比使用句子组成的Segment会降低下游任务的结果。

比较了SEGMENT-PAIR和DOC-SENTENCES两个模式后,作者发现没有NSP,下游任务的效果更好。

最后,作者比较DOC-SENTENCES和FULL-SENTENCES,作者结论是不跨越document进行取样效果更好。

文本编码方式

Byte-Pair Encoding(BPE)是一种介于字级别和词级别之间的编码表示,基于subwords units。BPE的字典一般从10K-100K的范围内,随着语料而变化。但有一种聪明的做法是利用bytes来替代subword中的unicode字符,这样就可以用一个不太大的(50Kunit)的字典来对任意的输入进行编码而不引入未知的token。虽然相比于BERT使用30K的字符BPE的字典,Roberta会在Embedding层额外引入15M到20M的参数量,但是用一个固定的词典,相比而言是比较好的,而两者在性能上几乎没有区别。

效果比较

从上图中可以看到,数据增多,训练更长时间都能带来收益,和XLNET的比较中,RoBERTa并没有落于下风。

在GLUE,RACE等数据集上,也比当时的state-of-art,XLNet更好。

最后总结下,提高BERT模型下游任务上性能的方法有,用更多数据集以更大的batch size来训练更多的时间,去掉NSP任务目标,在更长的句子上预训练,动态地改变masking等。经过这些操作的RoBERTa,在各排行榜上都取得了state-of-art的效果。附上工程链接 https://github.com/pytorch/fairseq

未完待续

本期的论文就给大家分享到这里,感谢大家的阅读和支持,下期我们会给大家带来其他预训练语言模型的介绍,敬请大家期待!


推荐阅读


如何让Bert在finetune小数据集时更“稳”一点

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

太赞了!Springer面向公众开放电子书籍,附65本数学、编程、机器学习、深度学习、数据挖掘、数据科学等书籍链接及打包下载

数学之美中盛赞的 Michael Collins 教授,他的NLP课程要不要收藏?

自动作诗机&藏头诗生成器:五言、七言、绝句、律诗全了

这门斯坦福大学自然语言处理经典入门课,我放到B站了

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。


阅读至此了,点个在看吧👇

登录查看更多
1

相关内容

近年来,预训练模型(例如ELMo、GPT、BERT和XLNet等)的快速发展大幅提升了诸多NLP任务的整体水平,同时也使得很多应用场景进入到实际落地阶段。预训练语言模型本身就是神经网络语言模型,它的特点包括:第一,可以使用大规模无标注纯文本语料进行训练;第二,可以用于各类下游NLP任务,不是针对某项定制的,但以后可用在下游NIP任务上,你不需要为下游任务专门设计一种神经网络,或者提供一种结构,直接在几种给定的固定框架中选择一种进行 fine-tune,就可以从而得到很好的结果。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
【北航】面向自然语言处理的预训练技术研究综述
专知会员服务
114+阅读 · 2020年4月23日
【ACL2020-Allen AI】预训练语言模型中的无监督域聚类
专知会员服务
24+阅读 · 2020年4月7日
BERT技术体系综述论文:40项分析探究BERT如何work
专知会员服务
140+阅读 · 2020年3月1日
BERT进展2019四篇必读论文
专知会员服务
68+阅读 · 2020年1月2日
【Google论文】ALBERT:自我监督学习语言表达的精简BERT
专知会员服务
24+阅读 · 2019年11月4日
基于知识蒸馏的BERT模型压缩
大数据文摘
18+阅读 · 2019年10月14日
RoBERTa中文预训练模型:RoBERTa for Chinese
PaperWeekly
57+阅读 · 2019年9月16日
带你读论文丨 8 篇论文梳理 BERT 相关模型
新智元
9+阅读 · 2019年9月9日
XLNet团队:只要公平对比,BERT毫无还手之力
机器之心
6+阅读 · 2019年7月23日
奇点已过?聊聊BERT之后的NLP时代
AI研习社
4+阅读 · 2019年6月6日
站在BERT肩膀上的NLP新秀们(PART I)
AINLP
30+阅读 · 2019年6月4日
图解2018年领先的两大NLP模型:BERT和ELMo
新智元
9+阅读 · 2018年12月14日
Arxiv
5+阅读 · 2019年10月31日
Arxiv
20+阅读 · 2019年9月7日
Arxiv
4+阅读 · 2019年9月5日
Arxiv
6+阅读 · 2019年8月22日
Arxiv
8+阅读 · 2019年3月21日
Arxiv
12+阅读 · 2019年2月28日
VIP会员
相关资讯
基于知识蒸馏的BERT模型压缩
大数据文摘
18+阅读 · 2019年10月14日
RoBERTa中文预训练模型:RoBERTa for Chinese
PaperWeekly
57+阅读 · 2019年9月16日
带你读论文丨 8 篇论文梳理 BERT 相关模型
新智元
9+阅读 · 2019年9月9日
XLNet团队:只要公平对比,BERT毫无还手之力
机器之心
6+阅读 · 2019年7月23日
奇点已过?聊聊BERT之后的NLP时代
AI研习社
4+阅读 · 2019年6月6日
站在BERT肩膀上的NLP新秀们(PART I)
AINLP
30+阅读 · 2019年6月4日
图解2018年领先的两大NLP模型:BERT和ELMo
新智元
9+阅读 · 2018年12月14日
相关论文
Top
微信扫码咨询专知VIP会员