英文題目:MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices
中文題目:MobileBERT:面向資源有限裝置的任務無關的壓縮模型
論文位址:https://arxiv.org/pdf/2004.02984
領域:自然語言處理,模型蒸餾
發表時間:2020
作者:Zhiqing Sun,卡内基梅隆大學,谷歌
出處:ACL
被引量:162
代碼和資料:https://github.com/google-research/google-research/tree/master/mobilebert
閱讀時間:22.06.16
讀後感
使用了瓶頸結構,同時微調模型實作加速,最終實作了任務無關的蒸餾BERT模型。
介紹
大模型效果好,但受資源限制。文中提出了MobileBERT模型對BERT模型進行壓縮和加速,它和原始BERT一樣,是任務無關的,可以泛化到不同下遊任務。MobileBERT是對BERT LARGE的優化,使用瓶頸結構。具體實作分兩步:先訓練一個倒瓶頸的特殊的老師模型,然後再将知識轉移到學生模型MobileBERT。它比BERT BASE模型小4.3倍,快5.5倍,在GLUE資料集上達到與BASE BASE類似的效果。
文中提出的MobileBERT模型與BERT LARGE的深度相同,用瓶頸結構使每一層更窄,如圖-1所示:
與之前的模型相比,文中模型隻在預訓練階段使用知識轉移,在下遊任務中不需要微調教師模型和資料增強;另外,它不修改模型層數,隻改變了每層的寬度。
方法
圖-1展示了模型參數的具體大小:
瓶頸和逆瓶頸
從表-1中可以看到,每塊次元僅為128,另外,将全流程的層輸入輸出都調整為更窄的512。
在訓練過程中,首先訓練老師模型 IB-BERT ,再将知識轉移到學生模型MobileBERT。老師模型設計如圖-1(b)所示,它是一個逆瓶頸結構,師生模型的Feature map大小均為512,這樣可以直接對比層輸出。同時使用瓶頸和逆瓶頸使老師模型保持性能,學生模型足夠緊湊。
多層前饋網絡
注意力層和前饋網絡功能不同:前者連接配接了不同空間資料,後者提升了模型的非線性表達能力。一般BERT的注意力層和前饋網絡參數比例為1:2,而由于MobileBERT模型比較窄,注意力參數相對更多,為解決此問題,設計了多個疊加的前饋層,如圖-1©所示。
操作優化
通過延遲分析發現,歸一化層和 gelu 激活函數占延遲的很大比例,是以對其進行優化。
- 去掉歸一化層:用針對元素的線性變換替換n通道的隐藏層歸一化。
- 使用relu代替glue
嵌入分解
嵌入詞表占了模型的很大比例,如表-1所示,MobileBERT将嵌入詞表壓縮到128維,再用核為3的卷積層将其擴充到512維。
訓練目标
轉移目标包含:feature map轉移和注意力轉移。
Feature map轉移
BERT中每層的輸出是下層的輸入,是以,需要讓學生的層輸出盡量與老師結果一緻。這裡使用MSE作為損失函數。
公式中l為層索引,T為序列長度,N為feature map大小。
注意力轉移
注意力提升了BERT模型的語言識别能力,是以也通過學習注意力層将知識更好地轉移到MobileBERT模型。使用KL散度來計算注意力層的差異,作為損失函數:
預訓練蒸餾
除了針對各Transformer層的轉移,在預訓練時,還使用了蒸餾的loss函數,最終損失函數由三部分組成:遮蔽的損失(MLM),下一句預測的損失(NSP)和針對MLM的蒸餾損失:
訓練政策
下面讨論三種訓練政策,如圖-2所示:
輔助知識轉移(AKT)
将中間層的知識轉移作為知識蒸餾的輔助任務。損失函數是所有層的知識轉移損失和預測蒸餾損失的線性組合。
聯合知識轉移(JKT)
将訓練分成兩步:先訓練中間層知識轉移,然後訓練預訓練的知識蒸餾。
遞進知識轉移(PKT)
下層的錯誤可能影響到上層的學習,是以設計了先訓練下層,再訓練上層的知識轉移方法。一般在訓練上層時當機下層參數,也可以使用軟化方法,訓練上層時對下層參數使用較小的學習率。實驗證明該方法效果最好。
實驗
表-2展示了在SQuAD資料集上,使用不同參數大小的蒸餾結果:
圖-3展示了堆疊前饋層的效果:
精調下遊任務的方法與普通BERT一緻,略有不同的是MobileBERT常需要更大的學習率和更多次疊代。主實驗結果如表-8所示:
可以看到,由于是對BERT LARGE的蒸餾,MobileBERT與BERT BASE模型效果類似,而大小比BERT小4.3倍,速度是BERT的5.5倍。
表-8對比了三種不同政策的訓練方法,可以看到遞進訓練效果更好。