完勝BERT!GoogleNLP預訓練利器:小模型也有高精度,單個GPU就能訓練 | 程式碼開源
- 2020 年 3 月 18 日
- 筆記
這款NLP預訓練模型,你值得擁有。
它叫ELECTRA,來自GoogleAI,不僅擁有BERT的優勢,效率還比它高。

ELECTRA是一種新預訓練方法,它能夠高效地學習如何將收集來的句子進行準確分詞,也就是我們通常說的token-replacement。
有多高效?
只需要RoBERTa和XLNet四分之一的計算量,就能在GLUE上達到它們的性能。並且在SQuAD上取得了性能新突破。
這就意味著「小規模,也有大作用」,在單個GPU上訓練只需要4天的時間,精度還要比OpenAI的GPT模型要高。
ELECTRA已經作為TensorFlow的開源模型發布,包含了許多易於使用的預訓練語言表示模型。
讓預訓練變得更快
現存的預訓練模型主要分為兩大類:語言模型 (Language Model,LM)和掩碼語言模型(Masked Language Model,MLM)。
例如GPT就是一種LM,它從左到右處理輸入文本,根據給定的上下文預測下一個單詞。
而像BERT、RoBERTa和ALBERT屬於MLM,它們可以預測輸入中被掩蓋的少量單詞。MLM具有雙向的優勢,它們可以「看到」要預測的token兩側的文本。
但MLM也有它的缺點:與預測每個輸入token不同,這些模型只預測了一個很小的子集(被掩蓋的15%),從而減少了從每個句子中獲得的資訊量。

而ELECTRA使用的是一種新的預訓練任務,叫做replaced token detection (RTD)。
它像MLM一樣訓練一個雙向模型,也像LM一樣學習所有輸入位置。
受生成對抗網路(GAN)的啟發,ELECTRA通過訓練模型來區分「真實」和「虛假」輸入數據。
BERT破壞輸入的方法是,使用「[MASK]」替換token,而這個方法通過使用不正確的(但有些可信的)偽token替換一些輸入token。
例如下圖中的「cooked」可以替換為「ate」。

首先使用一個生成器預測句中被mask掉的token,接下來使用預測的token替代句中的[MASK]標記,然後使用一個判別器區分句中的每個token是原始的還是替換後的。

在預訓練後,將判別器用於下游任務。
完勝BERT,SQuAD 2.0表現最佳
將ELECTRA與其他最先進的NLP模型進行比較可以發現:
在相同的計算預算下,它比以前的方法有了很大的改進,在使用不到25%的計算量的情況下,性能與RoBERTa和XLNet相當。

為了進一步提高效率,研究人員還嘗試了一個小型的ELECTRA模型,它可以4天內在單個GPU上進行訓練。
雖然沒有達到需要許多TPU來訓練的大型模型的精度,但ELECTRA仍然表現得突出,甚至超過了GPT(只需要1/30的計算量)。
最後,為了看看是否能夠大規模實施,研究人員使用了更多的計算量(大約與RoBERTa相同的數量,約T5的10%),來訓練一個大型ELECTRA。
結果表明,在SQuAD 2.0測試集上效果達到了最佳。

不僅如此,在GLUE上也超過了超過了RoBERTa、XLNet和ALBERT。
程式碼已開源
其實,這項研究早在去年9月份的時候便已發表。但令人激動的是,就在近幾日,程式碼終於開源了!

主要是ELECTRA進行預訓練和對下游任務進行微調的程式碼。目前支援的任務包括文本分類、問題回答和序列標記。
開源程式碼支援在一個GPU上快速訓練一個小型的ELECTRA模型。
ELECTRA模型目前只適用於英語,但研究人員也表示,希望將來能發布多種語言的預訓練模型。
— 完 —