相比较bert,RoBERTa有以下几个改进:
- 模型参数:RoBERTa采用更大模型参数(1024 块 V100 GPU 训练了 1 天的时间)。
- Batch Size:RoBERTa采用更大Batch Size,256-8000不等。
- 下一个句子预测:RoBERTa删除了下一句子预测NSP
- 动态掩码:每次向模型输入一个序列时,都会生成一种新的 Maks 方式。即不在预处理的时候进行 Mask,而是在向模型提供输入时动态生成 Mask
训练数据
训练数据:RoBERTa采用更多高质量训练数据
- RoBERTa:CC-NEWS等在内的160GB纯文本
- Bert : 16GB BookCorpus 数据集和英语维基百科
数据掩码:
- RoBERTa:动态掩码:每次向模型输入一个序列时都会生成新的掩码模式。即不在预处理的时候执行 mask,而是在每次向模型提供输入时动态生成 mask,所以是时刻变化的。
- Bert:在数据预处理期间执行一次掩码,得到一个静态掩码。即每个样本只会进行一次随机mask(每个epoch都重复),后续的每个训练步都采用此相同的mask。
- 修改版静态掩码(Modified Static Masking):在预处理的时候将数据集拷贝 10 次,每次拷贝采用不同的 mask(总共40 epochs,所以每一个mask对应的数据被训练4个epoch)。这等价于原始的数据集采用10种静态 mask 来训练 40个 epoch。
取消NSP任务
原始的BERT包含2个任务,预测被mask掉的单词(MLM)和下一句预测(NSP)。鉴于最近有研究(Lample and Conneau,2019; Yang et al., 2019; Joshi et al., 2019)开始质疑NSP的必要性。所以RoBERTa实验了四种方法:
- SEGMENT-PAIR + NSP:输入包含两部分,每个部分是来自同一文档或者不同文档的 segment (segment 是连续的多个句子),这两个segment 的token总数少于 512 。预训练包含 MLM 任务和 NSP 任务。这是原始 BERT 的做法。
- SENTENCE-PAIR + NSP:输入也是包含两部分,每个部分是来自同一个文档或者不同文档的单个句子,这两个句子的token 总数少于 512 。由于这些输入明显少于512 个tokens,因此增加batch size的大小,以使 tokens 总数保持与SEGMENT-PAIR + NSP 相似。预训练包含 MLM 任务和 NSP 任务。
- FULL-SENTENCES:输入只有一部分(而不是两部分),来自同一个文档或者不同文档的连续多个句子,token 总数不超过 512 。输入可能跨越文档边界,如果跨文档,则在上一个文档末尾添加文档边界token 。预训练不包含 NSP 任务。
- DOC-SENTENCES:输入只有一部分(而不是两部分),输入的构造类似于FULL-SENTENCES,只是不需要跨越文档边界,其输入来自同一个文档的连续句子,token 总数不超过 512 。在文档末尾附近采样的输入可以短于 512个tokens, 因此在这些情况下动态增加batch size大小以达到与 FULL-SENTENCES 相同的tokens总数。预训练不包含 NSP 任务。
实验结果
batch size
RoBERTa采用更大的 Batch Size :- 其中bsz是batch szie,steps是训练步数,为了保证bsz*steps近似相同,所以采用了不同bsz和steps。
- lr是学习率
- ppl是困惑度,越小越好。
- 其他两项是不同任务的准确率。