ELECTRA论文阅读笔记

ELECTRA模型是对BERT的一次改进,该改进主要体现在对样本的使用效率上。具体实现方式,是引入了比较像GAN的一种架构——首先,使用一个较小的generator(生成器)将随机mask掉的token再预测出来,然后再将重新修复后的句子交给discriminator(判别器)进行判断,判断input中每个单词是否有被generator替换过。相比之下,BERT是先对一部分token进行随机mask,然后再对被mask的词使用上下文进行预测,预测的样本空间是整个词表。最终经实验验证,ELECTRA在相同的算力、数据和模型参数的情况下,效果优于BERT;而和效果相近的RoBERTa和XLNet相比,ELECTRA消耗的计算量不到它们的1/4;在相同的计算量的加持下,ELECTRA则要更优。

 

引言

现如今,效果优异的NLP预训练模型大多采用了MLM(masked language model)方法进行训练(BERT、XLNet等),尽管相比于传统语言模型,它们使用Transformer在正反两个方向上对语义进行学习,这已经提升了它们的学习效率;但由于这些模型只对input序列中的一小部分(一般是15%)进行学习,所以它们仍旧耗费了很多的算力。

为了进一步提升预训练语言模型的学习效率,我们提出了RTD(replaced token detection)任务作为MLM任务的替代品——这是一种架构有点类似于GAN的学习任务,首先通过一个较小的generator对BERT中的特殊token [MASK]进行替换,然后再训练一个discriminator对input中的每个单词进行预测,即模型会从input序列中的全部tokens进行学习,这有别于BERT的15%,而我们认为这也是使得ELECTRA训练比BERT更快的原因。如图1所示,ELECTRA总能使用更少的算力、更少的模型参数,达到比BERT等模型更好的结果。

                                                                                         图1 模型算力消耗对比图

方法

                                                                                        图2 ELECTRA模型结构图

如图2所示,我们给出了该模型的结构图。generator可以是任意模型,它的任务是对被随机mask掉的token进行预测,它一般是一个较小的BERT模型,与discriminator一起进行训练,而discriminator的任务就是分辨出到底哪个token是被generator篡改过以致于和原token不一致的。尽管整个模型架构有点像GAN,但在我们的实验中发现,使用MLE的方式进行训练,效果会优于对抗式的训练方式[1],具体原因后面会详述。在预训练完成后,我们会丢弃generator而保留discriminator(真正的ELECTRA model),参与下游的fine-tune任务。

具体来说,生成器G和判别器D是我们训练得到的两个神经网络,二者都包含encoder(即Transformer网络),从而将input序列从x映射到h(x)。而二者的任务又是不同的,所以我们会选择不同的损失函数对它们的错误进行衡量。具体公式如下:

  

简单来说,公式1代表generator,其任务是根据上下文对被随机mask掉的token进行预测,所以采样空间是V(全部词表),因而损失函数也就是softmax损失;而discriminator的任务是对一个token是不是和原文中的一致进行判断,所以是个二分类任务,损失也就是交叉熵损失。

如图所示, 代表被随机mask过后的序列。原序列x长度为n,而其中k个token被特殊token [MASK]替换掉。而 代表被generator做了二次修改的序列。 序列的[MASK] token使用generator生成的结果进行替换,generator生成的结果遵循softmax分布。 

最终,ELECTRA的最终损失函数是由生成器G的损失和判别器D的损失一同组成。因为生成器G规模较小而且任务相对更难,所以一般Loss比判别器G的Loss更大,而我们希望联合训练时同时关注generator和discriminator二者的loss,所以我们在这里给判别器D的loss加以系数λ。

此外,为何模型架构很像GAN但仍和GAN有三点明显的差别——

  1. 若generator碰巧预测对了,经实验发现反而会对下游任务有好处;(这也就味着,在适当的区间内,generator更强,有助于discriminator的训练)
  2. generator是用MLE训练的而非对抗训练方式,因为无法把loss传递回generator;
  3. 输入不是noise vector(GAN是这么干的)

主要的实验细节

参数共享机制

本文作者首先想到通过参数共享的方法减少参数,并提升参数的学习效率。当generator和discriminator规模相等时,二者之间可以将参数完全共享,即二者其实就是一套模型。然而经实验所得,更小的generator其实对结果更有帮助,所以我们只共享了generator和discriminator的embedding层的参数(包括token和position的embedding)。经实验,不进行参数共享GLUE score=83.6,全部进行参数共享GLUE score=84.4,而只在embedding层进行参数共享GLUE score=84.3.究其原因,我们认为,因为判别器只会更新input序列中涉及到的token的参数,而生成器却会对词表中的全部单词进行权重更新,完全共享参数会导致浪费。

