论文标题:ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators
论文链接:https://arxiv.org/abs/2003.10555
论文来源:ICLR 2020
一、概述
目前的SOTA语言表示学习方法可以看做是在学习一个去噪自编码器(denoising autoencoder),它们选择无标注的输入序列的一小部分(通常15%),然后将这一部分mask掉(比如BERT),或者attend到这些token(比如XLNet),然后训练整个网络来还原原来的输入。由于每个样本只学习15%的token,这些Masked Language Modeling(MLM)的方法通常需要大量的算力。
在本文中提出的replaced token detection的预训练方法,在这个方法中,不会使用[MASK]
来替换token,而是使用从提议分布中的采样来进行替换,这些采样来自一个小的masked language model。这种方法解决了BERT中(在XLNet中没有)的一个mismatch的问题,也就是网络只在训练时遇到过[MASK]
这个token,而在微调时并没有遇到。输入被采样替换后会将网络当做一个discriminator来识别一个token是原来的还是被替换过的。另外使用一个masked language model作为generator来预测被mask的位置的原始token。比起MLM的方法,replaced token detection的一个优点是从所有的token中进行学习,而非只从15%的被mask掉的token中进行学习,这使得ELECTRA是更加高效的。前面提到的训练的方法虽然很像GAN,但事实上ELECTRA的训练并不是对抗式的,因为generator虽然提供被破坏的token,但是它使用的是极大似然的方法,这主要是因为将GAN应用到文本上有一些困难。
ELECTRA的全名叫做“Efficiently Learning an Encoder that Classifies Token Replacements Accurately.”。经过试验论证ELECTRA比BERT更加地高效并且能够在下游任务上取得更高的精度。在给定相同的模型大小、数据和算力的条件下,ELECTRA战胜了一系列模型:
效率对比
二、方法
下图提供了本文方法的一个概览:
架构
三、实验
本文中的实验在GLUE数据集上进行,使用GLUE score来代表GLUE数据集中所有任务的平均得分。
- 模型拓展
- 参数共享
实验中探索了Generator和Discriminator的参数共享对模型效果的影响,如果Generator和Discriminator的size(这里的size指的是隐层hidden size)完全一致,那么就可以完全共享参数,但事实上实验表明使用一个小的Generator效果更好。在这种情况下,我们只共享token embedding的参数(token embedding只在Generator的输入和输出以及Discriminator的输入使用),使用的token embedding的size和Discriminator的隐层hidden size大小一致,注意当Generator的size更小时会有一个线性映射来将token embedding映射到Generator的size大小。Generator的输入和输出token embedding总是绑定在一起的,就像BERT中一样。
本文使用相同size的Generator和Discriminator进行了实验,3种不同的实验设置:不进行参数共享、只共享Generator和Discriminator的token embedding、完全共享所有参数,3种实验设置对应的GLUE得分是83.6、84.3、84.4。这说明Discriminator能够从token embedding的共享中获益,这是因为Discriminator只会更新输入中出现的和Generator采样得到的token,而Generator由于存在softmax层,所以能够更新所有的token。另外共享所有参数的提升不大并且要求Generator和Discriminator的size相同,因此在ELECTRA只会共享token embedding的参数。
- 更小的Generator
如果Generator和Discriminator的size相同,就会导致ELECTRA的算力需求是MLM的两倍,因此ELECTRA使用小一点的Generator,也就是说Generator的隐层hidden size会小一点,甚至本文尝试使用过极简的“unigram”作为Generator。不同size的Generator和Discriminator实验结果如下:
不同size实验
本文推测如果Generator过于powerful会对Discriminator的学习造成阻碍,因此本文中会按照本实验的最佳实验结果来确定ELECTRA的Generator size大小。
- 不同的训练算法
本实验对比了3种不同的训练策略。第一种是联合训练(也就是ELECTRA的训练方法),第二种是分两步的训练:
第三种是对抗式的方法,这种方法的实验记录在本文附录中,感兴趣的同学可以自行查看。
以下为实验的结果对比:
不同训练算法实验
因此ELECTRA采用联合训练的方法。
- 实验
- 小模型
本部分对比ELECTRA-small、ELECTRA-base等小模型实验结果:
小模型实验
- 大模型
本部分对比ELECTRA-large等大模型实验结果:
大模型实验
- ELECTRA相对于BERT的提升来自何处
之前说过,ELECTRA相对于BERT有所提升是因为ELECTRA预测所有的token,而BERT只预测15%的mask的token,但是事实上BERT预测15%的mask的token时也会参考所有的token。为了更好的探索这一点,本实验做了如下3种设置:
①ELECTRA 15%:ELECTRA只预测15%的被Generator采样过的位置,也就是说Discriminator的loss所标记的位置。
②Replace MLM:一个BERT模型,不过被选中的位置不会使用[MASK]
替换,而是也使用Generator的采样,设置这样一个模型是为了探索ELECTRA相对于BERT的提升是否是因为解决了之前提到的mismatch的问题。
③All-Tokens MLM:与Replace MLM设置一样,只不过要预测所有位置而非只预测mask的位置。
实验结果如下:
实验结果
这表明:
①ELECTRA的提升的确是因为对所有位置进行预测;
②BERT的mismatch的问题的确会对效果造成轻微损害。
另外实验对比了不同size下的ELECTRA对BERT的增益,发现size越小增益越大,并且,并且对小模型进行了完全训练以达到收敛,表明完全训练时ELECTRA能够比BERT达到更高的下游精度。本文推测ELECTRA相比BERT更加的parameter-efficient,因为ELECTRA作为一个Discriminator来训练,并不需要建模完整的数据分布。这部分实验结果如下:
不同size对比