bert模型原理详解:带你读论文8篇论文梳理BERT相关模型进展与反思
bert模型原理详解:带你读论文8篇论文梳理BERT相关模型进展与反思RoBERTa 是最近 Facebook AI 联合 UW 发布的 BERT 预训练模型,其改进主要是如图所示几点,除了调参外,还引入了 Dynamically Change Mask Pattern 并移除 Next Sentence Prediction,使得模型在 GLUE Benchmark 排名第一。作者的观点是:BERT is significantly undertrained。表2:RoBERTa 在 GLUE 中的实验结果去掉 NSP(Next Sentence Prediction)的 BERT 在某些任务中表现会更好;除了 XLNet,还有其他模型提出基于 BERT 的改进,让 BERT 发挥更大的潜能。2. RoBERTa: A Robustly Optimized BERT Pretraining Approach
表1:XLNet 与 BERT 实验结果对比
从中可以看出,在相同设定情况下,XLNet 完胜 BERT。但有趣的是:
-
XLNet 在使用 Wikibooks 数据集时,在MRPC(Microsoft Research Paraphrase Corpus: 句子对来源于对同一条新闻的评论,判断这一对句子在语义上是否相同)和 QQP(Quora Question Pairs: 这是一个二分类数据集。目的是判断两个来自于 Quora 的问题句子在语义上是否是等价的)任务上获得了不弱于原版 XLNet 的表现;
-
BERT-WWM 模型普遍表现都优于原 BERT;
-
去掉 NSP(Next Sentence Prediction)的 BERT 在某些任务中表现会更好;
除了 XLNet,还有其他模型提出基于 BERT 的改进,让 BERT 发挥更大的潜能。
2. RoBERTa: A Robustly Optimized BERT Pretraining Approach
表2:RoBERTa 在 GLUE 中的实验结果
RoBERTa 是最近 Facebook AI 联合 UW 发布的 BERT 预训练模型,其改进主要是如图所示几点,除了调参外,还引入了 Dynamically Change Mask Pattern 并移除 Next Sentence Prediction,使得模型在 GLUE Benchmark 排名第一。作者的观点是:BERT is significantly undertrained。
表3:RoBERTa 各个机制的效果比较实验
不同于原有的 BERT 的 MLM 机制,作者在总共40个 epoch 中使用10种不同的 Mask Pattern,即每种 Mask Pattern 训练4代,作为 static 策略;作者还引入了 dynamic masking 策略,即每输入一个 sequence 就为其生成一个 mask pattern。最终发现,新策略都比原 BERT 好,而 dynamic 总体上比 static 策略要好一些,并且可以用于训练更大的数据集以及更长的训练步数,因此最终选用 dynamic masking pattern。
作者还通过替换 NSP 任务进行预训练。虽然 BERT 中已经做了尝试去掉 NSP 后的对比,结果在很多任务中表现会下降,但是包括前文 XLNet 团队所做的实验都在质疑这一结论。
选用的新策略包括:
-
Sentence-Pair NSP Loss:与原 BERT 相同;
-
Segment-Pair NSP Loss:输入完整的一对包含多个句子的片段,这些片段可以来自同一个文档,也可以来自不同的文档;
-
Full-Sentences:输入是一系列完整的句子,可以是来自同一个文档也可以是不同的文档;
-
Doc-Sentences:输入是一系列完整的句子,来自同一个文档;
结果发现完整句子会更好,来自同一个文档的会比来自不同文档的好一些,最终选用 Doc-Sentences 策略。
表4:RoBERTa 在更多训练数据和更久训练时间下的实验结果
作者还尝试了更多的训练数据以及更久的训练时间,发现都能提升模型的表现。
这种思路一定程度上与 OpenAI 前段时间放出的 GPT2.0 暴力扩充数据方法有点类似,但是需要消耗大量的计算资源。
3. SpanBERT: Improving Pre-training by Representing and Predicting Spans
图6:SpanBER模型框架以及在 GLUE 中的实验结果
不同于 RoBERTa,SpanBERT 通过修改模型的预训练任务和目标使模型达到更好的效果。其修改主要是三个方面:
-
Span Masking:这个方法与之前 BERT 团队放出WWM(Whole Word Masking)类似,即在 mask 时 mask 一整个单词的 token 而非原来单个token。每次 mask 前,从一个几何分布中采样得到需要 mask 的 span 的长度,并等概率地对输入中为该长度的 span 进行 mask,直到 mask 完15%的输入。
-
Span Boundary Object:使用 span 前一个 token 和末尾后一个 token 以及 token 位置的 fixed-representation 表示 span 内部的一个 token。并以此来预测该 token,使用交叉熵作为新的 loss 加入到最终的 loss 函数中。该机制使得模型在 Span-Level 的任务种能获得更好的表现。
-
Single-Sequence Training:直接输入一整段连续的 sequence,这样可以使得模型获得更长的上下文信息。
在这三个机制下,SpanBERT 使用与 BERT 相同的语料进行训练,最终在 GLUE 中获得82.8的表现,高于原版 Google BERT 2.4%,高于他们调参后的 BERT 1%,同时在 Coreference Resolution 上将最好结果提高了6.6%。
4. MT-DNN 与知识蒸馏
Multi-Task Deep Neural Networks for Natural Language Understanding
这篇论文旨在将 Multi-Task 与 BERT 结合起来,使得模型能在更多的数据上进行训练的同时还能获得更好的迁移能力(Transfer Ability)。