近日,谷歌宣佈將 AI 語言模型 ELECTRA 作為 TensorFlow 之上的開源模型釋出。該方法用到了一種稱為替換令牌檢測(RTD)的新預訓練任務,使其能夠在從所有輸入位置學習的同時,訓練雙向模型。
並且,在同等計算資源的情況下,ELECTRA 的效能優於現有方法;而在引數量只有 1/30 的情況下,取得不遜於最先進 BERT 系列模型的效能。
文 | Google Blog
譯 | 楊鯉萍
1、語言模型現狀與瓶頸
近年來,語言預訓練模型的最新進展使得自然語言處理也取得了重大進展,其中不乏一些最先進的模型,例如:BERT,RoBERTa,XLNet,ALBERT 和 T5 等。
這些方法雖然在設計上有所不同,但在利用特定的 NLP 任務(例如:情感分析和問題解答等)進行微調時,有著相同思路,即:利用大量未標記的文字,來構建語言理解的通用模型。
因此,現有的預訓練方法通常分為兩類:語言模型(LM),例如:GPT。該類方法按照從左到右的順序處理輸入文字,然後在給定先前上下文的情況下,預測下一個單詞。
另一個則是掩碼語言模型(MLM),例如:BERT,RoBERTa 和 ALBERT。這類模型它們分別預測輸入中已被遮蔽的少量單詞內容。MLM 相比 LM 而言,具有雙向預測的優勢,因為它可以看到要預測的單詞左側和右側的文字。
但 MLM 模型預測也有缺點,這些模型的預測僅限於輸入標記的某個很小的子集(被掩蓋部分的 15%),從而減少了他們從每個句子中獲得資訊的量,增加了計算成本。
現有的預訓練方法及其缺點。箭頭指示哪些標記用於生成給定的輸出表示形式(矩形)。左:傳統語言模型(例如 GPT)僅使用當前單詞左側的上下文。右:掩碼語言模型(例如 BERT)從左到右都使用上下文,但是對於每個輸入僅預測一小部分單詞新型預訓練模型 ELECTRA。
2、新型預訓練模型 ELECTRA
正是為了克服以上兩類語言模型存在的缺點,谷歌提出了 ELECTRA(Efficiently Learning an Encoder that Classifies Token Replacements Accurately)語言模型。這是一種新型預訓練方法,其關鍵點在於將預訓練文字編碼器作為識別符號而非生成器,來處理現存語言模型的問題。
論文地址:https://openreview.net/pdf?id=r1xMH1BtvB
在相同的模型大小、資料、計算量的情況下,該方法的效能顯著優於 MLM 類的方法,例如 BERT 和 XLNet;而且,ELECTRA 小模型僅需要在 1 塊 GPU 訓練 4 天即可得到。
具體實驗資料顯示,這個小模型比 BERT 小模型在 GLUE 得分上 高 5 個點,甚至比更大的 GPT 模型(該模型使用 30 倍以上的計算能力)效果還要好。
而 ELECTRA 在使用少於 1/4 的計算量時,可以在 GLUE 自然語言理解基準上達到 RoBERTa 和 XLNet 的效能。如果使用更多的計算機來訓練大型 ELECTRA,該模型在 SQuAD 2.0 的問答資料集和語言理解任務的排行榜上,獲得了最先進的表現。(具體資料見第四小節)
3、核心思想——替換令牌檢測
ELECTRA 使用一種稱為替換令牌檢測(RTD)的新預訓練任務,該任務在從所有輸入位置(如:LM)學習的同時,訓練雙向模型(如:MLM)。
具體而言,ELECTRA 的目標是學習區分輸入的詞。它不使用掩碼,而是從一個建議分佈中取樣詞來替換輸入,這解決了掩碼帶來的預訓練和 fine-tune 不一致的問題。
然後模型再訓練一個判別器,來預測每個詞是原始詞還是替換詞。而判別器的一個優點則是:模型從輸入的所有詞中學習,而不是像 MLM 那樣,僅使用掩蓋的詞,因此計算更加有效。
正如很多開發者聯想到的對抗學習方法,ELECTRA 確實受到到生成對抗網路的啟發(GAN)。但不同的是,模型採用的是最大似然而非對抗學習。
例如下圖中,單詞「cooked」可以替換為「ate」。儘管這有些道理,但它並不適合整個上下文。預訓練任務需要模型(即鑑別器)來確定原始輸入中的哪些標記已被替換或保持相同。
正是由於該模型的二進位制分類任務適用於每個輸入單詞,而非僅有少量的掩碼單詞(在 BERT 樣式的模型中為 15%),因此,RTD 方法的效率比 MLM 高。這也解釋了為什麼 ELECTRA 只需更少的示例,就可以達到與其它語言模型相同效能的原因。
其中,替換令牌來自生成器的神經網路。生成器的目標是訓練掩碼語言模型,即給定輸入序列後,按照一定的比例(通常 15%)將輸入中的詞替換成掩碼;然後通過網路得到向量表示;之後再採用 softmax 層,來預測輸入序列中掩蓋位置的詞。
儘管生成器的結構類似於 GAN,但由於難以將該方法應用於文字任務,因此得到的訓練目標函式為掩蓋詞的最大似然。
之後,生成器和判別器共享相同的輸入詞嵌入。判別器的目標是判斷輸入序列每個位置的詞是否被生成器替換,如果與原始輸入序列對應位置的詞不相同,就判別為已替換。
4、具體研究結果對比
研究人員將 ELECTRA 與其他最新的 NLP 模型進行了比較,發現在給定相同的計算預算的情況下,它與以前的方法相比有了實質性的改進,其效能與 RoBERTa 和 XLNet 相當,而使用的計算量不到 1/4。
X 軸顯示用於訓練模型的計算量(以 FLOPs 為單位),y 軸顯示 dev GLUE 得分。與現有的預訓練 NLP 模型相比,ELECTRA 的學習效率要高得多。但值得注意的是,目前 GLUE 上的最佳模型(例如 T5(11B))不適合該圖,因為它們使用的計算量比其他模型多得多(比 RoBERTa 多 10 倍)。
為了進一步提高效率,研究人員嘗試了一個小型的 ELECTRA 模型,該模型可以在 4 天的時間內在單個 GPU 上進行良好的訓練。
儘管無法達到與需要訓練許多 TPU 的大型模型相同的精度,但 ELECTRA-small 的效能仍然很好,甚至比 GPT 還要好,而所需的計算量卻只有其三分之一。
之後,為了測試這一結果是否能大規模實施,研究人員使用了更多的計算量(大約與 RoBERTa 相同的數量,大約是 T5 的 10%)訓練了一個大型 ELECTRA 模型。
研究人員將大型 ELECTRA、RoBERTa、XLNet、BERT 和 ALBERT 模型在 SQuAD 2.0 問題回答資料集的表現做了測試,結果如下表所示;可以看到在 GLUE 排行榜上,ELECTRA 的表現優於其它所有模型。
但相比大型 T5-11b 模型,後者在 GLUE 上的得分仍然更高。但值得注意的是,ELECTRA 的大小是其三分之一,並使用 10%的計算進行訓練。
目前,用於預訓練 ELECTRA 並在下游任務上對其進行微調的程式碼已釋出,當前支援的任務包括:文字分類、問題解答和序列標記。
該程式碼支援在一個 GPU 上快速訓練小型 ELECTRA 模型。之後,谷歌還計劃釋出適用於 ELECTRA-Large,ELECTRA-Base 和 ELECTRA-Small 的預訓練程式碼。(ELECTRA 模型目前僅支援英語,後續將釋出更多語言版本)
原文地址:
https://ai.googleblog.com/2020/03/more-efficient-nlp-model-pre-training.html
GitHub 地址:
https://github.com/google-research/electra
https://www.toutiao.com/i6805105954686763531/