基於的BERT的一些改進模型及思路

BERT的成功主要在於幾大因素:超大模型+超大語料;利用Transformer;新的Loss即MLM(Masked Language Model)+NSP(Next Sentence Prediction)。其後有很多的研究在BERT的基礎上進行了各種修正和改良,甚至對原Loss(比如NSP)提出了不同的看法和嘗試。這裏做一個簡單的總結。主要涉及到的論文:RoBERTa
ALBERTELECTRA

被遺棄的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,則嵌入層的參數大小V×\timesH。這很容易就導致模型有超多參數。

矩陣分解的做法是,把原來的嵌入層矩陣(大小V×\timesH)投影到一個低維的空間(維度爲E, E<<H),然後再從這個空間投影到隱藏層的空間(維度H)。算一筆賬:原來的嵌入層大小是O(V×\timesH),經過矩陣分解,嵌入層的參數大小合計爲O(V×\timesE+E×\timesH)
當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的嵌入層參數分解)。

關注公衆號《沒啥深度》有關自然語言處理的深度學習應用
這裏寫圖片描述

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