霞辉网 >>娱乐 >>环球国际投注平台·ELECTRA:超越BERT,2019年最佳NLP预训练模型

环球国际投注平台·ELECTRA:超越BERT,2019年最佳NLP预训练模型

来源: 霞辉网
更新时间: 2020-01-02 17:09:13

环球国际投注平台·ELECTRA:超越BERT,2019年最佳NLP预训练模型

环球国际投注平台,作者 | 李如

来源 | nlpcab(id:rgznai100)

【导读】bert推出这一年来,除了xlnet,其他的改进都没带来太多惊喜,无非是越堆越大的模型和数据,以及动辄1024块tpu,让工程师们不知道如何落地。今天要介绍的electra是我在iclr盲审中淘到的宝贝(9月25日已截稿),也是bert推出以来我见过最赞的改进,通过类似gan的结构和新的预训练任务,在更少的参数量和数据下,不仅吊打bert,而且仅用1/4的算力就达到了当时sota模型roberta的效果。

electra的全称是efficiently learning an encoder that classifies token replacements accurately,先来直观感受一下electra的效果:

右边的图是左边的放大版,纵轴是glue分数,横轴是flops (floating point operations),tensorflow中提供的浮点数计算量统计。从上图可以看到,同等量级的electra是一直碾压bert的,而且在训练更长的步数之后,达到了当时的sota模型——roberta的效果。从左图曲线上也可以看到,electra效果还有继续上升的空间。

nlp式的generator-discriminator

electra最主要的贡献是提出了新的预训练任务和框架,把生成式的masked language model(mlm)预训练任务改成了判别式的replaced token detection(rtd)任务,判断当前token是否被语言模型替换过。那么问题来了,我随机替换一些输入中的字词,再让bert去预测是否替换过可以吗?可以的,因为我就这么做过,但效果并不好,因为随机替换太简单了。

那怎样使任务复杂化呢?。。。咦,咱们不是有预训练一个mlm模型吗?

于是作者就干脆使用一个mlm的g-bert来对输入句子进行更改,然后丢给d-bert去判断哪个字被改过,如下:

于是,我们nlper终于成功地把cv的gan拿过来了!

replaced token detection

但上述结构有个问题,输入句子经过生成器,输出改写过的句子,因为句子的字词是离散的,所以梯度在这里就断了,判别器的梯度无法传给生成器,于是生成器的训练目标还是mlm(作者在后文也验证了这种方法更好),判别器的目标是序列标注(判断每个token是真是假),两者同时训练,但判别器的梯度不会传给生成器,目标函数如下:

因为判别器的任务相对来说容易些,rtd loss相对mlm loss会很小,因此加上一个系数,作者训练时使用了50。

另外要注意的一点是,在优化判别器时计算了所有token上的loss,而以往计算bert的mlm loss时会忽略没被mask的token。作者在后来的实验中也验证了在所有token上进行loss计算会提升效率和效果。

事实上,electra使用的generator-discriminator架构与gan还是有不少差别,作者列出了如下几点:

创新总是不易的,有了上述思想之后,可以看到作者进行了大量的实验,来验证模型结构、参数、训练方式的效果。

weight sharing

生成器和判别器的权重共享是否可以提升效果呢?作者设置了相同大小的生成器和判别器,在不共享权重下的效果是83.6,只共享token embedding层的效果是84.3,共享所有权重的效果是84.4。作者认为生成器对embedding有更好的学习能力,因为在计算mlm时,softmax是建立在所有vocab上的,之后反向传播时会更新所有embedding,而判别器只会更新输入的token embedding。最后作者只使用了embedding sharing。

smaller generators

从权重共享的实验中看到,生成器和判别器只需要共享embedding的权重就足矣了,那这样的话是否可以缩小生成器的尺寸进行训练效率提升呢?作者在保持原有hidden size的设置下减少了层数,得到了下图所示的关系图:

可以看到,生成器的大小在判别器的1/4到1/2之间效果是最好的。作者认为原因是过强的生成器会增大判别器的难度(判别器:小一点吧,我太难了)。

training algorithms

实际上除了mlm loss,作者也尝试了另外两种训练策略:

adversarial contrastive estimation:electra因为上述一些问题无法使用gan,但也可以以一种对抗学习的思想来训练。作者将生成器的目标函数由最小化mlm loss换成了最大化判别器在被替换token上的rtd loss。但还有一个问题,就是新的生成器loss无法用梯度下降更新生成器,于是作者用强化学习policy gradient的思想,将被替换token的交叉熵作为生成器的reward,然后进行梯度下降。强化方法优化下来生成器在mlm任务上可以达到54%的准确率,而之前mle优化下可以达到65%。

