【NLP】ALBERT:更轻更快的NLP预训练模型
目前在NLP領域,出彩的預訓練模型的新工作,幾乎都是基于BERT的改進,前面我們就介紹了XLNET。今天我來介紹一個更新的工作,相比于BERT,它更輕量,效果也要好。
作者&編輯 | 小Dream哥
1 預訓練模型進展
2018年底,BERT橫空出世之后,預訓練模型開始走進NLP舞臺的中央,吸引了業內所有人的關注。之后,各種預訓練模型開始不斷的刷新NLP領域的SOTA榜單,比較有影響力的包括,GPT-2.0,XLNET,RoBERTa等。
大體來說,上述預訓練模型確實都基于BERT了做了一些改進,在模型結構、訓練模式等方面都有一些創新。但是大部分的預訓練模型也有一個共通的“特點”,即模型相對“笨重”,預訓練成本高。
ALBERT的作者就是基于這樣的背景,提出ALBERT這個模型的。其試圖解決大部分預訓練模型訓練成本高,參數量巨大的問題。
2? ALBERT的改進點
ALBERT為了減少模型參數主要有以下幾點:
1.詞嵌入參數因式分解;
2.隱藏層間參數共享
此外,為了提升模型性能,ALBERT提出了一種新的訓練任務:
句子間順序預測
下面我們詳細介紹以下這幾個改進點:
1)詞嵌入參數因式分解
ALBERT的提出者認為,詞向量只是記憶了相對少量的詞語的信息,更多的語義和句法等信息時由隱藏層記憶的。因此,他們認為,詞嵌入的維度可以不必與隱藏層的維度一致,可以通過降低詞嵌入的維度的方式來減少參數量。假設詞表的大小為V,詞嵌入的維度為E,隱藏層的維度為H。
BERT的情況是,E=H;ALBERT的方案是,將E降低,在詞嵌入和隱藏層之間加入一個project層,連接兩個層。我們來分析一下,兩種情況嵌入層的參數量。
1.BERT:ParameterNumBERT = E*V = H*V
通常情況下V很大,BERT中文模型V約為30000,BERT_base中H = 1024:
ParameterNumBERT=30000*1024?
2.ALBERT:ParameterNumAL = (V +H)*E
ALBERT中,E=128;H=1024:
ParameterNumAL=30000*128+128*1024
ParameterNumAL/ParameterNumAL =7.7
從上面的分析可以看出,通過嵌入層的參數因式分解,成功將嵌入層的參數縮小為原來的1/8。
2)隱藏層的參數共享
如上圖所示,是BERT的結構示意圖,BERT_base中,包含12層中間的隱藏層;BERT_large中,包含24層中間的隱藏層;各層之間的參數均不共享。
參數共享可以顯著減少參數數量,參數共享可以分為全連接層、注意力層的參數共享;在ALBERT中,全連接層、注意力層的參數均是共享的,也就是ALBERT依然有多層的深度連接,但是各層之間的參數是一樣的。很明顯的,通過這種方式,ALBERT中隱藏層的參數量變為原來的1/12或者1/24。
3)句子間順序預測
在BERT中,句子間關系的任務是next sentence predict(NSP),即向模型輸入兩個句子,預測第二個句子是不是第一個句子的下一句。
在ALBERT中,句子間關系的任務是sentence-order prediction(SOP),即句子間順序預測,也就是給模型兩個句子,讓模型去預測兩個句子的前后順序。文中介紹,SOP是比NSP要更為復雜的任務,相比于NSP,通過SOP任務模型能夠學到更多的句子間的語義關系。
3? ALBERT的效果
如上圖所示,展示了ALBERT與BERT不同大小模型的參數量及其在各個數據集的效果。
從上面的結果,可以得到一個基本的結論,相比于BERT,ALBERT能夠在不損失模型性能的情況下,顯著的減少參數量。ALBERT_xxlarge模型有233M的參數量,其在各個數據集上的表現卻能夠全面優于有1270M參數的BERT_xlarge模型。
此外,作者還分別分析了嵌入層參數因式分解、隱藏層參數共享以及SOP任務對ALBERT模型性能的影響。作者的結論是,嵌入層參數因式分解、隱藏層參數共享基本不會對模型的性能造成損失,SOP任務能夠提升模型的性能。
值得注意的一點是,作者還發現ALBERT在訓練了100w步之后,模型依舊沒有過擬合,于是作者嘗試去掉dropout,卻意外的發現下游任務的效果竟然有了一定的提升。這是NLP領域第一次發現dropout對大規模的預訓練模型會造成負面影響。
此外,ALBERT還有一個albert_tiny模型,其隱藏層僅有4層,模型參數量約為1.8M,非常的輕便。相對于BERT,其訓練和推理預測速度提升約10倍,但精度基本保留,語義相似度數據集LCQMC測試集上達到85.4%,相比bert_base僅下降1.5個點。
總結
總的來說,ALBERT利用詞嵌入參數因式分解和隱藏層間參數共享兩種手段,在顯著減少了模型的參數量的同時,基本沒有損失模型的性能;
隱藏層間參數共享能夠極大的減少模型參數,對模型訓練速度的提升也有一定的幫助。但是對推理預測速度卻不會有任何幫助,因為前向傳播時的計算量一點也沒有減少。基于此,ALBERT的研究者們,提供了albert_tiny模型,提高了模型的推理速度,代價卻很低(準確率降低很少)。
通過引進SOP的訓練任務,模型的準確度也有一定的提升。
我們會在知識星球討論ALBERT實現相關的代碼及問題,感興趣的同學可以掃描下面的二維碼了解。
讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。
下期預告:知識圖譜概述
知識星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人??紤]到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。
(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。
(3) NLP預訓練模型?;诤A繑祿?#xff0c;進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?
轉載文章請后臺聯系
侵權必究
往期精選
總結
以上是生活随笔為你收集整理的【NLP】ALBERT:更轻更快的NLP预训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【完结】12篇GAN的优化文章大盘点,浓
- 下一篇: 【AutoML】损失函数也可以进行自动搜