ELECTRA論文閱讀筆記

ELECTRA模型是對BERT的一次改進,該改進主要體現在對樣本的使用效率上。具體實現方式,是引入了比較像GAN的一種架構——首先,使用一個較小的generator(生成器)將隨機mask掉的token再預測出來,然後再將重新修復後的句子交給discriminator(判別器)進行判斷,判斷input中每個單詞是否有被generator替換過。相比之下,BERT是先對一部分token進行隨機mask,然後再對被mask的詞使用上下文進行預測,預測的樣本空間是整個詞表。最終經實驗驗證,ELECTRA在相同的算力、數據和模型參數的情況下,效果優於BERT;而和效果相近的RoBERTa和XLNet相比,ELECTRA消耗的計算量不到它們的1/4;在相同的計算量的加持下,ELECTRA則要更優。

 

引言

現如今,效果優異的NLP預訓練模型大多采用了MLM(masked language model)方法進行訓練(BERT、XLNet等),儘管相比於傳統語言模型,它們使用Transformer在正反兩個方向上對語義進行學習,這已經提升了它們的學習效率;但由於這些模型只對input序列中的一小部分(一般是15%)進行學習,所以它們仍舊耗費了很多的算力。

爲了進一步提升預訓練語言模型的學習效率,我們提出了RTD(replaced token detection)任務作爲MLM任務的替代品——這是一種架構有點類似於GAN的學習任務,首先通過一個較小的generator對BERT中的特殊token [MASK]進行替換,然後再訓練一個discriminator對input中的每個單詞進行預測,即模型會從input序列中的全部tokens進行學習,這有別於BERT的15%,而我們認爲這也是使得ELECTRA訓練比BERT更快的原因。如圖1所示,ELECTRA總能使用更少的算力、更少的模型參數,達到比BERT等模型更好的結果。

                                                                                        圖1 模型算力消耗對比圖

 

方法

                                                                                        圖2 ELECTRA模型結構圖

如圖2所示,我們給出了該模型的結構圖。generator可以是任意模型,它的任務是對被隨機mask掉的token進行預測,它一般是一個較小的BERT模型,與discriminator一起進行訓練,而discriminator的任務就是分辨出到底哪個token是被generator篡改過以致於和原token不一致的。儘管整個模型架構有點像GAN,但在我們的實驗中發現,使用MLE的方式進行訓練,效果會優於對抗式的訓練方式[1],具體原因後面會詳述。在預訓練完成後,我們會丟棄generator而保留discriminator(真正的ELECTRA model),參與下游的fine-tune任務。

具體來說,生成器G和判別器D是我們訓練得到的兩個神經網絡,二者都包含encoder(即Transformer網絡),從而將input序列從x映射到h(x)。而二者的任務又是不同的,所以我們會選擇不同的損失函數對它們的錯誤進行衡量。具體公式如下:

簡單來說,公式1代表generator,其任務是根據上下文對被隨機mask掉的token進行預測,所以採樣空間是V(全部詞表),因而損失函數也就是softmax損失;而discriminator的任務是對一個token是不是和原文中的一致進行判斷,所以是個二分類任務,損失也就是交叉熵損失。

如圖所示, 代表被隨機mask過後的序列。原序列x長度爲n,而其中k個token被特殊token [MASK]替換掉。而 代表被generator做了二次修改的序列。 序列的[MASK] token使用generator生成的結果進行替換,generator生成的結果遵循softmax分佈。

最終,ELECTRA的最終損失函數是由生成器G的損失和判別器D的損失一同組成。因爲生成器G規模較小而且任務相對更難,所以一般Loss比判別器G的Loss更大,而我們希望聯合訓練時同時關注generator和discriminator二者的loss,所以我們在這裏給判別器D的loss加以係數λ。

此外,爲何模型架構很像GAN但仍和GAN有三點明顯的差別——

  1. 若generator碰巧預測對了,經實驗發現反而會對下游任務有好處;(這也就味着,在適當的區間內,generator更強,有助於discriminator的訓練)
  2. generator是用MLE訓練的而非對抗訓練方式,因爲無法把loss傳遞迴generator;
  3. 輸入不是noise vector(GAN是這麼幹的)

 

主要的實驗細節

參數共享機制

本文作者首先想到通過參數共享的方法減少參數,並提升參數的學習效率。當generator和discriminator規模相等時,二者之間可以將參數完全共享,即二者其實就是一套模型。然而經實驗所得,更小的generator其實對結果更有幫助,所以我們只共享了generator和discriminator的embedding層的參數(包括token和position的embedding)。經實驗,不進行參數共享GLUE score=83.6,全部進行參數共享GLUE score=84.4,而只在embedding層進行參數共享GLUE score=84.3.究其原因,我們認爲,因爲判別器只會更新input序列中涉及到的token的參數,而生成器卻會對詞表中的全部單詞進行權重更新,完全共享參數會導致浪費。