更小的生成器

如果让生成器和判别器的规模相当,则整个预训练的时间会大约变为原来的2倍。如图所示,我们发现最佳的生成器大小为判别器规模的1/4~1/2。左边图显示,当判别器规模不变的情况下,生成器的规模越大,反而可能会导致结果的下降——究其原因,可能是过强的生成器,可能会给出太难的题目,以致于让判别器无法学习。

                                                                                             图3 对比实验示意图

训练方法

文中主要提及了3种训练方法,分别是ELECTRA最终使用的联合训练方法、两步式训练方法和与GAN相似的对抗训练方法。下面我们先着重介绍一下两步式训练方法:

  1. 首先,只对生成器连续训练n-steps;
  2. 使用生成器的参数对判别器进行初始化,然后连续训练判别器n-steps,与此同时保持生成器的参数不变。(注意,这要求生成器和判别器要有相同的规模)

我们最终发现,如果在两步式训练中不使用参数共享,最终学得的判别器可能在很多类别上什么也没学到——作者猜测,这可能是因为generator启动速度比discriminator快得多,即生成器已经学会了初中知识并出初中题目,而判别器还只是小学生水平;此外,参数共享可能还在无意中让generator起到了“榜样作用”,给discriminator现身说法,展示如何从一个菜鸡到大佬的转变,这也可以在一定程度上解释为何训练换挡时GLUE score会有明显的跃升。

其次我们聊聊对抗式训练方法。从图3中的右图可以看出,对抗式训练方法(橘黄色实线)是不如传统的MLE训练方法的,原因可能有2点:

  1. 对于RF而言,全部文本组成的action space太大了,造成其采样效率太低;
  2. 对抗训练得到的结果是低熵的输出分布,大多数的概率质量落在单个token上,导致generator的输出没有足够的多样性,这样的题目discriminator做起来没有足够的学习价值

模型效果对比

小模型之间的对比

                                                                                 图4 模型效果对比(基于GLUE的验证集)

如图4,图中所出现的BERT/ELECTRA-Small,相比于BERT-Base,相关模型参数发生了如下缩减:其序列长度 512->128,batch size 256->128,hidden size 768->256,embedding size 768->128。从图中可见,在相同的计算量的情况下,ELECTRA-Small效果超越了BERT-Small(为了保证二者使用了相同的计算量,ELECTRA-Small训练了1M steps,而BERT-Small则是1.5M steps),而ELECTRA-Base同样也超越了BERT-Base。

大模型之间的对比

                                                                                图5 与RoBERTa/XLNet对比(基于GLUE验证集)

如图5所示,ELECTRA-400k在达到与RoBERTa-500k和XLNet相近的效果的情况下,算力消耗却只是其1/4不到;而当我们使用足够的计算量时,ELECTRA模型在大部分任务上都达到了sota。

模型学习效率的分析

作者前文提到,ELECTRA相对于BERT的效果和学习效率的提升,可能来自于ELECTRA预测了全部input tokens(BERT是15%),以及BERT存在的由于引入[MASK]特殊token导致的“miss-match”问题不存在于ELECTRA。鉴于此,作者对这一问题进行了更深入的分析。

作者提出三个实验模型,分别是:

  1. ELECTRA 15%:让判别器只计算input中15% token的损失(降低ELECTRA对样本的使用效率);
  2. Replace MLM:训练BERT MLM,其中预训练中input里的[MASK]使用generator生成的token进行替换(探究只在预训练中才出现[MASK]对模型的影响);
  3. All-Tokens MLM:接着用Replace MLM,只不过BERT的目标函数变为预测所有的token,比较接近ELECTRA。

                                                                                 图6 模型学习效率实验

三者的效果如图6所示,我们可以看出:

  1. ELECTRA 15%比ELECTRA效果差得多,说明在全部tokens上学习确实对结果有很大提升;
  2. Replace MLM效果比BERT略好,这说明miss-match问题确实会对BERT有所伤害。如果BERT中没有使用10%[MASK]替换的trick,作者估计其效果还要再差一点。
  3. All-Tokens MLM的效果是所有实验模型中最接近ELECTRA的,这说明对全词的预测确实会提升BERT的效果

