“哪吒”出世!華爲開源中文版BERT模型

 自Google於2018年發佈預訓練語言模型BERT ,並在11項自然語言處理(NLP)任務上取得最好成績,預訓練語言模型開始得到學術界和工業界的極大關注,已經成爲自然語言處理的新範式。各個公司和高校的研究團隊陸續推出了新的預訓練語言模型,並不斷刷新NLP任務上的記錄,如CMU和Google推出的XLnet ,Facebook AI推出的RoBERTa ,百度推出的ERNIE 等。

  華爲諾亞方舟實驗室語音語義團隊與海思、雲BU等團隊合作,共同研究大規模預訓練模型的訓練技術,發佈了自己的中文預訓練語言模型NEZHA(NEural ContextualiZed Representation for CHinese LAnguage Understanding,中文:哪吒)。

  當前版本的NEZHA基於BERT模型,並進行了多處優化,能夠在一系列中文自然語言理解任務達到先進水平。

  NEZHA的技術報告發布在:https://arxiv.org/abs/1909.00204,

  模型和代碼開源在:https://github.com/huawei-noah/Pretrained-Language-Model 。

  NEZHA預訓練語言模型

  NEZHA是基於預訓練語言模型BERT的改進模型,BERT通過使用大量無監督文本進行預訓練,其包含兩個預訓練任務:Masked Language Modeling(MLM)和Next Sentence Prediction (NSP),分別預測句子裏被Mask的字(在構造訓練數據時,句子裏的部分字被Mask)和判斷訓練句對裏面是不是真實的上下句。

  在具體的一個下游自然語言理解任務上,BERT經過在該任務上的微調就能夠將預訓練學到的語義信息成功遷移到下游任務上。諾亞方舟實驗室的中文預訓練語言模型NEZHA(哪吒)基於BERT在模型,預訓練任務和訓練算法三個維度進行了改進。

  模型改進:BERT的網絡架構是一個多層的Transformer網絡,由於Transformer並沒有直接考慮輸入的token的位置信息,原始的Transformer模型和BERT分別採用了函數式和參數式的絕對位置編碼方式,即每一個位置上的輸入的token會疊加一個與位置信息相關的一個embedding(這個embedding稱爲絕對位置編碼:absolute position embedding,APE),前者的位置編碼是一個與位置相關的函數,後者則是模型參數的一部分,在預訓練過程中學到的。此後,又有工作提出了相對位置編碼方式,即在每一層計算隱狀態的相互依賴的時候考慮他們之間的相對位置關係,這個相對位置信息表示爲一個相對位置編碼(relative position embedding,RPE),已有工作均在相對位置編碼中加入了可學習的參數。本工作在BERT模型中使用了完全函數式的相對位置編碼(相對位置編碼沒有任何需要學習的參數),實驗結果表明該位置編碼方式使得模型在各個下游任務上的效果均得到明顯提升。

  預訓練任務:本工作引入了全詞Mask技術,即不同於原始的BERT模型Mask單箇中文字,該技術在MLM預訓練任務中Mask整個詞而不是單個字(如下圖全詞Mask方法Mask了一整個詞“華爲”),進而提升了任務難度使得BERT學到更多語義信息。

  此外,借鑑SpanBERT ,NEZHA模型還引入了Span預測任務,該任務Mask一個連續的Span(例如下圖中“機”,“很”,“不”三個字),利用Span前後的兩個字的最上層表示(下圖中的x3和x7)以及待預測字的位置信息來預測該字,如下圖中,待預測字爲“不”,Span預測任務會使用x3,x7和“不“”這個字的位置信息(就是x3和x6還有x6和x7之間的相對位置編碼)來預測該字,“機”和“很”的預測也是同樣的方法。該方法使得Span前後的字的表示會包含Span中字的語義信息,由於在訓練過程中,一個句子會被隨機Mask很多次,所以句子中每個字都有機會成爲Span的前後字,進而使得各個字學到的表示都會包含周圍Span的信息,Span預測任務能夠有效提高模型在下游的Span抽取任務(此任務的目標是獲取一段文字中目標片段的開始和結束位置)的效果。

  訓練算法:在訓練過程中,我們採用混合精度訓練(Mixed Precision Training)方式,在傳統的深度學習訓練過程中,所有的變量包括weight,activation和gradient都是用FP32(單精度浮點數)來表示。而在混合精度訓練過程中,每一個step會爲模型的所有weight維護一個FP32的copy,稱爲Master  Weights,在做前向和後向傳播過程中,Master Weights會轉換成FP16(半精度浮點數)格式,權重,激活函數和梯度都是用FP16進行表示,最後梯度會轉換成FP32格式去更新Master Weights。優化器方面我們使用了LAMB優化器,通常在深度神經網絡訓練的Batch Size很大的情況下(超過一定閾值)會給模型的泛化能力帶來負面影響,而LAMB優化器通過一個自適應式的方式爲每個參數調整learning rate,能夠在Batch Size很大的情況下不損失模型的效果,使得模型訓練能夠採用很大的Batch Size,進而極大提高訓練速度。在訓練BERT的研究中,使用LAMB優化器在不損失模型效果的前提下,Batch Size達到了超過30k,使得BERT的訓練時間從3天降到了76分鐘。

  實驗結果

  NEZHA模型的實驗中採用了5箇中文自然語言理解任務,即CMRC(中文閱讀理解),XNLI(自然語言推斷),LCQMC(句義匹配),PD-NER (命名實體識別任務),ChnSenti(情感分類)。我們在中文維基百科,中文新聞,百度百科數據上訓練NEZHA模型,並且和谷歌發佈的中文BERT,以及哈工大和科大訊飛(002230,股吧)聯合發佈的BERT-WWM,還有百度發佈的ERNIE-Baidu進行了比較。從下表可以看出,NEZHA在XNLI,LCQMC,PeoplesDaily NER,ChnSenti任務上達到了先進水平(SOTA)。表中NEZHA,NEZHA-WWM和NEZHA-Span分別代表由原始的BERT預訓練任務訓練得到的,加入全詞Mask訓練得到的以及加入Span預測任務訓練得到的NEZHA模型(三者均使用了全函數式相對位置編碼)。

  本工作還對NEZHA模型進行了剝離式研究(Ablation Study),着重研究了以下幾個訓練因素對模型效果的影響:

  1.    位置編碼:我們比較了NEZHA模型中使用的函數式相對位置編碼相比於已有工作中使用的參數式絕對位置編碼和參數式相對位置編碼的效果

  2.    Masking策略:我們研究了全詞Mask(WWM)的效果

  3.    Span預測任務:我們研究了Span預測任務針對閱讀理解任務(CMRC)的效果

  4.    訓練序列的長度:用更長的序列訓練是否能夠帶來效果提升

  5.    訓練語料的大小:用更大的語料進行訓練是否能夠帶來提升

  下表展示了剝離式研究的結果,從下表可以看出以上四個技術(即函數式相對位置編碼,全詞Mask,用更長的序列,更多語料進行訓練)均能夠提升模型的整體效果。尤其是函數式相對位置編碼,相比於其他兩種位置編碼給模型效果帶來了顯著提升。Span預測任務顯著提升了模型在閱讀理解任務(CMRC)上的效果。

  結論與展望

  本文介紹了華爲諾亞方舟實驗室訓練的中文預訓練語言模型NEZHA,並闡述了其中預訓練所用到的技術,包括:函數式相對位置編碼,混合精度訓練等,實驗結果表明NEZHA模型在一系列中文自然語言理解任務上達到了先進水平。在今後的研究中,我們會探索NEZHA預訓練的改進方案,並且探索基於NEZHA的自然語言生成的任務以及多語言模型的研究與實踐。

  關於模型名稱(哪吒)的寓意:預訓練語言模型歷來有使用卡通人物名稱命名的傳統,如:Google發佈的BERT模型,百度發佈的ERNIE模型等,華爲諾亞方舟實驗室採用“哪吒”,一箇中國傳統神話人物,也是最近很熱門的一個動畫片主角,同時也表示我們的模型像哪吒那樣三頭六臂,威力無比,大力出奇跡,可以處理很多不同的自然語言任務。

  本文經授權轉載自諾亞實驗室

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章