完勝 BERT,谷歌優(yōu)秀 NLP 預(yù)訓(xùn)練模型開(kāi)源
本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請(qǐng)至雷鋒網(wǎng)官網(wǎng)申請(qǐng)授權(quán)。
近日,谷歌宣布將 AI 語(yǔ)言模型 ELECTRA 作為 TensorFlow 之上的開(kāi)源模型發(fā)布。該方法用到了一種稱為替換令牌檢測(cè)(RTD)的新預(yù)訓(xùn)練任務(wù),使其能夠在從所有輸入位置學(xué)習(xí)的同時(shí),訓(xùn)練雙向模型。
并且,在同等計(jì)算資源的情況下,ELECTRA 的性能優(yōu)于現(xiàn)有方法;而在參數(shù)量只有 1/30 的情況下,取得不遜于最先進(jìn) BERT 系列模型的性能。谷歌發(fā)布了相關(guān)文章介紹這一開(kāi)源成果,雷鋒網(wǎng) AI 源創(chuàng)評(píng)論將其整理編譯如下。
語(yǔ)言模型現(xiàn)狀與瓶頸
近年來(lái),語(yǔ)言預(yù)訓(xùn)練模型的最新進(jìn)展使得自然語(yǔ)言處理也取得了重大進(jìn)展,其中不乏一些最先進(jìn)的模型,例如:BERT,RoBERTa,XLNet,ALBERT 和 T5 等。
這些方法雖然在設(shè)計(jì)上有所不同,但在利用特定的 NLP 任務(wù)(例如:情感分析和問(wèn)題解答等)進(jìn)行微調(diào)時(shí),有著相同思路,即:利用大量未標(biāo)記的文本,來(lái)構(gòu)建語(yǔ)言理解的通用模型。
因此,現(xiàn)有的預(yù)訓(xùn)練方法通常分為兩類:語(yǔ)言模型(LM),例如:GPT。該類方法按照從左到右的順序處理輸入文本,然后在給定先前上下文的情況下,預(yù)測(cè)下一個(gè)單詞。
另一個(gè)則是掩碼語(yǔ)言模型(MLM),例如:BERT,RoBERTa 和 ALBERT。這類模型它們分別預(yù)測(cè)輸入中已被屏蔽的少量單詞內(nèi)容。MLM 相比 LM 而言,具有雙向預(yù)測(cè)的優(yōu)勢(shì),因?yàn)樗梢钥吹揭A(yù)測(cè)的單詞左側(cè)和右側(cè)的文本。
但 MLM 模型預(yù)測(cè)也有缺點(diǎn),這些模型的預(yù)測(cè)僅限于輸入標(biāo)記的某個(gè)很小的子集(被掩蓋部分的 15%),從而減少了他們從每個(gè)句子中獲得信息的量,增加了計(jì)算成本。
谷歌最佳 NLP 預(yù)訓(xùn)練模型開(kāi)源">
現(xiàn)有的預(yù)訓(xùn)練方法及其缺點(diǎn)。箭頭指示哪些標(biāo)記用于生成給定的輸出表示形式(矩形)。左:傳統(tǒng)語(yǔ)言模型(例如 GPT)僅使用當(dāng)前單詞左側(cè)的上下文。右:掩碼語(yǔ)言模型(例如 BERT)從左到右都使用上下文,但是對(duì)于每個(gè)輸入僅預(yù)測(cè)一小部分單詞
新型預(yù)訓(xùn)練模型 ELECTRA
正是為了克服以上兩類語(yǔ)言模型存在的缺點(diǎn),谷歌提出了 ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)語(yǔ)言模型。這是一種新型預(yù)訓(xùn)練方法,其關(guān)鍵點(diǎn)在于將預(yù)訓(xùn)練文本編碼器作為標(biāo)識(shí)符而非生成器,來(lái)處理現(xiàn)存語(yǔ)言模型的問(wèn)題。
谷歌最佳 NLP 預(yù)訓(xùn)練模型開(kāi)源">
論文地址:https://openreview.net/pdf?id=r1xMH1BtvB
在相同的模型大小、數(shù)據(jù)、計(jì)算量的情況下,該方法的性能顯著優(yōu)于 MLM 類的方法,例如 BERT 和 XLNet;而且,ELECTRA 小模型僅需要在 1 塊 GPU 訓(xùn)練 4 天即可得到。
具體實(shí)驗(yàn)數(shù)據(jù)顯示,這個(gè)小模型比 BERT 小模型在 GLUE 得分上 高 5 個(gè)點(diǎn),甚至比更大的 GPT 模型(該模型使用 30 倍以上的計(jì)算能力)效果還要好。
而 ELECTRA 在使用少于 1/4 的計(jì)算量時(shí),可以在 GLUE 自然語(yǔ)言理解基準(zhǔn)上達(dá)到 RoBERTa 和 XLNet 的性能。如果使用更多的計(jì)算機(jī)來(lái)訓(xùn)練大型 ELECTRA,該模型在 SQuAD 2.0 的問(wèn)答數(shù)據(jù)集和語(yǔ)言理解任務(wù)的排行榜上,獲得了最先進(jìn)的表現(xiàn)。(具體數(shù)據(jù)見(jiàn)第四小節(jié))
核心思想——替換令牌檢測(cè)
ELECTRA 使用一種稱為替換令牌檢測(cè)(RTD)的新預(yù)訓(xùn)練任務(wù),該任務(wù)在從所有輸入位置(如:LM)學(xué)習(xí)的同時(shí),訓(xùn)練雙向模型(如:MLM)。
具體而言,ELECTRA 的目標(biāo)是學(xué)習(xí)區(qū)分輸入的詞。它不使用掩碼,而是從一個(gè)建議分布中采樣詞來(lái)替換輸入,這解決了掩碼帶來(lái)的預(yù)訓(xùn)練和 fine-tune 不一致的問(wèn)題。
然后模型再訓(xùn)練一個(gè)判別器,來(lái)預(yù)測(cè)每個(gè)詞是原始詞還是替換詞。而判別器的一個(gè)優(yōu)點(diǎn)則是:模型從輸入的所有詞中學(xué)習(xí),而不是像 MLM 那樣,僅使用掩蓋的詞,因此計(jì)算更加有效。
正如很多開(kāi)發(fā)者聯(lián)想到的對(duì)抗學(xué)習(xí)方法,ELECTRA 確實(shí)受到到生成對(duì)抗網(wǎng)絡(luò)的啟發(fā)(GAN)。但不同的是,模型采用的是最大似然而非對(duì)抗學(xué)習(xí)。
例如下圖中,單詞「cooked」可以替換為「ate」。盡管這有些道理,但它并不適合整個(gè)上下文。預(yù)訓(xùn)練任務(wù)需要模型(即鑒別器)來(lái)確定原始輸入中的哪些標(biāo)記已被替換或保持相同。
正是由于該模型的二進(jìn)制分類任務(wù)適用于每個(gè)輸入單詞,而非僅有少量的掩碼單詞(在 BERT 樣式的模型中為 15%),因此,RTD 方法的效率比 MLM 高。這也解釋了為什么 ELECTRA 只需更少的示例,就可以達(dá)到與其它語(yǔ)言模型相同性能的原因。
谷歌最佳 NLP 預(yù)訓(xùn)練模型開(kāi)源">
從所有輸入位置學(xué)習(xí)時(shí),替換的令牌檢測(cè)可進(jìn)行雙向訓(xùn)練
其中,替換令牌來(lái)自生成器的神經(jīng)網(wǎng)絡(luò)。生成器的目標(biāo)是訓(xùn)練掩碼語(yǔ)言模型,即給定輸入序列后,按照一定的比例(通常 15%)將輸入中的詞替換成掩碼;然后通過(guò)網(wǎng)絡(luò)得到向量表示;之后再采用 softmax 層,來(lái)預(yù)測(cè)輸入序列中掩蓋位置的詞。
盡管生成器的結(jié)構(gòu)類似于 GAN,但由于難以將該方法應(yīng)用于文本任務(wù),因此得到的訓(xùn)練目標(biāo)函數(shù)為掩蓋詞的最大似然。
之后,生成器和判別器共享相同的輸入詞嵌入。判別器的目標(biāo)是判斷輸入序列每個(gè)位置的詞是否被生成器替換,如果與原始輸入序列對(duì)應(yīng)位置的詞不相同,就判別為已替換。
谷歌最佳 NLP 預(yù)訓(xùn)練模型開(kāi)源">
生成器與判別器神經(jīng)網(wǎng)絡(luò)模型
具體研究結(jié)果對(duì)比
研究人員將 ELECTRA 與其他最新的 NLP 模型進(jìn)行了比較,發(fā)現(xiàn)在給定相同的計(jì)算預(yù)算的情況下,它與以前的方法相比有了實(shí)質(zhì)性的改進(jìn),其性能與 RoBERTa 和 XLNet 相當(dāng),而使用的計(jì)算量不到 1/4。
谷歌最佳 NLP 預(yù)訓(xùn)練模型開(kāi)源">
x 軸顯示用于訓(xùn)練模型的計(jì)算量(以 FLOPs 為單位),y 軸顯示 dev GLUE 得分。與現(xiàn)有的預(yù)訓(xùn)練 NLP 模型相比,ELECTRA 的學(xué)習(xí)效率要高得多。但值得注意的是,目前 GLUE 上的最佳模型(例如 T5(11B))不適合該圖,因?yàn)樗鼈兪褂玫挠?jì)算量比其他模型多得多(比 RoBERTa 多 10 倍)
為了進(jìn)一步提高效率,研究人員嘗試了一個(gè)小型的 ELECTRA 模型,該模型可以在 4 天的時(shí)間內(nèi)在單個(gè) GPU 上進(jìn)行良好的訓(xùn)練。
盡管無(wú)法達(dá)到與需要訓(xùn)練許多 TPU 的大型模型相同的精度,但 ELECTRA-small 的性能仍然很好,甚至比 GPT 還要好,而所需的計(jì)算量卻只有其三分之一。
之后,為了測(cè)試這一結(jié)果是否能大規(guī)模實(shí)施,研究人員使用了更多的計(jì)算量(大約與 RoBERTa 相同的數(shù)量,大約是 T5 的 10%)訓(xùn)練了一個(gè)大型 ELECTRA 模型。
研究人員將大型 ELECTRA、RoBERTa、XLNet、BERT 和 ALBERT 模型在 SQuAD 2.0 問(wèn)題回答數(shù)據(jù)集的表現(xiàn)做了測(cè)試,結(jié)果如下表所示;可以看到在 GLUE 排行榜上,ELECTRA 的表現(xiàn)優(yōu)于其它所有模型。
但相比大型 T5-11b 模型,后者在 GLUE 上的得分仍然更高。但值得注意的是,ELECTRA 的大小是其三分之一,并使用 10%的計(jì)算進(jìn)行訓(xùn)練。
谷歌最佳 NLP 預(yù)訓(xùn)練模型開(kāi)源">
SQUAD 2.0 數(shù)據(jù)集在 ELECTRA-Large 和其他最新模型中得分
目前,用于預(yù)訓(xùn)練 ELECTRA 并在下游任務(wù)上對(duì)其進(jìn)行微調(diào)的代碼已發(fā)布,當(dāng)前支持的任務(wù)包括:文本分類、問(wèn)題解答和序列標(biāo)記。
該代碼支持在一個(gè) GPU 上快速訓(xùn)練小型 ELECTRA 模型。之后,谷歌還計(jì)劃發(fā)布適用于 ELECTRA-Large,ELECTRA-Base 和 ELECTRA-Small 的預(yù)訓(xùn)練代碼。(ELECTRA 模型目前僅支持英語(yǔ),后續(xù)將發(fā)布更多語(yǔ)言版本)
原文地址:
https://ai.googleblog.com/2020/03/more-efficient-nlp-model-pre-training.html
GitHub 地址:
https://github.com/google-research/electra