ElECTRA:震惊NLPER居然可以使用GAN了![PART2]

本文同步发布与知乎:ElECTRA:NLPER也可以使用GAN了?[Part-2],知乎主页lynne阿黎请大家不吝关注~

18年Bert横空出世,刷新了各大榜单之后,对齐的改进层出不穷,Ernie, Albert大多数改进都没有新意,无非就是大力出奇迹的堆叠参数。ICLR2020 斯坦福和Google为我们提供了一种新思路,用Bert来"欺骗"Bert,模型改进了MLM(Masked Language Model),Bert不再是预测被Mask调的Token而是去判断这个Token是否是被Mask然后替换的。听起来有些GAN的感觉,但是作者认为ELECTRA和GAN又有区别,这些在上一篇博文中我们都有谈到。

ElECTRA:震惊NLPER居然可以使用GAN了![PART1]

本文接上文,我们来看一下ELECTRA的实验效果,是否真的如传说中那样小小的身体里蕴含着大大的能量呢?

实验结果

1. 共享参数(Weight Sharing)

Generator和Discriminator应该共享参数吗?文中尝试了3中方法,不共享参数,共享embedding和共享所有参数,从效果来看共享所有参数的效果是最优的,但是这也意味着生成器和分辨器要一样大,这真的有必要吗?

生成器的工作是预测Mask掉的Token,至于对不对并不重要,而且从某种角度上来说,预测的越离谱,可能越适合分辨器学习。而Discriminator面对的是一整句话,要逐Token的判断该Token是原生的还是非原生的,他要学习的东西相比于Generator不仅庞大而且复杂,让Discriminator和Generator一样大对于任重而道远的Discriminator过于残忍,而如果让Generator和Discriminator一样大,又过于浪费。

ElECTRA:震惊NLPER居然可以使用GAN了![PART2]_第1张图片

因此文中所采用的是共享embedding的方法。

2. Small generators

作者在保持hidden size的情况下降低层数,从而降低Generator的大小,Discriminator尝试了hidden size为256,512和768,这里我们发现秉承着大力出奇迹的原则,同等情况下,Discriminator的hidden size为768的效果最好。与此同时我们还发现在Discriminator保持不变的情况下,Generator的大小并不是越大越好,当Generator的大小是Discriminator的1/4~1/2的时候实验效果最好。

ElECTRA:震惊NLPER居然可以使用GAN了![PART2]_第2张图片

这是为什么呢?当Generator变得复杂,可能会有两种情况发生,Generator对Token的预测都非常有效,没有起到欺骗的作用,或者Generator过拟合导致任务对Discriminator过于复杂而降低了学习效率。(Discriminator:救救孩子吧)

3. Training Algorithms

  1. Two-stage训练:训练完Generator之后使用Generator的权重初始化Discriminator,然后训练Discriminator。

  2. Adversarial Contrastive Estimation: 上一篇文章中我们介绍了ELECTRA和GAN的区别,Discriminator的梯度无法传递到Generator,文中尝试了用强化学习的方法来训练模型。作者将Generator最小化MLM Loss替换为最大化Discriminator被替换Token的RTD LOSS。这时作者又面临了问题,新的loss无法使用梯度上升去最大化loss,于是作者采用了policy gradient reinforcement learning来寻找最优的分辨器。

对于Two-stage的方法中我们需要注意用Generator的参数初始化Discriminator,那么两个大小应该是一样。既然如此,那么应该可以预测这样做的效果并不会很好,为什么呀?因为上一部分我们不是提到了Generator是Discriminator的1/4~1/2时效果最好吗。除此以外,作者还尝试了另一种训练方法。

对于Adversarial Contrastive Estimation的看法大家可以在回复中留言讨论。

最后的实验结果也显示原始的训练方法效果最好。

ElECTRA:震惊NLPER居然可以使用GAN了![PART2]_第3张图片

4. Small model? Big model?

文中训练了Small Electra和Big Electra,模型规模大家可以通过下标判断。相比于Bert Base, Small Electra的参数都进行了缩小,Big Electra和Bert large的超参数保持一致,同时训练的时间要更长一点。

ElECTRA:震惊NLPER居然可以使用GAN了![PART2]_第4张图片

那么Electra的效果如何呢?我们先看Small Electra,效果可以说是一骑绝尘。同等规模的情况下效果远超其他模型,Small Electra的Glue score要比Bert small高4.8个点,但是当规模变大,Electra Base的效果比Bert Base高2.9个点。没有Electra small那么亮眼,但也足够激动人心。毕竟Bert缩小版Albert也只是在xxLarge的情况下打败了Bert,但是Electra却赢得毫不费力。

ElECTRA:震惊NLPER居然可以使用GAN了![PART2]_第5张图片

下面我们来看Electra Large的效果,是否如Small一样激动人心呢?结果依然不负众望,在SST, MRPC任务中Electra Large略逊于RoBERTa,其他任务都取得了很不错的成绩。需要注意的是在Electra之用了1/4的计算量就打败了RoBERTa。

ElECTRA:震惊NLPER居然可以使用GAN了![PART2]_第6张图片

 

4. Efficiency Analysis

前文中提到Bert只计算了被替换的Token的loss,Electra使用了全部的Token,作者进一步做了一些实验来探讨那种方法更好。作者进行了一下3个实验

  • ELECTRA 15%:使用Electra计算15%的loss

  • Replace MLM: 使用Bert训练在预训练的时候输入不用MASK而是用其他生成器的输出替换

  • All-TokensMLM:结合了Bert和Electra,Bert的预测变成了预测所有Token

实验结果如下:

ElECTRA:震惊NLPER居然可以使用GAN了![PART2]_第7张图片

可以看到Electra 15%的效果和Bert相似,因此Bert之前只学习15%的Token的做法对于输入是有很大的信息损失的,而Electra的做法也弥补了这一损失。这也证明了之前作者的看法:Bert只学习15%的Token是不够的。Replace MLM的效果和Electra 15%的效果相差不大,这说明MASK的内容其实并不重要,重要的是要学习全部的输入序列。All-Tokens MLM的效果也解释了这一点。

通过这些实验结果,我想我们也可以理解为什么作者认为分辨器的任务比生成器复杂,分辨器的规模也要比生成器大。因为Input is all.(这句话是我加的)

一些想法

前文中提到我个人对Electra的loss不是很认同的看法,这部分我们看到作者对Loss也做了一些新的尝试,例如最大化分辨器被替换的Token的RTD Loss,虽然如此但我个人还是不是特别满意。因为我认为为了保证分辨器的效果,生成器要给他尽可能复杂的替换效果。但是这里的RTD Loss关注的是分辨器,生成器在整个过程中所受到的关注并不多。当然文中实验也提到过,生成器规模变大,分辨器的效果会相对变差。那么文中此时也没有提到生成器规模变大,是否会导致生成器的loss降低,预测效果提高?而如果证明这一点,那么我也可以确定我之前的猜测并没有错:分辨器还是需要足够的噪音以提高效果。

当然整体而言,这篇文章给了我们在Bert基础上进行尝试的工匠一个亮眼的提示,其他的论文大都想着对结构,超参等进行修改。而这篇论文回归数据本身,关注我们的输入,用Bert"欺骗'Bert,想想都让人兴奋呢。那么下一次让人惊喜的创意又会是什么呢?希望大家和我一起期待。

你可能感兴趣的:(机器学习)