論文標題: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的一個優(yōu)點是從所有的token中進行學習,而非只從15%的被mask掉的token中進行學習,這使得ELECTRA是更加高效的。前面提到的訓練的方法雖然很像GAN,但事實上ELECTRA的訓練并不是對抗式的,因為generator雖然提供被破壞的token,但是它使用的是極大似然的方法,這主要是因為將GAN應用到文本上有一些困難。
ELECTRA的全名叫做“Efficiently Learning an Encoder that Classifies Token Replacements Accurately.”。經過試驗論證ELECTRA比BERT更加地高效并且能夠在下游任務上取得更高的精度。在給定相同的模型大小、數據和算力的條件下,ELECTRA戰(zhàn)勝了一系列模型:

二、方法
下圖提供了本文方法的一個概覽:

ELECTRA一共需要訓練兩個模型,一個是Generator ,另一個是Discriminator
,
和
都有一個Transformer的Encoder結構,能夠將輸入序列
映射到一個上下文表示向量
。
對于一個給定的位置,Generator會使用一個softmax層來輸出生成token
的概率:
這里的代表的是token embedding。另外對于一個給定的位置
,Discriminator 會預測這個位置的token是不是fake的,也就是說預測這個token是來自Generator還是來自真實的數據分布:
Generator事實上就是在執(zhí)行MLM,對于輸入序列,MLM選擇一些隨機的位置(從
到
之間)來進行mask,這些被選中的位置坐標用
來表示(假設選擇
個位置,通常
),這些位置的token會被
[MASK]取代,然后序列就變成了
,表示為
,然后Generator會去學習被mask掉的位置的極大似然。Discriminator會識別每個token是否被Generator的采樣替換過。更具體地來說,我們會用Generator的采樣來繼續(xù)替換
中mask的位置來得到
,并且訓練Discriminator來識別
中的每一個token是否是原來的
中的token。用公式表達前述的替換和采樣的過程就是:
這里的的采樣過程是從詞典里的所有token中進行采樣,采樣的概率就是
。
損失函數如下:
這里的是指示函數,
指期望值。如果你對GAN比較熟悉的話會發(fā)現這個損失函數很像GAN的損失函數,但是事實上和GAN還是有一定區(qū)別的:
①如果Generator恰好生成了原來的token,那么這個位置將不會認為是fake的;
②Generator使用極大似然的方法來訓練而不是使用對抗式的方法視圖騙過Discriminator來訓練的,對抗學習的方法是困難的因為不能通過Generator的采樣進行反向傳播。
在ELECTRA中最小化的是大語料上的組合損失:
事實上由于采樣的步驟存在,Discriminator的損失不能傳播回Generator,所以ELECTRA并沒有這么做。在微調時丟掉Generator使用Discriminator即可。
三、實驗
本文中的實驗在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實驗結果如下:

本文推測如果Generator過于powerful會對Discriminator的學習造成阻礙,因此本文中會按照本實驗的最佳實驗結果來確定ELECTRA的Generator size大小。
- 不同的訓練算法
本實驗對比了3種不同的訓練策略。第一種是聯合訓練(也就是ELECTRA的訓練方法),第二種是分兩步的訓練:
①使用訓練Generator
步;
②使用Generator的參數初始化Discriminator的參數,然后使用訓練Discriminator
步,這個過程不會更新Generator的參數。
第三種是對抗式的方法,這種方法的實驗記錄在本文附錄中,感興趣的同學可以自行查看。
以下為實驗的結果對比:

因此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的增益,發(fā)現size越小增益越大,并且,并且對小模型進行了完全訓練以達到收斂,表明完全訓練時ELECTRA能夠比BERT達到更高的下游精度。本文推測ELECTRA相比BERT更加的parameter-efficient,因為ELECTRA作為一個Discriminator來訓練,并不需要建模完整的數據分布。這部分實驗結果如下:
