ELECTRA模型精讲
還記得去年寫(xiě)下《ELECTRA: 超越BERT, 19年最佳NLP預(yù)訓(xùn)練模型》時(shí)興奮的心情,在我等到都快復(fù)工的時(shí)候,終于看到了它的身影和源碼[1]:
才第五嗎?沒(méi)事,期望越大,失望越大
谷歌在github放出的預(yù)訓(xùn)練模型效果是這樣的:
燃!鵝!在論文中聲稱(chēng)的效果卻是這樣的
Github repo中官方的解釋是精調(diào)的震蕩比較大,他們測(cè)試了很多隨機(jī)種子后取了中位數(shù)。
那么問(wèn)題來(lái)了,為什么論文中沒(méi)有取中位數(shù)呢(* ̄m ̄)?
雖然ELECTRA的思想仍是很驚艷的,但這樣的結(jié)果不免讓我們對(duì)原論文的數(shù)據(jù)產(chǎn)生質(zhì)疑。
?
不過(guò),有了word2vec和transformer的大家都懂的前車(chē)之鑒,我們這一次也理解為瑕不掩瑜了(* ̄m ̄)
回顧目前單模型的進(jìn)展(只參考原論文數(shù)據(jù)):
如果按照github中給出的85.2,ELECTRA跟RoBERTa還是有很大差距的。那今天我們就來(lái)分析一下ELECTRA的優(yōu)點(diǎn)和缺陷,如果對(duì)文中的觀點(diǎn)有質(zhì)疑,請(qǐng)?jiān)谠u(píng)論區(qū)一起討論~
PS:不了解這個(gè)模型的同學(xué)可以先看第二章ELECTRA簡(jiǎn)介~
后臺(tái)回復(fù)【electra】獲取論文PDF噢~~
ELECTRA優(yōu)缺點(diǎn)
通過(guò)自己的思考和知乎大佬們的提點(diǎn)[2],ELECTRA主要有如下優(yōu)點(diǎn):
-
任務(wù)難度的提升(知乎@香儂科技)
原始的MLM任務(wù)是隨機(jī)進(jìn)行mask,樣本預(yù)測(cè)難度是不一樣的,比如“夕小瑤的賣(mài)[MASK]屋”和“夕[MASK]瑤的賣(mài)萌屋”中,賣(mài)萌是比較常見(jiàn)的詞語(yǔ),而夕小瑤則是命名實(shí)體,沒(méi)見(jiàn)過(guò)的話更難預(yù)測(cè)出來(lái)。生成器相當(dāng)于對(duì)輸入進(jìn)行了篩選,使判別器的任務(wù)更難,從而學(xué)習(xí)到更好的表示
-
效率的提升(知乎@徐嘯)
運(yùn)算上,判別器進(jìn)行2分類(lèi)而不是V分類(lèi),復(fù)雜度降低。參數(shù)利用上,判別器不需要對(duì)完整的數(shù)據(jù)分布進(jìn)行建模,作者在實(shí)驗(yàn)中也發(fā)現(xiàn)越小的模型提升越明顯,可見(jiàn)參數(shù)被更完整地訓(xùn)練了
-
Token自身信息的利用(知乎@Towser)
做MLM的任務(wù)時(shí),都是mask掉token自身,利用上下文對(duì)自己進(jìn)行預(yù)測(cè)。而ELECTRA是同時(shí)利用自身和上下文預(yù)測(cè),和NLU任務(wù)的Finetune階段也比較一致
-
收斂速度
從論文中的分析實(shí)驗(yàn)來(lái)看:
(1)ELECTRA 15%:讓判別器只計(jì)算15% token上的損失
(2)Replace MLM:兩個(gè)生成器。一個(gè)生成器替換被mask的token,另一個(gè)生成器用替換后的輸入繼續(xù)進(jìn)行15%的MLM訓(xùn)練。這樣可以消除這種pretrain-finetune之間的diff
(3)All-Tokens MLM:同Replace MLM,只不過(guò)BERT的目標(biāo)函數(shù)變?yōu)轭A(yù)測(cè)所有的token,為了防止信息泄露加入了copy機(jī)制,以D的概率直接拷貝輸入,以1-D的概率預(yù)測(cè)新token,相當(dāng)于ELECTRA和BERT的結(jié)合
可以發(fā)現(xiàn),對(duì)效果提升最重要的其實(shí)是all-tokens的loss計(jì)算,這種方式相比只計(jì)算15%的token,大大增加了模型收斂速度。
雖然ELECTRA有很多優(yōu)點(diǎn),但個(gè)人認(rèn)為它還有以下缺陷:
-
顯存占用增多
之前都是訓(xùn)一個(gè)BERT,現(xiàn)在相當(dāng)于兩個(gè),即使共享參數(shù)去訓(xùn)練,由于Adam等優(yōu)化器的關(guān)系,需要保存的中間結(jié)果數(shù)量也是翻倍的。
-
多任務(wù)學(xué)習(xí)超參數(shù)調(diào)整
ELECTRA的loss由生成器和判別器分別構(gòu)成,原文中給判別器loss的權(quán)重是50,因?yàn)槎诸?lèi)的loss會(huì)比V分類(lèi)低很多。但這個(gè)數(shù)值太過(guò)絕對(duì),最好是變成可學(xué)習(xí)的參數(shù)動(dòng)態(tài)調(diào)整。
ELECTRA簡(jiǎn)介
模型結(jié)構(gòu)
ELECTRA的全稱(chēng)是Efficiently Learning an Encoder that Classifies Token Replacements Accurately,以1/4的算力就達(dá)到了RoBERTa的效果。模型結(jié)構(gòu)如下:
Generator和Discriminator可以看作兩個(gè)BERT,生成器的任務(wù)是MLM,判別器的任務(wù)是Replaced Token Detection,判斷哪個(gè)字被替換過(guò)。
但上述結(jié)構(gòu)有個(gè)問(wèn)題,輸入句子經(jīng)過(guò)生成器,輸出改寫(xiě)過(guò)的句子,因?yàn)榫渥拥淖衷~是離散的,所以梯度在這里就斷了,判別器的梯度無(wú)法傳給生成器,于是生成器的訓(xùn)練目標(biāo)還是MLM(作者在后文也驗(yàn)證了這種方法更好),判別器的目標(biāo)是序列標(biāo)注(判斷每個(gè)token是真是假),兩者同時(shí)訓(xùn)練,但判別器的梯度不會(huì)傳給生成器,目標(biāo)函數(shù)如下:
因?yàn)榕袆e器的任務(wù)相對(duì)來(lái)說(shuō)容易些,RTD loss相對(duì)MLM loss會(huì)很小,因此加上一個(gè)系數(shù),作者訓(xùn)練時(shí)使用了50。
另外要注意的一點(diǎn)是,在優(yōu)化判別器時(shí)計(jì)算了所有token上的loss,而以往計(jì)算BERT的MLM loss時(shí)會(huì)忽略沒(méi)被mask的token。作者在后來(lái)的實(shí)驗(yàn)中也驗(yàn)證了在所有token上進(jìn)行l(wèi)oss計(jì)算會(huì)提升效率和效果。
事實(shí)上,ELECTRA使用的Generator-Discriminator架構(gòu)與GAN還是有不少差別,作者列出了如下幾點(diǎn):
實(shí)驗(yàn)及結(jié)論
創(chuàng)新總是不易的,有了上述思想之后,可以看到作者進(jìn)行了大量的實(shí)驗(yàn),來(lái)驗(yàn)證模型結(jié)構(gòu)、參數(shù)、訓(xùn)練方式的效果。
-
Weight Sharing
生成器和判別器的權(quán)重共享是否可以提升效果呢?作者設(shè)置了相同大小的生成器和判別器,在不共享權(quán)重下的效果是83.6,只共享token embedding層的效果是84.3,共享所有權(quán)重的效果是84.4。作者認(rèn)為生成器對(duì)embedding有更好的學(xué)習(xí)能力,因?yàn)樵谟?jì)算MLM時(shí),softmax是建立在所有vocab上的,之后反向傳播時(shí)會(huì)更新所有embedding,而判別器只會(huì)更新輸入的token embedding。最后作者只使用了embedding sharing。
-
Smaller Generators
從權(quán)重共享的實(shí)驗(yàn)中看到,生成器和判別器只需要共享embedding的權(quán)重就足矣了,那這樣的話是否可以縮小生成器的尺寸進(jìn)行訓(xùn)練效率提升呢?作者在保持原有hidden size的設(shè)置下減少了層數(shù),得到了下圖所示的關(guān)系圖:
可以看到,生成器的大小在判別器的1/4到1/2之間效果是最好的。作者認(rèn)為原因是過(guò)強(qiáng)的生成器會(huì)增大判別器的難度(判別器:小一點(diǎn)吧,我太難了)。
-
Training Algorithms
實(shí)際上除了MLM loss,作者也嘗試了另外兩種訓(xùn)練策略:
(1) Adversarial Contrastive Estimation:ELECTRA因?yàn)樯鲜鲆恍﹩?wèn)題無(wú)法使用GAN,但也可以以一種對(duì)抗學(xué)習(xí)的思想來(lái)訓(xùn)練。作者將生成器的目標(biāo)函數(shù)由最小化MLM loss換成了最大化判別器在被替換token上的RTD loss。但還有一個(gè)問(wèn)題,就是新的生成器loss無(wú)法用梯度下降更新生成器,于是作者用強(qiáng)化學(xué)習(xí)Policy Gradient的思想,將被替換token的交叉熵作為生成器的reward,然后進(jìn)行梯度下降。強(qiáng)化方法優(yōu)化下來(lái)生成器在MLM任務(wù)上可以達(dá)到54%的準(zhǔn)確率,而之前MLE優(yōu)化下可以達(dá)到65%。
(2) Two-stage training:即先訓(xùn)練生成器,然后freeze掉,用生成器的權(quán)重初始化判別器,再接著訓(xùn)練相同步數(shù)的判別器。
對(duì)比三種訓(xùn)練策略,得到下圖:
可見(jiàn)“隔離式”的訓(xùn)練策略效果還是最好的,而兩段式的訓(xùn)練雖然弱一些,作者猜測(cè)是生成器太強(qiáng)了導(dǎo)致判別任務(wù)難度增大,但最終效果也比BERT本身要強(qiáng),進(jìn)一步證明了判別式預(yù)訓(xùn)練的效果。
-
Small model? Big model?
模型的效果可以參考文首的圖片,ELECTRA-Small僅用14M參數(shù)量,以前13%的體積,就接近了BERT-Base的效果。ELECTRA-Base更是超越了BERT-Large。由于時(shí)間和精力問(wèn)題,作者們沒(méi)有把ELECTRA訓(xùn)練更久(應(yīng)該會(huì)有提升),也沒(méi)有使用各種榜單Trick,所以真正的GLUE test上表現(xiàn)一般。
后臺(tái)回復(fù)【electra】獲取論文PDF噢~~
?
總結(jié)
以上是生活随笔為你收集整理的ELECTRA模型精讲的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: All in Linux:一个算法工程师
- 下一篇: 面试必备!卖萌屋算法工程师思维导图—统计