ELECTRA:类似GAN的预训练语言模型

论文标题: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战胜了一系列模型:

效率对比

二、方法

下图提供了本文方法的一个概览:

架构

ELECTRA一共需要训练两个模型,一个是Generator ,另一个是Discriminator ,和都有一个Transformer的Encoder结构,能够将输入序列映射到一个上下文表示向量。

对于一个给定的位置,Generator会使用一个softmax层来输出生成token 的概率:

这里的代表的是token embedding。另外对于一个给定的位置,Discriminator 会预测这个位置的token是不是fake的,也就是说预测这个token是来自Generator还是来自真实的数据分布:

Generator事实上就是在执行MLM,对于输入序列,MLM选择一些随机的位置(从到之间)来进行mask,这些被选中的位置坐标用来表示(假设选择个位置,通常),这些位置的token会被[MASK]取代,然后序列就变成了,表示为,然后Generator会去学习被mask掉的位置的极大似然。Discriminator会识别每个token是否被Generator的采样替换过。更具体地来说,我们会用Generator的采样来继续替换中mask的位置来得到,并且训练Discriminator来识别中的每一个token是否是原来的中的token。用公式表达前述的替换和采样的过程就是:

这里的的采样过程是从词典里的所有token中进行采样,采样的概率就是。

损失函数如下:

L_{MLM}(x,\theta _{G})=E\left (\sum _{i\in m}-log\: P_{G}(x_{i}|x^{masked})\right )\\ L_{Disc}(x,\theta _{D})=E\left (\sum_{t=1}^{n}[1(x_{t}^{corrupt}=x_{t})log\: D(x^{corrupt},t)+1(x_{t}^{corrupt}\neq x_{t})log(1-D(x^{corrupt},t))]\right )

这里的是指示函数,指期望值。如果你对GAN比较熟悉的话会发现这个损失函数很像GAN的损失函数,但是事实上和GAN还是有一定区别的:
①如果Generator恰好生成了原来的token,那么这个位置将不会认为是fake的;
②Generator使用极大似然的方法来训练而不是使用对抗式的方法视图骗过Discriminator来训练的,对抗学习的方法是困难的因为不能通过Generator的采样进行反向传播。

在ELECTRA中最小化的是大语料上的组合损失:

事实上由于采样的步骤存在,Discriminator的损失不能传播回Generator,所以ELECTRA并没有这么做。在微调时丢掉Generator使用Discriminator即可。

三、实验

本文中的实验在GLUE数据集上进行,使用GLUE score来代表GLUE数据集中所有任务的平均得分。

  1. 模型拓展
  • 参数共享

实验中探索了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的训练方法),第二种是分两步的训练:
①使用训练Generator步;
②使用Generator的参数初始化Discriminator的参数,然后使用训练Discriminator步,这个过程不会更新Generator的参数。
第三种是对抗式的方法,这种方法的实验记录在本文附录中,感兴趣的同学可以自行查看。

以下为实验的结果对比:

不同训练算法实验

因此ELECTRA采用联合训练的方法。

  1. 实验
  • 小模型

本部分对比ELECTRA-small、ELECTRA-base等小模型实验结果:

小模型实验
  • 大模型

本部分对比ELECTRA-large等大模型实验结果:

大模型实验
  1. 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对比

你可能感兴趣的:(ELECTRA:类似GAN的预训练语言模型)