以上实验结果说明,ELECTRA相比于BERT带来的学习效率的提升主要来自于对全部token的学习,次要来自于消弭了预训练和fine-tune之间的miss-match。此外,All-Tokens MLM和ELECTRA之间的差距也显示了ELECTRA比BERT不仅仅提升在“学得更快”上。从图7的左和中图可见,模型规模越小,ELECTRA对BERT的效果优势越大。而图7的右图显示,对于同样的小模型而言,将二者都训练完全直至收敛,ELECTRA-256会得到比BERT-256更好的下游任务效果。

我个人对这个实验的理解是这样的。相比之下,BERT模型会对全部不同语境下的token进行学习,然后全部“记录在”其大脑(hidden state)中;而ELECTRA像是走了捷径,它最终任务是二分类,更简洁却也更贫乏,因为最终的embedding表示空间会被压缩到两个空间中去。所以形象地理解“模型规模越小、ELECTRA优势更大”这一现象,似乎可以用“烧脑论”来解释,如果你脑容量够大,那么就足够学习并“记住”丰富的BERT习得的词表示;但如果你脑容量不足,那还不如选择简洁明快的ELECTRA,这就好比考试是只背公式和重点,还是从头开始,知其然也知其所以然吧。

                                                                                        图7 对比BERT和ELECTRA

ELECTRA优缺点的探究和总结

作者尝试过但失败了的方案

鉴于前文已证,(在一定范围内)较小或者较弱的generator会对结果有所帮助,所以我们尝试过两种继续削弱generator的方案:一是故意阻止generator采样到正确token,即在采样时从词表中删去正确token;二是提升generator输出的温度,从而降低正确token输出的置信度。结果发现它们都对结果没有帮助。

根据RTD任务,我们还开发了一个和其相似的、句子层面的任务,即我们保证input序列中的20%没有被generator修改过,然后使用discriminator对input的句子是否被修改过进行判断和学习。令作者惊讶的是,这反而会对下游任务效果产生伤害。

其他读者发现的或认为的优缺点

优点

  1. 任务难度的提升,是导致ELECTRA优于BERT的一大原因。对于BERT的MLM任务而言,它是随机mask token;而对于ELECTRA,相当于通过generator来“选择出”更难的token,再交给discriminator去学习。这就好比,对于相同的input sequence:“我想吃苹果”,普通的MLM方法给出的mask结果可能是"我想吃苹[MASK]",而ELECTRA则是"我[MASK]吃苹果",显而易见后者的预测更可能出错、也就对应了更大的loss,而模型是通过loss(错误)来学习的。所以generator其实相当于一个“难题筛选器”,将更难的任务交给discriminator,从而更好地锻炼discriminator的能力;(难题让你变得更好效果)
  2. 将主任务从V分类变成二分类,算法复杂的下降。对于BERT而言,其MLM任务是在整个样本空间V中进行采样,而ELECTRA只需要进行二分类,不需要对全体数据的分布进行建模。而作者也对BERT和ELECTRA的小模型进行了对比,证明全体参数最终其实是被完整地训练了;(没有吃顶了效果)
  3. 增加了被预测token的自身信息利用。MLM中,被mask的token的预测是不会用到其本身的信息的(我们认为其信息全部蕴含在其上下文中),而ELECTRA的RTD任务则是通过上下文和待预测token自身一起进行预测,输入信息量更多、且相对更直接。

缺点

  1. 判别器的二分类属性,导致其可能不适用于下游任务。BERT使用MLM进行预训练然后接下游任务,看起来是足够合理的,因为我们可以认为MLM对全词采样的过程中,其实是给所有token都建立了一个基于其上下文的词表示;然而判别器任务是二分类,也就是将token的表示划分到两个空间中,可能会导致其hidden space中信息的过早退化。知乎上有用户发现ELECTRA模型对NER任务不太友好,因而面对复杂的下游任务时,ELECTRA判别器生成的表示可能不够丰富。此外,判别器本身是用二分类任务来预训练的,所以当它面对“接近二分类”的任务时会明显有所助益(如GLUE的CoLA任务),但面对诸如序列标注、文本生成等不那么“分类”的任务时,效果可能就较差。

参考论文

【1】Massimo Caccia, Lucas Caccia, William Fedus, Hugo Larochelle, Joelle Pineau, and Laurent Char-lin. Language GANs falling short. 2018

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_illusion_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值