更小的生成器

如果讓生成器和判別器的規模相當,則整個預訓練的時間會大約變爲原來的2倍。如圖所示,我們發現最佳的生成器大小爲判別器規模的1/4~1/2。左邊圖顯示,當判別器規模不變的情況下,生成器的規模越大,反而可能會導致結果的下降——究其原因,可能是過強的生成器,可能會給出太難的題目,以致於讓判別器無法學習。

                                                                                            圖3 對比實驗示意圖

訓練方法

文中主要提及了3種訓練方法,分別是ELECTRA最終使用的聯合訓練方法、兩步式訓練方法和與GAN相似的對抗訓練方法。下面我們先着重介紹一下兩步式訓練方法:

  1. 首先,只對生成器連續訓練n-steps;
  2. 使用生成器的參數對判別器進行初始化,然後連續訓練判別器n-steps,與此同時保持生成器的參數不變。(注意,這要求生成器和判別器要有相同的規模)

我們最終發現,如果在兩步式訓練中不使用參數共享,最終學得的判別器可能在很多類別上什麼也沒學到——作者猜測,這可能是因爲generator啓動速度比discriminator快得多,即生成器已經學會了初中知識並出初中題目,而判別器還只是小學生水平;此外,參數共享可能還在無意中讓generator起到了“榜樣作用”,給discriminator現身說法,展示如何從一個菜雞到大佬的轉變,這也可以在一定程度上解釋爲何訓練換擋時GLUE score會有明顯的躍升。

其次我們聊聊對抗式訓練方法。從圖3中的右圖可以看出,對抗式訓練方法(橘黃色實線)是不如傳統的MLE訓練方法的,原因可能有2點:

  1. 對於RF而言,全部文本組成的action space太大了,造成其採樣效率太低;
  2. 對抗訓練得到的結果是低熵的輸出分佈,大多數的概率質量落在單個token上,導致generator的輸出沒有足夠的多樣性,這樣的題目discriminator做起來沒有足夠的學習價值

 

模型效果對比

小模型之間的對比

                                                                                 圖4 模型效果對比(基於GLUE的驗證集)

如圖4,圖中所出現的BERT/ELECTRA-Small,相比於BERT-Base,相關模型參數發生瞭如下縮減:其序列長度 512->128,batch size 256->128,hidden size 768->256,embedding size 768->128。從圖中可見,在相同的計算量的情況下,ELECTRA-Small效果超越了BERT-Small(爲了保證二者使用了相同的計算量,ELECTRA-Small訓練了1M steps,而BERT-Small則是1.5M steps),而ELECTRA-Base同樣也超越了BERT-Base。

大模型之間的對比

                                                                                圖5 與RoBERTa/XLNet對比(基於GLUE驗證集)

如圖5所示,ELECTRA-400k在達到與RoBERTa-500k和XLNet相近的效果的情況下,算力消耗卻只是其1/4不到;而當我們使用足夠的計算量時,ELECTRA模型在大部分任務上都達到了sota。

模型學習效率的分析

作者前文提到,ELECTRA相對於BERT的效果和學習效率的提升,可能來自於ELECTRA預測了全部input tokens(BERT是15%),以及BERT存在的由於引入[MASK]特殊token導致的“miss-match”問題不存在於ELECTRA。鑑於此,作者對這一問題進行了更深入的分析。

作者提出三個實驗模型,分別是:

  1. ELECTRA 15%:讓判別器只計算input中15% token的損失(降低ELECTRA對樣本的使用效率);
  2. Replace MLM:訓練BERT MLM,其中預訓練中input裏的[MASK]使用generator生成的token進行替換(探究只在預訓練中才出現[MASK]對模型的影響);
  3. All-Tokens MLM:接着用Replace MLM,只不過BERT的目標函數變爲預測所有的token,比較接近ELECTRA。

                                                                                 圖6 模型學習效率實驗

三者的效果如圖6所示,我們可以看出:

  1. ELECTRA 15%比ELECTRA效果差得多,說明在全部tokens上學習確實對結果有很大提升;
  2. Replace MLM效果比BERT略好,這說明miss-match問題確實會對BERT有所傷害。如果BERT中沒有使用10%[MASK]替換的trick,作者估計其效果還要再差一點。
  3. All-Tokens MLM的效果是所有實驗模型中最接近ELECTRA的,這說明對全詞的預測確實會提升BERT的效果

