RoBERTa:A Robustly Optimized BERT Pretraining Approach(2019-7-26)
模型概述
RoBERTa可以看作是BERT的改进版,从模型结构上讲,相比BERT,RoBERTa基本没有什么创新,它更像是关于BERT在预训练方面进一步的探索。其改进了BERT很多的预训练策略,其结果显示,原始BERT可能训练不足,并没有充分地学习到训练数据中的语言知识。
RoBERTa在模型规模、算力和数据上,与BERT相比主要有以下改进:
更大的bacth size。RoBERTa在训练过程中使用了更大的bacth size。尝试过从256到8000不等的bacth size。
更多的训练数据。RoBERTa采用了160G的训练文本,而BERT仅采用了16G的训练文本。
更长的训练步骤。RoBERT在160G的训练数据、8K的batch size上训练步骤高达500K。
RoBERTa在训练方法上对比BERT改进的地方有:去掉下一句预测(NSP)任务;采用动态掩码;采用BPE编码方式。
总结一下,用一张图来表示:
模型优化
采用动态掩码
BERT中有个Masking Language Model(MLM)预训练任务,在准备训练数据的时候,需要Mask掉一些token,训练过程中让模型去预测这些token,这里将数据Mask后,训练数据将不再变化,将使用这些数据一直训练直到结束,这种Mask方式被称为Static Masking。
如果在训练过程中,期望每轮的训练数据中,Mask的位置也相应地发生变化,这就是Dynamic Masking,RoBERTa使用的就是Dynamic Masking。
在RoBERTa中,它具体是这么实现的,将原始的训练数据复制多份,然后进行Masking。这样相同的数据被随机Masking的位置也就发生了变化,相当于实现了Dynamic Masking的目的。例如原始数据共计复制了10份数据,共计需要训练40轮,则每种mask的方式在训练中会被使用4次。
取消NSP任务,使用FULL-SENTENCES构造数据的方式
BERT中在构造数据进行NSP任务的时候是这么做的,将两个segment进行拼接作为一串序列输入模型,然后使用NSP任务去预测这两个segment是否具有上下文的关系,但序列整体的长度小于512。
然而,RoBERTa通过实验发现,去掉NSP任务将会提升down-stream任务的指标。如图所示:
其中,SEGMENT-PAIR、SENTENCE-PAIR、FULL-SENTENCES、DOC-SENTENCE分别表示不同的构造输入数据的方式,RoBERTa使用了FULL-SENTENCES,并且去掉了NSP任务。
FULL-SENTENCES表示从一篇文章或者多篇文章中连续抽取句子,填充到模型输入序列中。也就是说,一个输入序列有可能是跨越多个文章边界的。具体来讲,它会从一篇文章中连续地抽取句子填充输入序列,但是如果到了文章结尾,那么将会从下一个文章中继续抽取句子填充到该序列中,不同文章中的内容还是按照SEP分隔符进行分割。
采用BPE编码
Byte-Pair Encodeing(BPE)是一种表示单词,生成词表的方式。BERT中的BPE算法是基于字符的BPE算法,由它构造的”单词”往往位于字符和单词之间,常见的形式就是单词中的片段作为一个独立的”单词”,特别是对于那些比较长的单词。比如单词woderful有可能会被拆分成两个子单词”wonder”和”ful”。
不同于BERT,RoBERTa使用了基于Byte的BPE,词表中共计包含50K左右的单词,这种方式的不需要担心未登录词的出现,因为它会从Byte的层面去分解单词。
更大的数据
相比BERT, RoBERTa使用了更多的训练数据:
更长的训练步骤
RoBERTa随着训练数据和训练步数的增加,模型在down-stream的表现也不断提升。
更大的batch size
RoBERTa通过增加训练过程中Batch Size的大小,来观看模型的在预训练任务和down-stream任务上的表现。发现增加Batch Size有利于降低保留的训练数据的Perplexity,提高down-stream的指标。
另外,RoBERTa参考transformer的改进,使用β1\beta_1β1=0.9,β2\beta_2β2=0.999,ϵ\epsilonϵ=1e-6,weight_decay_rate=0.01,num_warmup_steps=10000,init_lr=1e-4的自适应学习率的Adam优化器。
模型参考
论文地址:https://arxiv.org/abs/1907.11692
代码地址:https://github.com/pytorch/fairseq
RoBERTa:A Robustly Optimized BERT Pretraining Approach(2019-7-26)相关推荐
- RoBERTa: A Robustly Optimized BERT Pretraining Approach(通篇翻译)
RoBERTa:一种稳健优化的BERT预训练方法 Yinhan Liu ∗ § Myle Ott ∗§ Naman Goyal ∗§ Jingfei Du ∗§ Mandar Joshi † Danq ...
- 【预训练语言模型】RoBERTa: A Robustly Optimized BERT Pretraining Approach
·阅读摘要: 本文在BERT模型的基础上进行了一些改进,提出了RoBERTa模型,并证明了RoBERTa比BERT的效果更好一些. ·参考文献: [1] RoBERTa: A Robustly ...
- 论文阅读——RoBERTa A Robustly Optimized BERT Pretraining Approach
RoBERTa A Robustly Optimized BERT Pretraining Approach Abstract Devlin等人在 BERT Pre-training of Deep ...
- 《论文阅读》RoBERTa: A Robustly Optimized BERT Pretraining Approach
<论文阅读>RoBERTa: A Robustly Optimized BERT Pretraining Approach 简介 想法来源 数据集的选择 创新点 总结 期刊:arxiv 2 ...
- RoBERTa: A Robustly Optimized BERT Pretraining Approach
1 简介 本文根据2019年<RoBERTa: A Robustly Optimized BERT Pretraining Approach>翻译总结的. RoBERTa:稳健优化BERT ...
- RoBERTa: A Robustly Optimized BERT Pretraining Approach
Abstract Dev 目录 Abstract 1 Introduction 本文贡献: lin等人在 BERT Pre-training of Deep Bidirectional Transfo ...
- mootools系列:打造属于你自己的Popup(弹出框)——扩展功能篇
为弹出框(Popup)添加"关闭(×)"按钮 如弹出框结构代码所示,关闭按钮标示"×"是放置在一div中的.使其具有关闭整个弹出框的功能,只要在创建该div时, ...
- 疑问:当流量被封禁之后(论资本之力):防流量被恶意盗挖(抛砖篇)
疑问:当流量被封禁之后(论资本之力):防流量被恶意盗挖(抛砖篇) 从没想过会有这么一天,带着这个疑问,写下今天的最后一篇博客. 如何防控平台流量被恶意盗挖? 疑问1:如何防控平台流量被恶意盗挖? 疑问 ...
- uni-app开发:tabar组件与顶部导航栏(功能开发篇)
uni-app开发:tabar组件与顶部导航栏(含右侧icon点击功能)[结合:案例Demo截图] 一.效果图 · 截图: 二. tabar组件 + 顶部导航栏(含右侧icon点击功能) 组件的代码调 ...
最新文章
- Angular系列学习二:基本的组件说明、自定义组件和部分细节说明
- 【七招破解WinXP系统访问网络变慢的故障】
- Mysql的垂直分表-新建
- case when then else 详解
- 进入登录页时,用户名输入框自动聚焦、按enter键让密码框聚焦,完整输入信息后登录
- Python3正则表达式
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- 双11首日全国共揽收快递包裹5.69亿件 同比增长28.54%
- 小鹏汽车拟挂牌港交所 披露了一些有意思的数据
- 软件工程第1次阅读作业
- unity描边发光shader_Unity Shader 边缘高亮、描边
- 计算机木马不会主动传播什么疾病,研究如何制作自动运行的木马病毒以及如何传播...
- Lenovo联想键盘关闭fn功能恢复F1-F12按键
- 图网络模型原理详解(Graph Network)
- Ubuntu下VSCode使用等宽字体设置
- mac 上装windows系统 win10 没声音 耳机也没声音
- mysql 升级mariadb_mariadb升级
- 【单片机笔记】基于LM358的差分放大,电流检测电路
- 10.高光反射Blinn
- 给一个喝酒青年的公开状