基於的BERT的一些改進模型及思路
BERT的成功主要在於幾大因素:超大模型+超大語料;利用Transformer;新的Loss即MLM(Masked Language Model)+NSP(Next Sentence Prediction)。其後有很多的研究在BERT的基礎上進行了各種修正和改良,甚至對原Loss(比如NSP)提出了不同的看法和嘗試。這裏做一個簡單的總結。主要涉及到的論文:RoBERTa,
ALBERT,ELECTRA。
被遺棄的NSP
BERT的loss由兩部分組成(MLM+NSP)。MLM在各種研究中得到了越來越多的認可,相信LM會讓位給MLM或者新的形態的LM(比如XLNet提出的PLM)。但是NSP自問世以來一直受到各種詬病和質疑。
NSP(Next Sentence Prediction)給定一個句子對,判斷在原文中第二個句子是否緊接第一個句子。正例來自於原文中相鄰的句子;負例來自於不同文章的句子。RoBERTa,ALBERT,XLNet都做過實驗表明NSP沒有必要。它們都摒棄了NSP而取得了更好的效果,ALBERT提出了更好的替代品SOP(Sentence Order Prediction)並從理論上解釋了SOP之餘NSP的優越性。
ALBERT的作者認爲,NSP作爲一項任務,和MLM相比,沒有什麼難度。它把主題預測和一致性預測混淆在了一起,而主題預測比一致性預測要容易。具體而言,由於正例來自於同樣一篇文章,而負例來自於不同的文章,很可能判別正負例僅僅需要判別兩個句子的主題是否一致,而這些信息已經在MLM中學習過了。
作爲NSP的替代,SOP顯然更有挑戰性。它使用同一篇文章的相鄰的兩個句子作爲正例,把句子的位置互換作爲負例。任務是判斷句序是否正確。而這僅屬於一致性預測,大大提高了預測的難度。實驗也表明SOP能較好的解決NSP任務,而NSP對SOP任務沒有任何助益。在下游的多句子編碼類任務中,SOP的效果得到了很好的體現。
具體實驗如圖:
NSP在解決SOP問題時精度僅爲52%,而SOP在NSP任務上的精度是78.9%
SOP在幾乎所有的下游任務中(除了SST-2)都相比NSP有提升。我個人的看法是NSP很快會被無情拋棄,僅使用MLM或者使用MLM加上一個更強的句子對任務會成爲預訓練的主流。
Underfitted的BERT
BERT其實並沒有被overfit,後來的工作比如XLNet就嘗試用了10倍於BERT的預訓練數據。
既然如此,數據大小,訓練方法,參數化方法都可以是針對underfit的改革的方向。
數據和批大小的作用
RoBERTa的作者認爲BERT忽視了預訓練數據大小及預訓練時長的影響。實驗表明更大的數據會帶來更好的精度提升。
表中RoBERTa用到了10倍於BERT的預訓練數據和32倍的批大小。在精度帶來提高的同時,也觀察到模型最終仍然未被overfitting。在"+pretrain evern longer"一欄中精度仍在上升。
Drop掉dropout
ALBERT不僅觀察到了更多數據的好處,還發現去掉dropout也有助於下游任務精度提升。這算是首個發現dropout對Transformer-based模型有害的工作。
減少參數的技術
減參,即把模型變小可以提高訓練速度。ALBERT在不影響精度的前提下大幅度減少了參數(ALBERT的large版本參數僅爲BERT large的1/18)
嵌入層的參數化方法-- 矩陣分解
ALBERT的作者提出了一個很漂亮的解構嵌入層的方法。在BERT和XLNet中,embedding size E和hidden size H大小一樣。從模型的角度來看,嵌入層是用來學習獨立於環境的表徵(context-independent representations),而隱藏層的embeddings是用來學習與環境有關(想一想Transformer的attention module)的表徵(context-independent representations)。這二者沒有必要保持embedding大小一致,完全可以解耦。
從實用的角度來看,嵌入層的vocabulary size V一般都是10K的量級。爲了模型的精度,H一般很大。如果E=H,則嵌入層的參數大小VH。這很容易就導致模型有超多參數。
矩陣分解的做法是,把原來的嵌入層矩陣(大小VH)投影到一個低維的空間(維度爲E, E<<H),然後再從這個空間投影到隱藏層的空間(維度H)。算一筆賬:原來的嵌入層大小是O(VH),經過矩陣分解,嵌入層的參數大小合計爲O(VE+EH)
當H遠大於E時,這種參數化方法效果顯著。
層間共享參數
層間的參數共享有很多方式,比如僅前向層共享,僅attention參數共享。ALBERT的缺省模式是全參數共享。
這些方法對參數大小的改變有多大?
模型在下游任務中的表現:
在dev set上,ALBERT xxlarge以BERT large約70%的參數量,取得更好的下游任務表現。比如RACE +8.5%,SQuAD v2.0 +4.2%, SST-2 +3.0%等等。
改頭換面的MLM
MLM提供了真正的雙向語言模型。雖然在BERT提出MLM之後,GPT-2仍然堅持使用LM,XLNet改良了LM(PLM),但是大的方向上看,MLM勢不可擋。很多後續的工作對MLM作了微調也觀察到了更好的效果。
動態掩碼
BERT在預訓練中隨機遮掩tokens,然後保持這些被遮掩的tokens不變。這被稱爲靜態掩碼。 RoBERTa提出了動態掩碼,具體是每一次都對同樣的sentence產生不同的掩碼。在對更大的數據進行更長時間的預訓練時,動態掩碼比靜態掩碼效果更好。
判別器的優勢
動態掩碼只算是一個小的改進。從本質上說這些方法都利用模型generate對masked token的預測。但是ELECTRA巧妙的把這個利用generator的預測問題,改裝成了利用discriminator的分類問題。
ELECTRA用一個generator(通常是一個小型的MLM)產生在masked token上的預測值分佈,經過sample以後作爲輸入傳給discriminator來判斷每個位置上的token是否被置換過。如下圖:
注意判別器discriminator部分並不僅僅對masked tokens做判別,而是對所有的輸入做判斷。這樣做的好處是模型的discriminator部分可以利用到所有的輸入tokens,具有很高的學習效率。作爲對比,MLM只能對一小部分tokens進行學習。
(注意BERT和ELECTRA之間的關係,類似於skip-thought和Quick thougts的關係。)
下圖是和經典算法包括MLM系算法(BERT,RoBERTa)對比,同等量級的ELECTRA碾壓BERT並趨近於RoBERTa
ELECTRA以少很多的參數,更少的預訓練時間達到更好的效果。
總結
文章只是簡單介紹幾個基於BERT的非常優秀的拓展工作,中間省略了大量豐富的原始細節(比如ELECTRA對GAN在NLP中的思考和嘗試,ALBERT用到的LAMP優化方法)。從大的趨勢來看,NSP很可能會被拋棄,MLM及其變種會展現出更大的活力。ELECTRA的MLM based generator + 判別器令人印象深刻。模型的訓練會趨向於利用更大數據和更大batch。同時在保證精度的前提下,人們會尋求更少參數的模型(比如ALBERT的嵌入層參數分解)。
關注公衆號《沒啥深度》有關自然語言處理的深度學習應用