以上實驗結果說明,ELECTRA相比於BERT帶來的學習效率的提升主要來自於對全部token的學習,次要來自於消弭了預訓練和fine-tune之間的miss-match。此外,All-Tokens MLM和ELECTRA之間的差距也顯示了ELECTRA比BERT不僅僅提升在“學得更快”上。從圖7的左和中圖可見,模型規模越小,ELECTRA對BERT的效果優勢越大。而圖7的右圖顯示,對於同樣的小模型而言,將二者都訓練完全直至收斂,ELECTRA-256會得到比BERT-256更好的下游任務效果。

我個人對這個實驗的理解是這樣的。相比之下,BERT模型會對全部不同語境下的token進行學習,然後全部“記錄在”其大腦(hidden state)中;而ELECTRA像是走了捷徑,它最終任務是二分類,更簡潔卻也更貧乏,因爲最終的embedding表示空間會被壓縮到兩個空間中去。所以形象地理解“模型規模越小、ELECTRA優勢更大”這一現象,似乎可以用“燒腦論”來解釋,如果你腦容量夠大,那麼就足夠學習並“記住”豐富的BERT習得的詞表示;但如果你腦容量不足,那還不如選擇簡潔明快的ELECTRA,這就好比考試是隻背公式和重點,還是從頭開始,知其然也知其所以然吧。

                                                                                        圖7 對比BERT和ELECTRA

 

ELECTRA優缺點的探究和總結

作者嘗試過但失敗了的方案

鑑於前文已證,(在一定範圍內)較小或者較弱的generator會對結果有所幫助,所以我們嘗試過兩種繼續削弱generator的方案:一是故意阻止generator採樣到正確token,即在採樣時從詞表中刪去正確token;二是提升generator輸出的溫度,從而降低正確token輸出的置信度。結果發現它們都對結果沒有幫助。

根據RTD任務,我們還開發了一個和其相似的、句子層面的任務,即我們保證input序列中的20%沒有被generator修改過,然後使用discriminator對input的句子是否被修改過進行判斷和學習。令作者驚訝的是,這反而會對下游任務效果產生傷害。

其他讀者發現的或認爲的優缺點

優點

  1. 任務難度的提升,是導致ELECTRA優於BERT的一大原因。對於BERT的MLM任務而言,它是隨機mask token;而對於ELECTRA,相當於通過generator來“選擇出”更難的token,再交給discriminator去學習。這就好比,對於相同的input sequence:“我想喫蘋果”,普通的MLM方法給出的mask結果可能是"我想喫蘋[MASK]",而ELECTRA則是"我[MASK]喫蘋果",顯而易見後者的預測更可能出錯、也就對應了更大的loss,而模型是通過loss(錯誤)來學習的。所以generator其實相當於一個“難題篩選器”,將更難的任務交給discriminator,從而更好地鍛鍊discriminator的能力;(難題讓你變得更好效果)
  2. 將主任務從V分類變成二分類,算法複雜的下降。對於BERT而言,其MLM任務是在整個樣本空間V中進行採樣,而ELECTRA只需要進行二分類,不需要對全體數據的分佈進行建模。而作者也對BERT和ELECTRA的小模型進行了對比,證明全體參數最終其實是被完整地訓練了;(沒有喫頂了效果)
  3. 增加了被預測token的自身信息利用。MLM中,被mask的token的預測是不會用到其本身的信息的(我們認爲其信息全部蘊含在其上下文中),而ELECTRA的RTD任務則是通過上下文和待預測token自身一起進行預測,輸入信息量更多、且相對更直接。

缺點

  1. 判別器的二分類屬性,導致其可能不適用於下游任務。BERT使用MLM進行預訓練然後接下游任務,看起來是足夠合理的,因爲我們可以認爲MLM對全詞采樣的過程中,其實是給所有token都建立了一個基於其上下文的詞表示;然而判別器任務是二分類,也就是將token的表示劃分到兩個空間中,可能會導致其hidden space中信息的過早退化。知乎上有用戶發現ELECTRA模型對NER任務不太友好,因而面對複雜的下游任務時,ELECTRA判別器生成的表示可能不夠豐富。此外,判別器本身是用二分類任務來預訓練的,所以當它面對“接近二分類”的任務時會明顯有所助益(如GLUE的CoLA任務),但面對諸如序列標註、文本生成等不那麼“分類”的任務時,效果可能就較差。

參考論文

【1】Massimo Caccia, Lucas Caccia, William Fedus, Hugo Larochelle, Joelle Pineau, and Laurent Char-lin. Language GANs falling short. 2018

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章