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 G,另一个是Discriminator DGD都有一个Transformer的Encoder结构,能够将输入序列x=[x_{1},\cdots ,x_{n}]映射到一个上下文表示向量h(x)=[h_{1},\cdots ,h_{n}]

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

P_{G}(x_{t}|x)=\frac{exp\left \{e(x_{t})^{T}h_{G}(x)_{t}\right \}}{\sum _{x^{'}}exp\left \{e(x^{'})^{T}h_{G}(x)_{t}\right \}}

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

D(x,t)=sigmoid(w^{T}h_{D}(x)_{t})

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

m_{i}\sim unif\left \{1,n\right \}\; for\; i=1\; to\; n\\ x^{masked}=REPLACE(x,m,[MASK])\\ \hat{x}_{i}\sim P_{G}(x_{i}|x^{masked})for\; i\in m\\ x^{corrupt}=REPLACE(x,m,\hat{x})

这里的\hat{x}_{i}的采样过程是从词典里的所有token中进行采样,采样的概率就是P_{G}

损失函数如下:

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 )

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

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

\underset{\theta _{G},\theta _{D}}{min}\sum _{x\in X}L_{MLM}(x,\theta _{G})+\lambda L_{Disc}(x,\theta _{D})

事实上由于采样的步骤存在,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的训练方法),第二种是分两步的训练:
①使用L_{MLM}训练Generatorn步;
②使用Generator的参数初始化Discriminator的参数,然后使用L_{Disc}训练Discriminatorn步,这个过程不会更新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的lossL_{Disc}只来自m所标记的位置。
②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对比
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容