ELECTRA 超过bert预训练NLP模型
論文:ELECTRA: Pre-training Text Encoders As Discriminators Rather Then Generators
本文目前在ICLR 2020盲審中,前幾天有審稿人發(fā)表文章對它大夸特夸,被稱為19年最佳NLP預(yù)訓(xùn)練模型,另外,在上周的智源北京人工智能大會上,Christopher Manning對這個(gè)工作也做了詳細(xì)介紹,那么,已經(jīng)不用匿名了,這就是Manning大師的工作,懷著崇拜加欣喜的心情,細(xì)細(xì)學(xué)習(xí)了這篇文章,筆記如下。
摘要:雖然諸如BERT之類的掩碼語言建模(MLM)預(yù)訓(xùn)練方法在下游NLP任務(wù)上產(chǎn)生了出色的結(jié)果,但它們需要大量的計(jì)算才能有效。這些方法通過用[MASK]替換一些詞來改變輸入,然后訓(xùn)練模型以重建原始詞。作為替代方案,我們提出了一種更加樣本有效的預(yù)訓(xùn)練任務(wù),稱為替換詞檢測。我們的方法不是掩蓋輸入,而是通過使用從小的生成網(wǎng)絡(luò)采樣的詞替換一些輸入詞來改變輸入。然后,我們訓(xùn)練一個(gè)判別模型,該模型可以預(yù)測損壞的輸入中的每個(gè)詞是否被生成器樣本替換,而不是訓(xùn)練一個(gè)預(yù)測損壞的詞的原始身份的模型。實(shí)驗(yàn)表明,這種新的預(yù)訓(xùn)練任務(wù)比MLM更有效,因?yàn)樵撃P蛷乃休斎朐~中學(xué)習(xí),而不僅僅是從被掩蓋的小子集中學(xué)習(xí)。結(jié)果顯示,在相同的模型大小、數(shù)據(jù)和計(jì)算條件下,通過我們的方法學(xué)習(xí)的上下文表示大大優(yōu)于通過BERT和XLNet等方法學(xué)習(xí)的上下文表示,小模型的收益特別大,例如,在GLUE自然語言理解基準(zhǔn)上,我們在一個(gè)GPU上訓(xùn)練了4天的模型優(yōu)于GPT(使用30倍的計(jì)算能力訓(xùn)練)。我們的方法在規(guī)模上也能很好地發(fā)揮作用,我們和RoBERTa(當(dāng)前最先進(jìn)的預(yù)訓(xùn)練transformer)的性能相當(dāng),而使用的計(jì)算量不到它的1/4。
1. 簡介
當(dāng)前最先進(jìn)的語言表示學(xué)習(xí)方法可以看作是學(xué)習(xí)降噪自動(dòng)編碼,這類僅選擇未標(biāo)記輸入序列的一小部分(通常為15%),掩蓋這些標(biāo)記或注意這些標(biāo)記,然后訓(xùn)練網(wǎng)絡(luò)以恢復(fù)原始輸入的標(biāo)記。 這些方法可以學(xué)習(xí)雙向表示,因此比語言模型預(yù)訓(xùn)練更有效,但是這些掩碼語言模型(MLM)方法僅從每個(gè)樣本15%的詞中學(xué)習(xí),計(jì)算成本非常大。
我們提出了一個(gè)新的預(yù)訓(xùn)練任務(wù)replaced token detection,它的目標(biāo)是學(xué)習(xí)區(qū)分輸入的詞。這個(gè)方法不采用mask,而是從一個(gè)建議分布中采樣詞來替換輸入,這個(gè)過程解決了[mask]帶來的預(yù)訓(xùn)練和fine-tune不一致的問題,然后我們訓(xùn)練一個(gè)判別器來預(yù)測每個(gè)詞是原始詞還是替換詞。判別任務(wù)的一個(gè)好處是模型從輸入的所有詞中學(xué)習(xí),而不是MLM中那樣僅使用掩蓋的詞,因此計(jì)算更加有效。我們的方法很容易讓人想起GAN,但其實(shí)并不是對抗學(xué)習(xí),我們采用的是最大似然,目前GAN應(yīng)用在文本領(lǐng)域還是有不少困難。
我們的方法稱為 ELECTRA (Efficiently Learning an Encoder that Classifies Token Replacements Accurately),與之前的工作一樣,我們用它來訓(xùn)練transformer的文本編碼器,然后在下游任務(wù)上進(jìn)行fine-tune。通過一系列的擴(kuò)展,我們證明從所有輸入序列中學(xué)習(xí)使得ELECTRA比BERT訓(xùn)練的更快,并且當(dāng)完全訓(xùn)練時(shí)在下游任務(wù)上取得的效果也更好。
我們訓(xùn)練了不同大小的ELECTRA模型并在GLUE上評價(jià)它們的效果,發(fā)現(xiàn):在相同的模型大小、數(shù)據(jù)、計(jì)算量的情況下,ELECTRA顯著優(yōu)于MLM類的方法,例如BERT和XLNet,詳細(xì)對比如下圖所示。此外,ELECTRA小模型僅需要在1塊GPU訓(xùn)練4天即可得到,這個(gè)小模型比BERT小模型在GLUE上高5個(gè)點(diǎn),甚至比更大的GPT模型效果還要好。此外,我們的方法在大規(guī)模情況下也取得了與當(dāng)前最先進(jìn)模型RoBERTa相當(dāng)?shù)男Ч?#xff0c;并且具有更少的參數(shù),訓(xùn)練過程需要的計(jì)算不到它的1/4。我們的方法證明,區(qū)分真實(shí)數(shù)據(jù)和有挑戰(zhàn)的負(fù)樣本的判別式任務(wù)是一種更加計(jì)算有效和參數(shù)有效的語言表示學(xué)習(xí)方法。
2. 方法
本文提出的方法包括兩個(gè)神經(jīng)網(wǎng)絡(luò):一個(gè)生成器G和一個(gè)判別器D,兩者都采用形如transformer的編碼網(wǎng)絡(luò)來獲取輸入序列x的向量表示h(x)。生成器的目標(biāo)是訓(xùn)練成掩碼語言模型,即給定輸入序列x,首先按照一定的比例(通常15%)將輸入中的詞替換成[MASK]得到,然后通過網(wǎng)絡(luò)得到向量表示hG(x),接著采用softmax層來為輸入序列中掩蓋的位置預(yù)測一個(gè)詞,訓(xùn)練的目標(biāo)函數(shù)為最大化掩蓋詞的似然。判別器的目標(biāo)是判斷輸入序列每個(gè)位置的詞是否被生成器替換過,如果與原始輸入序列對應(yīng)位置的詞不相同就認(rèn)為替換過。
生成器和判別器的損失函數(shù)如下:
最終的損失函數(shù)為生成器和判別器的加權(quán)和:
盡管我們的訓(xùn)練與GAN非常相似,但是有以下重要不同:
(1) 如果生成器生成的詞恰好與輸入相同,那么我們認(rèn)為是沒有替換過;
(2) 生成器的訓(xùn)練目標(biāo)是最大似然,這點(diǎn)跟GAN的對抗訓(xùn)練非常不同;
(3) 我們并沒有像GAN那樣,給生成器應(yīng)用噪聲向量。
預(yù)訓(xùn)練結(jié)束后,我們采用判別器的來fine-tune下游任務(wù)。
3. 實(shí)驗(yàn)
1. 模型擴(kuò)展
(1) 權(quán)重共享
如果生成器和判別器采用相同的size,那么它們編碼器的權(quán)重參數(shù)都可以共享,但是我們發(fā)現(xiàn):采用更小的生成器,并將生成器和判別器的embeddings共享更加有效。具體地,當(dāng)不采用權(quán)重共享時(shí)GLUE分?jǐn)?shù)為83.6,當(dāng)共享embeddings時(shí)分?jǐn)?shù)為84.3,當(dāng)所有參數(shù)共享時(shí)分?jǐn)?shù)為84.4。考慮到所有參數(shù)共享時(shí)提升很少,但是還要求生成器和判別器的size相同,不夠靈活,我們選擇僅僅共享embeddings。
(2) 更小的生成器
如果生成器和判別器采用相同的size,那么總體的訓(xùn)練時(shí)間差不多是MLM的兩倍,為了提高效率,我們嘗試更小的生成器。我們在保持其他參數(shù)不變的情況下,減少生成器的layer size進(jìn)行實(shí)驗(yàn),同時(shí)我們還采用簡單的unigram生成器作為對比,實(shí)驗(yàn)結(jié)果如下左圖。我們發(fā)現(xiàn),判別器的size越大越好(256 -> 512 -> 768),生成器的size介于判別器size的1/4-1/2時(shí)效果最佳。原因大概是太強(qiáng)的生成器對判別器太難了吧。
(3) 訓(xùn)練算法
我們對比了多種訓(xùn)練算法,效果如上右圖:
(1) 兩階段訓(xùn)練方法:將聯(lián)合訓(xùn)練的目標(biāo)函數(shù)分成兩步來做,首先訓(xùn)練生成器,然后固定生成器,并用它的參數(shù)來初始化判別器,訓(xùn)練判別器;
(2) 嘗試GAN的對抗訓(xùn)練,利用強(qiáng)化學(xué)習(xí)來適應(yīng)生成器采樣的離散操作;
(3) 此外還對比了BERT。
我們發(fā)現(xiàn):兩階段的訓(xùn)練算法在切換到第二階段時(shí)提升明顯,另外對抗訓(xùn)練的方法優(yōu)于BERT,但是不如最大似然的聯(lián)合訓(xùn)練。
2. 小模型
基于BERT-base的超參數(shù),我們減少序列長度(512 -> 128),減少batch size(256 -> 128),減少隱層大小(768 -> 256),采用更小的embedding(768 -> 128),在相同算力的情況下進(jìn)行模型效果對比,如下圖。我們發(fā)現(xiàn):ELECTRA小模型的效果比其他更多參數(shù)的模型更好,ELECTRA中等模型的效果甚至超越了BERT大模型。
3. 大模型
我們的ELECTRA大模型采用BERT大模型相同的size,實(shí)驗(yàn)結(jié)果如下圖,我們發(fā)現(xiàn):ELECTRA達(dá)到了當(dāng)前最先進(jìn)模型RoBERTa的效果,但是訓(xùn)練的計(jì)算量不到它的1/4,簡直是厲害!我們相信ELECTRA訓(xùn)練更久會有更好的結(jié)果。
4. 效率分析
為了更好地理解ELECTRA效果提升的原因在哪里,作者對比了一系列預(yù)訓(xùn)練方法:
(1) ELECTRA 15%:判別器在計(jì)算損失時(shí)僅考慮那些被掩蓋的詞(15%),除此之外都與標(biāo)準(zhǔn)的ELECTRA相同;
(2) Replace MLM:不同于MLM中用[MASK]替換掩蓋的詞,它用一個(gè)生成器模型預(yù)測的詞來替換掩蓋的詞,其他的都與MLM保持一致,這是為了分析解決[MASK]在預(yù)訓(xùn)練和fine-tune過程不一致問題的收益有多大。
(3) All-Token MLM:與Replace MLM一樣,采用生成器模型預(yù)測的詞來替換掩蓋的詞,并且,該模型預(yù)測所有輸入對應(yīng)的輸出,而不僅僅是掩蓋的詞。我們發(fā)現(xiàn)采用一個(gè)顯式的拷貝機(jī)制,對每個(gè)詞輸出一個(gè)拷貝概率D,最終預(yù)測概率為拷貝概率D乘以輸入,再加上 (1-D) 乘以MLM的softmax輸出。這個(gè)模型結(jié)合了BERT和ELECTRA。
實(shí)驗(yàn)結(jié)果如下表所示,我們發(fā)現(xiàn):
(1) ELECTRA 15%的效果相比ELECTRA差很多,說明ELECTRA對輸入的所有詞計(jì)算損失這一點(diǎn)收益非常大;
(2) Replace MLM效果略好于BERT,說明BERT采用[MASK]替換掩蓋詞會略微降低模型效果;
(3) All-Token MLM的幾乎快彌補(bǔ)了BERT和ELECTRA之間的gap,是最接近ELECTRA效果的模型。
總的來說,ELECTRA的提升一大部分來自于從所有詞中學(xué)習(xí),一小部分來自于解決[MASK]在預(yù)訓(xùn)練和fine-tune過程的不一致。
我們進(jìn)一步對比了BERT和ELECTRA在不同模型大小的效果,如下圖所示。我們發(fā)現(xiàn):
(1) ELECTRA模型越小,相比BERT的提升就越明顯(下圖左邊和中間);
(2) 模型收斂后ELECTRA效果明顯優(yōu)于BERT(下圖右圖)。
4. 總結(jié)
本文提出的ELECTRA在取得當(dāng)前最先進(jìn)模型相當(dāng)效果的同時(shí),計(jì)算量僅不到原來的1/4,非常有效。有效的原因一大部分來自于從所有詞中學(xué)習(xí),一小部分來自于解決[MASK]在預(yù)訓(xùn)練和fine-tune過程的不一致。
個(gè)人覺得,NLP預(yù)訓(xùn)練模型目前已經(jīng)發(fā)展到了爆發(fā)期,新模型出來的節(jié)奏越來越快,非常期待更多的工作出來,對于我輩NLPer,這是一個(gè)最美好的時(shí)代,一定要跟緊節(jié)奏。
?
總結(jié)
以上是生活随笔為你收集整理的ELECTRA 超过bert预训练NLP模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 排列组合中分组(分堆)与分配问题
- 下一篇: 掩码语言模型(Masked Langua