RoBERTa相较于BERT:(1)训练模型的时间更长,批量更大,数据更多;(2)移除下一句预测目标;(3)长序列训练;(4)动态改变应用于训练数据的mask模式。
训练过程分析
使用与相同配置的模型(L=12,H=768,A=12,110M参数)。
静态mask和动态mask
静态mask:为了避免每个epoch的mask模式相同,将训练数据复制10次,每个序列在40个epoch有10个不同的mask模式。
动态mask:BERT在数据预处理时执行一次mask,使用静态mask。动态mask是指每次将序列送入模型时动态生成mask模式。
模型输入格式及NSP
-
SEGMENT-PAIR+NSP:与原始BERT相同,输入不超过512。
-
SENTENCE-PAIR+NSP:句子对+NSP,输入不超过512。
-
FULL-SENTENCES:每个输入包含一个或多个从文档中抽取的句子,输入可能跨越文档边界,去除NSP loss,输入不超过512。
-
DOC-SENTENCES:输入构造类似于FULL-SENTENCES,但不能跨越文档边界,去除NSP loss,输入可能小于512,因此动态增加batch大小。
1、通过比较SEGMENT-PAIR+NSP和SENTENCE-PAIR+NSP,发现仅使用单个句子影响下游任务上的表现。
2、通过比较DOC-SENTENCES和,发现去掉NSP loss的效果比结果更好。
3、DOC-SENTENCES比FULL-SENTENCES效果好。
文本编码
Byte-Pair编码(BPE)不是使用完整的单词,而是通过对训练语料库进行统计分析来提取子单词单元。
原始BERT使用一个词汇量30K的字符级别的BPE词表进行训练,本文使用50K字符级别的BPE词表进行训练,而不需要对输入进行额外的预处理和标记。
RoBERTa
本文提出了RoBERTa,鲁棒优化BERT方法。RoBERTa通过动态屏蔽、去掉NSP的FULL-SENTENCES、大的mini-batch和更大的字节级BPE进行训练。另外,还调查了在以前训练中被忽略的因素:1)用于预训练的数据;2)经过数据的训练次数。在预训练过程中,与相比多使用了3个附加数据集,观察到所有下游任务的性能进一步改善,验证了预训练中数据大小和多样性的重要性。
结论
在预训练BERT模型时,我们仔细评估了许多设计决策。我们发现,通过更长的时间、更大的批和更多的数据来训练模型,可以显著地提高性能。在RoBERTa中,移除NSP,长序列训练,动态改变应用于训练数据的mask模式,最终在GLUE等多个任务上实现SOTA结果。