本文主要用于记录华盛顿大学和FacebookAI联合发表于2019年的一篇论文(准确讲只能是报告哈哈~)。该论文提出的RoBERTa模型其实是对初代BERT的训练方法的改进。本笔记主要为方便初学者快速入门,以及自我回顾。
为了更好的理解本文,建议读者先对Bert模型有深入的理解(毕竟本文很多知识点都是建立在Bert之上的),这里也贴一个我之前的一篇论文笔记是专门来讲Bert的,大家也可以看一下加深理解。
论文链接:https://arxiv.org/pdf/1907.11692.pdf
基本目录如下:
- 摘要
- 核心思想
- 总结
------------------第一菇 - 摘要------------------
1.1 论文摘要
预训练的语言模型在这俩年取得了巨大的突破,但是如何比较各预训练模型的优劣显然是一个很有挑战的问题。主要是因为训练真的很耗钱。。。以及用不同的数据集,用不同的预训练参数,都会对最后的结果产生不同的影响。本文就重点研究了一些预训练参数和训练批大小对BERT模型的影响。研究表面,BERT远远没有被充分训练,如果训练充分且技巧运用得到,其表现完全能超过(或不逊色于)后来的预训练模型(XLNet等)。这不,该论文的升级版BERT模型,就又刷新了多项NLP基础任务的记录~
------------------第二菇 - 核心思想------------------
2.1 核心思想
本文提出了模型名为RoBERTa,看名字也知道,其并没有对BERT系模型本身架构做出了调整,而只是用不同的训练方法(不同的数据),训练得到了一个新的模型而已。具体改进的地方🈶️4个,
1)训练模型的时间更长,批大小更大,以及更多的数据。
该论文中,模型用了超过160GB的训练语料(BERT只有16GB),主要新增的语料是CC-NEWS,该语料集包含从2016年到2019年的6300万英文文章,其他的语料也都是开源的。训练的批大小,在本文也被证明是很影响其表现的一个因素(且可以并行训练),本来采用的是一个批大小为8K。
总之,这里总结一句话就是:用更多的语料+更长的训练时间+更大的批大小 = 更多的资源消耗(💰)= 更好的效果!!!~~~
2)去除掉BERT中“预测下一个句子”任务的LOSS。
本文另一个比较有趣的发现是,预测下一个句子的任务被证明其效果起到了“负面作用”。其实这个结论也是实验得出的,但就感觉上来讲,如果要作预测下一个句子但任务,相当于有时候模型的输入,会来自多个不同的文本,这可能会“hurt”模型来学习文本间的依赖关系,所以本文也建议,模型的输入最好还是属于同一个文本的。所以本文,也取消了原先BERT的这一个LOSS,实验证明其效果也有略微提升。
3)用更长的句子来训练。
本文还有一个改进就是每一个句子的输入更长,增大了max_seq,这有利于学习词之间的依赖。另外值得一提的是,其扩大了原先BERT使用的sub-char的大小,用以让模型学会看到更多的未登陆词(这个还有待研究)
4)动态更改训练数据中的遮罩词
这一个训练方法的更改也显而易见,原先BERT只有在每一个EPOCH开始训练的时候更改遮罩词(shuffle),而本论文作者发现,每一个句子输入的时候,动态生成遮罩词的方法,会比原先的训练方法得到的效果更好。。。(蛮黑科技的理论)
大概本文的更新就是这些,哎,反正基本上正常人或者公司的财力物力是不可能复现这些的了,只能当个看客,再祈祷各位金主爸爸们开源了哈哈~!
------------------第三菇 - 总结------------------
3.1 总结
到这里,整篇论文的核心思想及其创新点已经说清楚了。本论文主要集中在于阐述RoBERTa的核心思想,并且介绍了很多训练BERT系模型的技巧,并附上了详实的对比实验,来验证模型的可行性。
简单总结一下本文就是先罗列了一下该论文的摘要,再具体介绍了一下自己对RoBERTa的理解,同时根据自己的经验和作者的结论提出了一些优化训练技巧,希望能帮到大家,也有助于自己复习。总的来说,这篇论文对初代BERT的改进是众多改进版本中比较成功的也比较简单易懂。希望大家读完本文后能进一步加深对BERT结构优化的理解和运用。有说的不对的地方也请大家指出,多多交流,大家一起进步~😁
网友评论