ALBERT論文:https://arxiv.org/pdf/1909.11942.pdf
英文原文:https://amitness.com/2020/02/albert-visual-summary/
譯文鏈接:https://www.6aiq.com/article/1589833968655
NLP 最新發展的基本前提是賦予機器學習這些表示的能力。
BERT
1. 掩碼語言建模
傳統的語言建模
BERT使用的掩碼語言建模
2. 下一個句子預測
“下一個句子預測”的目的是檢測兩個句子是否連貫。
3. Transformer結構
將輸入轉換成大小爲768的向量。關於Transformer和BERT非常好的文章:
ALBERT總結的BERT的兩類問題
1. 內存限制和通信開銷
BERT模型非常大,BERT-large有24個隱含層,約3.4億參數,若想改進需要大量計算資源。
2. 模型退化
更大的模型,更好的性能? Albert作者將BERT-large的隱含層單元從1024增加到2048,在語言建模任務和閱讀理解測試中,都有所下降。在閱讀理解測試中從73.9%下降到54.3%。
從BERT到ALBERT
1. 跨層共享參數
BERT-large和BERT-base的參數量
ALBERT只學習第一個塊的參數,並在剩下的 11 個層中重用該塊,而不是爲 12 個層中每個層都學習不同的參數。(可以只共享 feed-forward 層的參數,只共享注意力參數,也可以共享整個塊的參數。論文對整個塊的參數進行了共享)
- 與BERT-base相比,12層768單元的all-shared ALBERT只有3100萬個參數;
- 而在12層128單元的情況下,BERT-base和all-shared ALBERT的精度差異很小;
- 精度下降主要是shared-FFN;
- shared-attention對精度影響最小;
2. 句子順序預測(SOP)
BERT使用了“下一句子預測”,即NSP任務的二分類損失:
- 從訓練語料庫中取出兩個連續的段落作爲正樣本
- 從不同的文檔中隨機創建一對段落作爲負樣本
ROBERTA和XLNET等論文都闡明瞭NSP無效,且發現它對下游任務影響不可靠,甚至取消NSP之後多個任務的性能都提高了。
ALBERT提出了另一個任務“句子順序預測”:
- 從同一個文檔中取兩個連續的段落作爲一個正樣本
- 交換這兩個段落的順序,並使用它作爲一個負樣本
ALBERT 推測 NSP 是無效的,因爲與掩碼語言建模相比,它並不是一項困難的任務。在單個任務中,它混合了主題預測和連貫性預測。主題預測部分很容易學習,因爲它與掩碼語言建模的損失有重疊。因此,即使 NSP 沒有學習連貫性預測,它也會給出更高的分數。
ALBERT論文中NSP和SOP的對比
3. 嵌入參數分解
在 BERT 中,使用的 embeddings(word piece embeddings)大小被鏈接到 transformer 塊的隱藏層大小。Word piece embeddings 使用了大小爲 30,000 的詞彙表的獨熱編碼表示。這些被直接投射到隱藏層的隱藏空間。
假設我們有一個大小爲 30K 的詞彙表,大小爲 E=768 的 word-piece embedding 和大小爲 H=768 的隱含層。如果我們增加了塊中的隱藏單元尺寸,那麼我們還需要爲每個嵌入添加一個新的維度。這個問題在 XLNET 和 ROBERTA 中也很普遍。
ALBERT 通過將大的詞彙表嵌入矩陣分解成兩個小的矩陣來解決這個問題。這將隱藏層的大小與詞彙表嵌入的大小分開。這允許我們在不顯著增加詞彙表嵌入的參數大小的情況下增加隱藏的大小。
結果
- 比 BERT-large 模型縮小了 18x 的參數
- 訓練加速 1.7x
- 在 GLUE, RACE 和 SQUAD 得到 SOTA 結果:
- RACE:89.4%[提升 45.3%]
- GLUE Benchmark:89.4
- SQUAD2.0 f1 score:92.2