two-stage training:即先训练生成器,然后freeze掉,用生成器的权重初始化判别器,再接着训练相同步数的判别器。

对比三种训练策略,得到下图:

可见“隔离式”的训练策略效果还是最好的,而两段式的训练虽然弱一些,作者猜测是生成器太强了导致判别任务难度增大,但最终效果也比bert本身要强,进一步证明了判别式预训练的效果。

small model? big model?

这两节真是吊打之前的模型,作者重申了他的主要目的是提升预训练效率,于是做了gpu单卡就可以愉快训练的electra-small和bert-small,接着和尺寸不变的elmo、gpt等进行对比,结果如下:

数据简直优秀,仅用14m参数量,以前13%的体积,在提升了训练速度的同时还提升了效果,这里我疯狂点赞。

小electra的本事我们见过了,那大electra行吗?直接上图:

上面是各个模型在glue dev/text上的表现,可以看到electra仅用了1/4的计算量就达到了roberta的效果。而且作者使用的是xlnet的语料,大约是126g,但roberta用了160g。由于时间和精力问题,作者们没有把electra训练更久(应该会有提升),也没有使用各种榜单trick,所以真正的glue test上表现一般(现在的t5是89.7,roberta是88.5,没看到electra)。

efficiency analysis

前文中提到了,bert的loss只计算被替换的15%个token,而electra是全部都计算的,所以作者又做了几个实验,探究哪种方式更好一些:

electra 15%:让判别器只计算15% token上的损失

replace mlm:训练bert mlm,输入不用[mask]进行替换,而是其他生成器。这样可以消除这种pretrain-finetune直接的diff。

all-tokens mlm:接着用replace mlm,只不过bert的目标函数变为预测所有的token,比较接近electra。

三种实验结果如下:

可以看到:

对比electra和electra 15%:在所有token上计算loss确实能提升效果

对比replace mlm和bert:[mask]标志确实会对bert产生影响,而且bert目前还有一个trick,就是被替换的10%情况下使用原token或其他token,如果没有这个trick估计效果会差一些。

对比all-tokens mlm和bert:如果bert预测所有token 的话,效果会接近electra

另外,作者还发现,electra体积越小,相比于bert就提升的越明显,说明fully trained的electra效果会更好。另外作者推断,由于electra是判别式任务,不用对整个数据分布建模,所以更parameter-efficient。

无意中发现了这篇还在iclr盲审的electra,读完摘要就觉得发现了新大陆,主要是自己也试过replaced token detection这个任务,因为平时任务效果的分析和不久前看的一篇文章,让我深刻感受到了bert虽然对上下文有很强的编码能力,却缺乏细粒度语义的表示,我用一张图表示大家就明白了:

这是把token编码降维后的效果,可以看到sky和sea明明是天与海的区别,却因为上下文一样而得到了极为相似的编码。细粒度表示能力的缺失会对真实任务造成很大影响,如果被针对性攻击的话更是无力,所以当时就想办法加上更细粒度的任务让bert去区分每个token,不过同句内随机替换的效果并不好,弱鸡的我也没有再往前想一步,不然就也iclr了。相信这个任务很多人都想到过,不过都没有探索这么深入,这也告诫我们,idea遍地都是,往下挖才能有sota。

electra是bert推出这一年来我见过最赞的idea,它不仅提出了能打败mlm的预训练任务,更推出了一种十分适用于nlp的类gan框架。毕竟gan太牛逼了,看到deepfake的时候我就想,什么时候我们也能deepcheat,但听说gan在nlp上的效果一直不太好(只懂皮毛,要学起来了,轻拍),这次electra虽然只用了判别器,但个人认为也在一定程度上打开了潘多拉魔盒。

另外,整篇文章都干货满满,不再像之前的bert+模型一样可以用“more data+params+steps+gpu+money”简单概括。推荐大家去通读正文+附录,里面还有一些失败尝试我没有讲。

如果electra去直播,我一定给它刷一辆游艇。

electra: pre-training text encoders as discriminators rather than generators

(*本文为ai科技大本营转载文章,转载请联系原作者)

2019 中国大数据技术大会(bdtc)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。6.6 折票限时特惠(立减1400元),学生票仅 599 元!

晓言资讯

  • 上一篇:改善民生,幸福安康人心暖(2019·中国经济观察⑤)
  • 下一篇:KD12配置详解,杜兰特的第十二代战靴
  • Copyright 2018-2019 rayongc.com 霞辉网 Inc. All Rights Reserved.