【NLP】ELECTRA中文預訓練模型開源,僅1/10參數量,性能依舊媲美BERT

  • 2020 年 3 月 30 日
  • 筆記

文 | 賈偉

編 | 蔣寶尚

在去年11月份,NLP大神Manning聯合Google做的ELECTRA一經發布,迅速火爆整個NLP圈,其中ELECTRA-small模型參數量僅為 BERT-base模型的1/10,性能卻依然能與BERT、RoBERTa等模型相媲美。

在前不久,Google終於開源了ELECTRA,並發布了預訓練模型,這對於缺大算力的高校和企業,簡直是一大福音。

然而,其發布的預訓練模型只是針對英語,卻非如BERT那樣是多語言版本。對於其他語言(例如中文)的研究者來說,則非常遺憾。

針對這一問題,今天哈工大訊飛聯合實驗室(HFL)基於ELECTRA開源程式碼,發布了中文版的 ELECTRA 預訓練模型。

1

ELECTRA

ELECTRA預訓練模型的作者是斯坦福SAIL實驗室Manning組和Google大腦研究團隊,初次出現是在2019年北京智源大會上面。作為一種新的文本預訓練模型,ELECTRA 新穎的設計思路、更少的計算資源消耗和更少的參數,迅速引起了大批關注者。特別是在去年 11 月 ICLR 2020 論文接收出爐後,曾引起NLP圈內不小的轟動。

論文鏈接:

https://openreview.net/forum?id=r1xMH1BtvB

論文中這張圖能夠說明一切問題:

圖註:右圖是左圖放大的結果。

如上圖所示,ELECTRA模型能夠在訓練步長更少的前提下得到了比其他預訓練模型更好的效果。同樣,在模型大小、數據和計算相同的情況下,ELECTRA的性能明顯優於基於MLM的方法,如BERT和XLNet。

所以,ELECTRA 與現有的生成式的語言表示學習方法相比,前者具有更高的計算效率和更少的參數(ELECTRA-small的參數量僅為BERT-base的 1/10)。

ELECTRA能夠取得如此優異結果,基於其新穎的預訓練框架,其中包含兩個部分:Generator和Discriminator。

  • Generator: 一個小的MLM,在[MASK]的位置預測原來的詞。Generator將用來把輸入文本做部分詞的替換。
  • Discriminator: 判斷輸入句子中的每個詞是否被替換,即使用Replaced Token Detection (RTD)預訓練任務,取代了BERT原始的Masked Language Model (MLM)。需要注意的是這裡並沒有使用Next Sentence Prediction (NSP)任務。

在預訓練階段結束之後,只使用Discriminator作為下游任務精調的基模型。

換句話說,作者們把CV領域的GAN運用到了自然語言處理。

值得注意的是,儘管與GAN的訓練目標相似,但仍存在一些關鍵差異。首先,如果生成器碰巧生成了正確的token,則該token被視為「真實」而不是「偽造」;所以模型能夠適度改善下游任務的結果。更重要的是,生成器使用最大似然來訓練,而不是通過對抗性訓練來欺騙判別器。

2

中文ELECTRA預訓練模型

目前已有的開源 ELECTRA 預訓練模型只是英文的預訓練模型。但世界上還有許多其他語言(例如中文)研究的學者,他們需要與其相應的語言預訓練模型。

然而,Google官方除了BERT、RoBERTa等預訓練模型有多語言版本外,其他例如XLNet、T5都沒有相應的多語言版本,只有英文。其中原因在於相比於只在英語上做預訓練,多語言的預訓練需要收集相應語料,需要調配不同語言語料的比例等,比較麻煩。因此大概率上,ELECTRA 也不會出中文版或多語言版的預訓練模型。

而另一方面,作為中文社區,我們國人自己對如何做中文的預訓練則更為了解,我們自己來做相應的預訓練可能會比Google官方來做會更好。

由哈工大訊飛聯合實驗室資深級研究員、研究主管崔一鳴所帶領的團隊之前曾做過系列類似的開源工作,即基於開源預訓練程式碼,加上中文數據集來訓練中文版預訓練模型。例如中文版的系列BERT模型、中文版XLNet等,在GitHub上開源後反響不錯,在許多中文評測任務中也曾有不少隊伍使用他們開源的預訓練模型進行改進。

開源地址:https://github.com/ymcui/Chinese-BERT-wwm

開源地址:https://github.com/ymcui/Chinese-XLNet

在Google開源ELECTRA之後,崔一鳴等人再次推出中文版 ELECTRA。

訓練數據集,仍和之前訓練BERT系列模型所用數據是一致的,主要來自大規模中文維基及通用文本(中文網頁爬取和清洗),總token達到5.4B。詞表方面沿用了Google原版BERT的WordPiece詞表,包含21128個token。

在本次的開源中,崔一鳴等人只發布了ELECTRA-base 和ELECTRA-small 兩個模型。據崔一鳴表示,large版本由於參數較多,超參設置比較困難,因此模型發布會相應延後。

已發布的兩個版本各自訓練了大約7天時間,由於small版本的參數僅為base版本的1/10,在訓練中,崔一鳴等人將其batch調為1024(是base的4倍)。具體細節和超參如下(未提及的參數保持默認):

  • ELECTRA-base:12層,隱層768,12個注意力頭,學習率2e-4,batch256,最大長度512,訓練1M步
  • ELECTRA-small:12層,隱層256,4個注意力頭,學習率5e-4,batch1024,最大長度512,訓練1M步

ELECTRA-small 僅 46 M。

在效果上,崔一鳴等人將之與他們之前做的系列中文版預訓練模型進行了效果對比。

對比模型包括:ELECTRA-small/base、BERT-base、BERT-wwm、BERT-wwm-ext、RoBERTa-wwm-ext、RBT3。

對比任務有六個:

  • CMRC 2018 (Cui et al., 2019):篇章片段抽取型閱讀理解(簡體中文)
  • DRCD (Shao et al., 2018):篇章片段抽取型閱讀理解(繁體中文)
  • XNLI (Conneau et al., 2018):自然語言推斷(三分類)
  • ChnSentiCorp:情感分析(二分類)
  • LCQMC (Liu et al., 2018):句對匹配(二分類)
  • BQ Corpus (Chen et al., 2018):句對匹配(二分類)

在下游任務精調中,ELECTRA-small/base模型的學習率設為原論文默認的3e-4和1e-4。值得注意的是,這裡的精調並沒有針對任何任務進行參數精調。為了保證結果的可靠性,對於同一模型,他們使用不同隨機種子訓練10遍,彙報模型性能的最大值和平均值(括弧內為平均值)。

效果如下:

簡體中文閱讀理解:CMRC 2018(評價指標為:EM / F1)

繁體中文閱讀理解:DRCD(評價指標為:EM / F1)

自然語言推斷:XNLI(評價指標為:Accuracy)

情感分析:ChnSentiCorp(評價指標為:Accuracy)

句對分類:LCQMC(評價指標為:Accuracy)

句對分類:BQ Corpus( 評價指標為:Accuracy)

從以上的結果可以看出,對於ELECTRA-small模型,其效果在多數任務上顯著超過3層RoBERTa效果(RBT3),甚至是接近BERT-base的效果,而在參數量上只有BERT-base模型的1/10。對於ELECTRA-base模型來說,在多數任務上超過了BERT-base甚至是RoBERTa-wwm-ext的效果。

其具體使用,可以查看Github項目:

https://github.com/ymcui/Chinese-ELECTRA