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:到上下文向量表示序列
。对于给定位置
,生成器输出使用 softmax 层生成特定令牌 xt 的概率:
其中
表示token embedding;对于给定的位置t,discriminator预测
是否真实,即该token是来自数据而不是generator
具有sigmoid的输出层:
Generator:可以是能与输入产生区别的任意模型。通常使用小型MLM模型。通过最大似然而不是对抗方式训练Generator,经过预训练后,在下游任务中丢弃Generator只保留Discirminator。
Generator首先进行MLM操作,对采用bert中的操作mask一些输入,得到
,然后Generator学习预测被mask的掉的单词,得到
,Discriminator学习区别每个token是来自原始数据还是由Generator生成。
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/9627c2da2504956a0186436bbc35d41a.png)
两部分的损失函数分别为:
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/9627c2da2504956a0186436bbc35d41a.png)
generator的梯度无法传递给discriminatot,于是使用最小化联合损失:
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/9627c2da2504956a0186436bbc35d41a.png)
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是全部计算的,所以继续探究哪种方式更好。
- ELECTRA 15%:让Discriminator只计算15%token上的损失。
- Replaced MLM:训练Bert MLM,输入不用[MASK]进行替换,而是其他生成器。
- All-Tokens MLM:接着用Replaced MLM,只不过Bert的目标函数变为预测所有token,接近ELECTRA。
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://i-blog.csdnimg.cn/blog_migrate/9627c2da2504956a0186436bbc35d41a.png)
结论:
- 对比ELECTRA和ELECTRA 15%:在所有token上计算loss确实能其实效果;
- 对比Replaced MLM和Bert:[MASK]标志确实会对Bert模型产生影响;
- 对比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
ELECTRA: 超越BERT, 19年最佳NLP预训练模型