一、摘要
- 预训练模型在语言模型中起到了很大的作用,但是训练成本很高。并且很多预训练模型都是使用不同大小的私有数据集进行训练,超参数的选择也会直接对结果产生影响。
- 本文提出的模型仔细考虑了许多关键超参数和训练集大小的影响。
- 本文发现Bert模型没有充分得到训练,但是仍然可以超过其他模型的效果。
二、介绍
- 本文是基于Bert模型提出了RoBERTa模型。主要改进有以下四个方面:
- 使用更多的批量、更多的数据训练更长的时间
- 移除了Bert模型中next sentence prediction objective
- 可以训练更长的序列
- 使用了动态masking
- RoBERTa模型在CC-NEWS数据集上进行训练,并在GLUE和SQUAD数据集上取得了较好的成果
三、背景
本文中,这部分主要是对原始的Bert模型进行了介绍,包括的知识点主要有以下几个方面:
- Bert模型运用了Masked Language Model和Next Sentence Prediction进行训练。
- BERT模型使用的是Adam优化器,超参数β1 = 0.9, β2 = 0.999, ǫ = 1e-6,权重衰减参数为0.01.
- 学习率在前10000步逐渐增加到1e-4,然后线性衰减
- dropout参数为0.1
- batch=256,token_length=512
四、实验设置
- 实验的超参数基本沿用了Bert模型的参数。
- 文章发现模型结果对于Adam优化器的参数很敏感。经过对比发现当训练更大的batch时,设置β2 = 0.98更为稳定。
- 原始Bert模型中,在训练过程的前90%的时候,采用了随机注入短序列的方法。本文的实验中全部使用的是足够长度的序列。
五、训练过程分析
-
动态Masking和静态Masking
最原始的Bert模型采用的是静态mask,也就是选取序列中的15%个token进行mask,然后在训练过程中保持不变。
RoBERTa模型为了避免每次都使用相同的mask,采用了改进版本的静态mask。具体上,同一个训练数据被重复10次,10次都使用不同的mask,然后训练40个epochs。
此外,作者还提出了动态mask,每次想模型输入数据,都使用不同的mask。
实验结果表明:采用动态mask效果会稍微好一点
-
模型输入格式和Next Sentence Prediction
在原始的Bert模型中,原文作者认为Next Sentence Prediction对于模型起到很重要的作用。
但是最近的研究表明,NSP或许是可以删去的。
为了比较区别,做了如下的对照试验:
- SEGMENT-PAIR+NSP:和原始的bert模型一致,序列有两部分,来自于同一文档或不同文档的片段(片段级别)
- SENTENCE-PAIR+NSP:和第一种类似,序列有两部分,来自于同一文档或不同文档的句子(句子级别)
- FULL-SENTENCES:删除了NSP Loss。序列来自于文档,存在跨文档的可能性,加入分隔符进行区别
- DOC-SENTENCES:删除了NSP Loss。序列来自于同一文档,不存在跨文档的可能性。
实验结果表明:发现移除NSP会比原始Bert模型稍微好一点。FULL-SENTENCES和DOC-SENTENCES则是差不多效果
-
使用更大的batch进行训练
之前的研究就已经表明,使用大量的小批量进行训练在训练速度和结果上都会更好。
原始的Bert模型使用batchsize=256的模型训练1M个epoch,这等价于batchsize=2K的模型训练125K个epoch,等价于batchsize=8K训练31K个epoch
可以看到,更小的批量,能够能到更好的精确度。但是本文没有确定多大的batchsize最适合。
-
文本编码
Byte-Pair Encoding(BPE)采用的是字符级和单词级的混合特征,依赖于subwords units。
Unicode编码方式,Unicode字符会占据词汇表很大一部分,不太可取
本文采用byte-level BPE,这样能使模型获得更多可学习的参数。
六、RoBERTa
RoBERTa模型是整合上述改进而提出来的模型。
RoBERTa模型采用动态masking、FULL-SENTENCES without NSP、更多的小批量、byte-level BPE。
七、总结
本文是针对预训练模型计算贵、bert模型训练不充分进行改进。移除了NSP,采用更小的batch、动态masking获得更好的效果。