ALBERT:用於語言表達自我監督學習的Lite BERT

  • 2019 年 12 月 24 日
  • 筆記

編輯 | KING 發布 | ATYUN訂閱號

本文中藍色字體為外部鏈接,部分外部鏈接無法從文章中直接跳轉,請點擊【閱讀原文】以訪問。

自BERT問世以來,自然語言的研究已經發展到了一個新的模式,充分利用大量現有文本的參數而不需要數據注釋。因此,訓練用於自然語言處理的機器學習模型(NLP)無需從零開始。但是,為了進一步完善這種用於NLP的新方法,我們必須找到一種對語言理解性能(網路的高度即層數,網路的寬度隱藏層的大小)的確切表示形式。

在ICLR 2020會議上,Google介紹了BERT的升級版 ALBERT:用於語言表示的自我監督學習的精簡BERT,它能夠提高12項NLP任務的最新性能,ALBERT已在TensorFlow之上開源發布,其中包括許多現成的ALBERT預訓練語言表示模型。

什麼對NLP性能有貢獻?

確定NLP性能的主要驅動因素很複雜,有些設置比其他設置更重要,而且,一次簡單地一次嘗試不會產生正確的答案。ALBERT的設計中捕捉到的優化性能的關鍵是更有效地分配模型的容量。輸入級別的嵌入(單詞,子標記等)需要學習與上下文無關的內容表示形式。相反,隱藏層嵌入需要將其完善為上下文相關的表示形式。

這是通過對嵌入參數化進行因子分解來實現的,嵌入矩陣在尺寸相對較小(例如128)的輸入級嵌入之間進行劃分,而隱藏層嵌入則使用較高的維度(如BERT情況下為768,或者更多)。僅憑這一步驟,ALBERT即可將投影塊的參數減少80%,而僅以很小的性能下降為代價。

ALBERT的另一個關鍵設計決策源於檢查冗餘的不同觀察。神經網路架構(例如BERT, XLNet和RoBERTa)依賴彼此堆疊的獨立層。但是,我們觀察到,它們經常學會使用不同參數在各個層執行相似的操作。通過在各層之間進行參數共享,可以消除ALBERT中這種可能的冗餘,即同一層相互疊加。這種方法會稍微降低精度,但是更緊湊的尺寸非常值得權衡。通過參數共享,注意力前饋模組的參數減少了90%(總體減少了70%)。

一起實現這兩個設計更改,將產生一個基於ALBERT的模型,該模型只有1200萬個參數,與基於BERT的模型相比,參數減少了89%,但在所考慮的基準測試中仍可達到可觀的性能。但是,此參數大小的減少提供了再次擴大模型的機會。假設記憶體大小允許,則可以將隱藏層嵌入的大小擴大10到20倍。與BERT大型模型相比,ALBERT-xxlarge配置的隱藏大小為4096,可實現整體參數減少30%,並且更重要的是,可顯著提高性能。

這些結果表明準確的語言理解取決於開發健康的、高容量的上下文表示。在隱藏層嵌入中建模的上下文捕獲了單詞的含義,這反過來又推動了整體理解,這直接由標準基準上的模型性能來衡量。

使用RACE數據集優化模型性能

要評估模型的語言理解能力,可以進行閱讀理解測試(例如,類似於SAT閱讀測試)。這可以通過RACE數據集完成(2017),這是為此目的提供的最大的公開資源。在閱讀理解挑戰方面的電腦性能很好地反映了過去幾年中語言建模的進步:僅通過與上下文無關的單詞表示進行預訓練的模型在該測試中的評分很低(45.9;最左邊的小節),而帶有上下文的BERT依賴的語言知識,相對得分為72.0。完善的BERT模型,例如XLNet和RoBERTa,在82-83的分數範圍內,將標準設定得更高。當在基礎BERT數據集(維基百科和書籍)上進行訓練時,上述ALBERT-xxlarge配置產生的RACE得分在相同範圍內(82.3)。但是,當在與XLNet和RoBERTa相同的較大數據集上進行訓練時,它顯著優於迄今所有其他方法,並在89.4時建立了新的最新評分。

ALBERT的成功證明了識別模型的各個方面的重要性,這些模型會產生強大的上下文表示。通過將改進工作集中在模型體系結構的這些方面,可以極大地提高各種NLP任務的模型效率和性能。