RoBERTa- A Robustly Optimized BERT Pretraining Approach
在BERT模型的基础上,做了一些改进,提升了预训练模型的性能。
-
把静态mask改成动态mask
BERT中在数据预处理阶段,把数据集复制10份,然后进行MASK,也就是说原始数据集的每个句子都进行10次不同的MASK,但依然会在训练中出现重复。比如Epoch=40,那么每个相同的MASK会被重复训练4次。
而RoBERTa采用动态mask,每次把squence输入模型时,进行MASK,使得每次训练的MASK都不同。 -
调整输入格式和NSP任务
考虑了四种格式:
发现去掉NSP loss之后性能有所提升;由于FULL-SENTENCES需要变大小的batch,所以采用DOC-SENTENCES形式 -
调大batch size
BERT用256,RoBERTa用8k -
把character-level BPE 换成byte-level BPE
-
训练时间更长
-
用更多训练数据集
总之,本文证明了BERT的预训练方法还有很多可以深挖的地方,在原先的基础上稍作调整又取得了SOTA。