预训练语言模型 | (5) StructBert和RoBerta

目录

1. StructBert

2. RoBerta

3. Bert系列预训练语言模型总结


1. StructBert

structbert的创新点主要在loss上,除了MLM的loss外,还有一个重构token顺序的loss和一个判断2个segment关系的loss。重构token顺序的loss是以一定的概率挑选segment中的token三元组,然后随机打乱顺序,最后经过encoder之后能够纠正被打乱顺序的token三元组的顺序。判断2个segment关系的loss是1/3的概率是segment B是segment A的下一句,有1/3的概率是segment A是segment B的下一句,有1/3的概率是segment A和segment B来自2篇不同的文本,通过“[CLS]”对应的最后一层的编码向量(+全连接层)预测样本属于这3种的哪一种。

2. RoBerta

在xlnet使用126G的数据登顶GLUE之后不久,roberta使用160G的数据又打败了xlnet。roberta的创新点主要有4点:第1点是动态mask,之前bert使用的是静态mask,就是数据预处理的时候完成mask操作,之后训练的时候同一个样本都是相同的mask结果,动态mask就是在训练的时候每输入一个样本都要重新mask,动态mask相比静态mask有更多不同mask结果的数据用于训练,效果很好。第2点是样本的构造方式,roberta放弃了NSP的loss,修改了样本的构造方式,将输入2个segment修改为从一个文本中连续sample句子直到塞满512的长度。当到达文本的末尾且未塞满512的长度时,先增加一个“[SEP]”,再从另一个文本接着sample,直到塞满512的长度。第3点是增大了batch size,在训练相同数据量的前提之下,增大batch size能够提高模型的推理能力。第4点是使用了subword的分词方法,类比于中文的字,相比于full word的分词方法,subword的分词方法使得词表的大小从30k变成了50k,虽然实验效果上subword的分词方法比full word差,但是作者坚信subword具备了理论优越性,今后肯定会比full word好。

3. Bert系列预训练语言模型总结

nlp和cv的不同点在于nlp是认识学习,而cv是感知学习,nlp在cv的基础之上多了一个符号映射的过程,正因如此,nlp领域发展得比cv慢很多,cv领域有很多比较成功的创业公司,有很多能够达到商用程度的子领域,而nlp领域就比较少。不过nlp领域在17年的transformer发布之后开始进入快速迭代的时期,bert的发表使得nlp领域的benchmark提高了一大截,产生了不少可以达到商用程度的子领域。到了19年,nlp领域的发展可以说是越来越快了,前几天谷歌又发表了一篇T5,又把albert打败了。T5的论文据说有50页,是nlp预训练模型的一个综述,值得花时间一看。

至此,前几篇博客介绍的都是Bert(Auto-Encoder)系列预训练语言模型(包括bert<structbert<roberta<albert).今后有时间还会整理一下XLNet(结合Auto-Encoder和Auto-Regressive)系列预训练语言模型以及GPT(Auto-Regressive)系列预训练语言模型。

 

发布了405 篇原创文章 · 获赞 765 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/sdu_hao/article/details/104195806