ELECTRA: Pre-training Text Encoders as Discriminators rather than Generators

ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately): 将文本编码器预训练为判别器而不是生成器

Bert的MLM(Masked language modeling),通过用[MASK]替换输入token文本,然后训练一个模型来重建原始的token,在下游任务中表现的非常好,但是需要大量的计算。于是ELECTRA提出:replaced token detection。

并不通过[MASK]来替换token,而是从一个小的生成网络(generator network)中采样合理的替代品来替换。简单来说就是,bert是随机[MASK]一个句子中的输入,进行预测,这些预测有的难有的简单。而ELECTRA则是通过generator network来选择需要替换的token。并不是训练一个预测替换token的模型,而是训练一个discriminative model来预测每一个输入token是否被generator model所替换。

Replaced token detection(RTD)

 

训练两个神经网络:Generator(G)和Discriminator(D)。主要有一个encoder(Transformers)构成,映射输入序列input token:\boldsymbol x = \left [ x_{1}, ..., x_{n} \right ]到上下文向量表示序列h(\boldsymbol x) = \left [ h_{1}, ..., h_{n} \right ]。对于给定位置x_{t} = [MASK],生成器输出使用 softmax 层生成特定令牌 xt 的概率:

其中e表示token embedding;对于给定的位置t,discriminator预测x_{t}是否真实,即该token是来自数据而不是generator

具有sigmoid的输出层:

 

 

 

Generator:可以是能与输入产生区别的任意模型。通常使用小型MLM模型。通过最大似然而不是对抗方式训练Generator,经过预训练后,在下游任务中丢弃Generator只保留Discirminator。

Generator首先进行MLM操作,对\boldsymbol x = \left [ x_{1}, ..., x_{n} \right ]采用bert中的操作mask一些输入,得到\boldsymbol x^{masked} = REPLACE(\boldsymbol x, \boldsymbol m, [MASK]),然后Generator学习预测被mask的掉的单词,得到\boldsymbol x^{corrupt} = REPLACE(\boldsymbol x, \boldsymbol m, \hat{\boldsymbol x}),Discriminator学习区别每个token是来自原始数据还是由Generator生成。

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

两部分的损失函数分别为: 

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

generator的梯度无法传递给discriminatot,于是使用最小化联合损失:

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

Experiments 

Weight Sharing:

提出在Generator和Discriminator上共享参数来提升预训练的效果。但是发现当Generator比较小时,模型的效果会比较好,所以只能共享embedding层(token and positional embedding)。只共享token embedding层的效果是84.3,共享所有权重的效果是84.4。作者认为生成器对embedding有更好的学习能力。

Smaller Generators

如果Generator和Discriminator的大小相同,训练每步的计算量大约是MLM模型的两倍,为了消除这个影响,于是减小Generator,使用smaller generator,减小模型的层数,使其它的超参数保持不变。Generator的大小在Discriminator的1/4-1/2之间的效果是最好的。(过强的Generator会增加Discriminator的难度)。

Training Algorithms:

  • Adversarial Contrastive Estimation:ELECTEA因为无法使用GAN,但引入了对抗学习的思想来训练,将Generator的目标函数有最小化MLM loss换成最大化判别器在被替换token上的RTD loss。
  • Two-stage training:即先训练Generator,然后在freeze,用Generator的权重初始化Discriminator,再接着训练相同步数的Discriminator。

Small model & Big model

主要介绍ELECTRA-small 和ELECTRA-large模型的表现。

Efficiency Analysis

Bert的loss只计算被替换的15%个token,而ELECTRA是全部计算的,所以继续探究哪种方式更好。

  1. ELECTRA 15%:让Discriminator只计算15%token上的损失。
  2. Replaced MLM:训练Bert MLM,输入不用[MASK]进行替换,而是其他生成器。
  3. All-Tokens MLM:接着用Replaced MLM,只不过Bert的目标函数变为预测所有token,接近ELECTRA。

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

结论:

  1. 对比ELECTRA和ELECTRA 15%:在所有token上计算loss确实能其实效果;
  2. 对比Replaced MLM和Bert:[MASK]标志确实会对Bert模型产生影响;
  3. 对比All-Tokens MLM和Bert:如果Bert预测所有token的话,效果会接近ELECTRA。

Conclusion

使GAN的思想运用到了NLP,开启了新大陆,同时使Bert的缺点暴露无遗,BERT虽然对上下文有很强的编码能力,却缺乏细粒度语义的表示。

Supplement

RTD中,generator的作用

  • 选择性的过滤,筛选负样本,generator还原错误的token当成负样本,丢给discriminator,增加discriminator的学习难度,即选择性的负采样。
  • 避免discriminator的输入样本中有[MASK],从而缓解Bert中出现的mismatch问题(mismatch问题指的是bert中预训练方式masked LM中,模型的输入有[MASK],但是下游任务并没有[MASK])。

ELECTRA与Bert相比,性能提升的主要原因

  • 最大的贡献为:Discriminator可以学习到所有的token,可以计算所有token的loss。
  • 其次为缓解Bert中出现的mismatch问题。

Generator性能选择:

  • 如果Generator的性能太好,反而会影响模型的效果,因为Generator过于强大,那么大部分被[MASK]的token都会被Generator正确的预测,造成Discriminator的负样本过少,且负样本难度较大,学习效果不好,因此作者建议generator的关键参数量(比如多头注意力的头数,hidden的维度等)是discriminator的四分之一到二分之一最好。

RTD预训练中,generator和discriminator的哪些参数共享的?为什么?

  • Generator和Discriminator的token embedding是共享的,原因在于discriminator自己每次只能更新Generator送过来的负样本+原有正样本的token embedding,更新的数量太有限,但是Generator可以更新整个词表的token embedding,因此共享的token embedding可以让Generator帮助Discriminator更快的更新token embedding。

 

Reference

如何评价NLP算法ELECTRA的表现?

ELECTRA: 超越BERT, 19年最佳NLP预训练模型

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值