NLP领域今年的竞争真可谓激烈。短短一个多月的时间,BERT又重新杀回GLUE测试排行榜第一名。
今年6月,谷歌和CMU提出的NLP模型XLNet在20多项测试中排行第一,性能全面超越BERT。
然而就在XLNet“霸榜”一个月后,Facebook把BERT改进了一番,进一步“榨干”了BERT的性能,帮助它在GLUE和RACE测试中再次取得最优成绩,算是扳回一城。
这个改进版的BERT叫做RoBERTa,全名是Robustly Optimized BERT approach。
Facebook不仅发布了文章,还迅速开源了预训练模型。在高于PyTorch 1.1版本中,你甚至可以使用官方的torch.hub直接导入模型。
测试得分
RoBERTa在9个GLUE中的4个基准任务测试实现了最先进的结果,总分数为88.5,与XLNet相同的整体GLUE任务性能,双方互有胜负。
在RACE测试中,RoBERTa已经全面超越XLNet。
与BERT的差别
Facebook的研究人员发现超参数选择对BERT的最终结果有重大影响,因此他们重新研究了BERT的预训练模型,测量了不同超参数和训练集大小的影响,结果发现BERT存在明显的训练不足。
经过调整后,BERT可以达到或超过其后发布的每个模型的性能,这些结果突出了之前被忽视的设计选择的重要性,
RoBERTa与BERT的不同之处在于,它依赖于预训练大量数据和改变训练数据的mask模式,而且RoBERTa删除了下一句预测(NSP)。
RoBERTa的修改很简单,包括:
- 更长时间的训练时间,更大的batch,更多的数据;
- 删除下一句预测(NSP)目标;
- 在较长序列上进行训练;
- 动态改变用于训练数据的mask模式。
RoBERTa的预训练时间要比BERT长得多,Facebook将预训练步数从100K增加到300K再增加到500K。当步数达到300K时,其性能已经超过了XLNet。
除了在模型上的调整,RoBERTa的训练数据集也比BERT大很多。
原始的BERT使用了13GB大小的数据集,内容来自英文维基百科和BookCorpus。但RoBERTa使用了包含6300万条英文新闻的160GB数据集。
最后,RoBERTa和BERT一样烧钱,研究人员使用1024个Nvidia V100 GPU训练了大约一天时间。而BERT需要使用1024个谷歌TPU训练76分钟。
论文地址:
https://arxiv.org/abs/1907.11692
GitHub:
https://github.com/pytorch/fairseq/tree/master/examples/roberta
“