博客:https://www.cnblogs.com/enhaofrank/,公众号:生信AI区块链科技前沿,github:https://github.com/enhaofrank

功不唐捐 玉汝于成

bert、ernie、ernie-tiny、roberta的区别

BERT、RoBerta、ERNIE模型对比和改进点总结

1、BERT总结

首先BERT是transformers的encoder部分,BERT有两大训练任务分别是:

  • mask lm:给定一句话,随机抹去这句话中的一个或几个词,要求根据剩余词汇预测被抹去的几个词分别是什么。
  •  next sentence prediction:给定一篇文章中的两句话,判断第二句话在文本中是否紧跟在第一句话之后

BERT是一个multi-mask任务,包括mask language model和next sequence prediction两个任务。两个任务有哪些缺点和改进点呢,主要有

1、MLM直接对单个token进行随机mask,丢失了短语和实体信息,这一点对中文尤其明显,百度ERNIE对其进行了改进

2、MLM仅预测被mask的token,其他token没有参与到预测中。而GPT等语言模型可以对每个token进行预测。导致MLM训练效率偏低,训练时间过长。这一点BERT论文自己也提到了,ELECTRA围绕这一点进行了改进。

3、NSP任务可以学到sequence level信息,但仅为一个二分类,且负样本构造过于简单,导致模型不能充分训练。之前BERT的消融分析中也看到了,NSP对下游任务的作用比MLM要小。SpanBERT、ALBERT、Roberta均提到了这一点,并进行了相关改进,或者干脆弃用NSP。

 

BERT模型更为精细的调优版本。RoBERTa主要在三方面对之前提出的BERT做了该进,其一是模型的具体细节层面,改进了优化函数;其二是训练策略层面,改用了动态掩码的方式训练模型,证明了NSP(Next Sentence Prediction)训练策略的不足,采用了更大的batch size;其三是数据层面,一方面使用了更大的数据集,另一方面是使用BPE(Byte-Pair Encoding )来处理文本数据。

与BERT相比主要有以下几点改进:

  • 更大的模型参数量(论文提供的训练时间来看,模型使用 1024 块 V100 GPU 训练了 1 天的时间)
  • 更大bacth size。RoBERTa 在训练过程中使用了更大的bacth size。尝试过从 256 到 8000 不等的bacth size。
  • 更多的训练数据(包括:CC-NEWS 等在内的 160GB 纯文本。而最初的BERT使用16GB BookCorpus数据集和英语维基百科进行训练)

RoBERTa在训练方法上有以下改进:

  • 去掉下一句预测(NSP)任务,去除了NSP,而是每次输入连续的多个句子,直到最大长度512(可以跨文章)。这种训练方式叫做(FULL - SENTENCES)
  • 动态掩码。BERT 依赖随机掩码和预测 token。原版的 BERT 实现在数据预处理期间执行一次掩码,得到一个静态掩码。 而 RoBERTa 使用了动态掩码:每次向模型输入一个序列时都会生成新的掩码模式。这样,在大量数据不断输入的过程中,模型会逐渐适应不同的掩码策略,学习不同的语言表征。
  • 文本编码。Byte-Pair Encoding(BPE)是字符级和词级别表征的混合,支持处理自然语言语料库中的众多常见词汇。原版的 BERT 实现使用字符级别的 BPE 词汇,大小为 30K,是在利用启发式分词规则对输入进行预处理之后学得的。Facebook 研究者没有采用这种方式,而是考虑用更大的 byte 级别 BPE 词汇表来训练 BERT,这一词汇表包含 50K 的 subword 单元,且没有对输入作任何额外的预处理或分词。

3、ERNIE

改进点:

  1. 知识融合和MLM任务。利用短语和实体级别的mask方式,来融合外部知识
  2. 添加更多优质中文语料。加入了百度百科、百度新闻、百度贴吧等中文语料,使得在中文NLP任务上效果更好
  3. DLM。对Dialog的角色,进行了Dialog embedding,从而加强模型在Dialog上的效果(如百度贴吧)。

 

下面用一张表来进行总结:

模型总结改进点
BERT 中文以字为单位表示的通过两个训练任务采用多层transformer的encoder部分(核心是多头attention)的预训练模型 比word2vec更能够动态得到词语在不同语境下的向量表示,能够解决word2vec上下文无关问题
ALbert 精简版的BERT,参数量减小了,克服扩展模型困难的问题 1、因式分解:将词嵌入层先映射到一个低维空间,再映射到隐藏层 2、跨层参数共享 3、SOP:提升性能
Roberta 更为精细的bert调优版本,采用更大数据,更大batch_size,动态mask(中文采用全词mask),去掉NSP,采用全句子策略训练 1、改进优化函数,更大的模型参数量
2、动态mask(全词mask)
3、去掉下一句预测任务
4、采用更大的batch
ERINIE 融合了更多知识,mask的时候采用短语和实体级别的mask,添加了更多优质语料 融合了更多知识,mask的时候采用短语和实体级别的mask,添加了更多优质语料

 

 

ERNIE-tiny作为小型化ERNIE,采用了以下4点技术,保证了在实际真实数据中将近4.3倍的预测提速。

  1. 浅:12层的ERNIE Base模型直接压缩为3层,线性提速4倍,但效果也会有较大幅度的下降;
  2. 胖:模型变浅带来的损失可通过hidden size的增大来弥补。由于fluid inference框架对于通用矩阵运算(gemm)的最后一维(hidden size)参数的不同取值会有深度的优化,因为将hidden size从768提升至1024并不会带来速度线性的增加;
  3. 短:ERNIE Tiny是首个开源的中文subword粒度的预训练模型。这里的短是指通过subword粒度替换字(char)粒度,能够明显地缩短输入文本的长度,而输入文本长度是和预测速度有线性相关。统计表明,在XNLI dev集上采用subword字典切分出来的序列长度比字表平均缩短40%;
  4. 萃:为了进一步提升模型的效果,ERNIE Tiny扮演学生角色,利用模型蒸馏的方式在Transformer层和Prediction层去学习教师模型ERNIE模型对应层的分布或输出,这种方式能够缩近ERNIE Tiny和ERNIE的效果差异。

参考资料:

https://zhuanlan.zhihu.com/p/347846720

posted on 2022-02-14 12:32  enhaofrank  阅读(1305)  评论(0编辑  收藏  举报

导航