0
模型壓縮可減少受訓神經(jīng)網(wǎng)絡的冗余,由于幾乎沒有 BERT 或者 BERT-Large 模型可直接在 GPU 及智能手機上應用,因此模型壓縮方法對于 BERT 的未來的應用前景而言,非常有價值。
軟件工程師 Mitchell A. Gordon 在本文中總結了所有的 BERT 壓縮模型的方法,并對該領域的論文進行羅列及分類,我們下面來看:
1、剪枝——即訓練后從網(wǎng)絡中去掉不必要的部分。
這包括權重大小剪枝、注意力頭剪枝、網(wǎng)絡層以及其他部分的剪枝等。還有一些方法也通過在訓練期間采用正則化的方式來提升剪枝能力(layer dropout)。
2、權重因子分解——通過將參數(shù)矩陣分解成兩個較小矩陣的乘積來逼近原始參數(shù)矩陣。
這給矩陣施加了低秩約束。權重因子分解既可以應用于輸入嵌入層(這節(jié)省了大量磁盤內(nèi)存),也可以應用于前饋/自注意力層的參數(shù)(為了提高速度)。
3、知識蒸餾——又名「Student Teacher」。
在預訓練/下游數(shù)據(jù)上從頭開始訓練一個小得多的 Transformer,正常情況下,這可能會失敗,但是由于未知的原因,利用完整大小的模型中的軟標簽可以改進優(yōu)化。
一些方法還將BERT 蒸餾成如LSTMS 等其他各種推理速度更快的架構。另外還有一些其他方法不僅在輸出上,還在權重矩陣和隱藏的激活層上對 Teacher 知識進行更深入的挖掘。
4、權重共享——模型中的一些權重與模型中的其他參數(shù)共享相同的值。
例如,ALBERT 對 BERT 中的每個自注意力層使用相同的權重矩陣。
5、量化——截斷浮點數(shù),使其僅使用幾個比特(這會導致舍入誤差)。
模型可以在訓練期間,也可以在訓練之后學習量化值。
6、預訓練和下游任務——一些方法僅僅在涉及到特定的下游任務時才壓縮 BERT,也有一些方法以任務無關的方式來壓縮 BERT。
(原英文標題見文章尾部)
三、結果比較
在這里將盡我所能的對這些論文的觀點進行解讀,同時主要關注以下指標:參數(shù)縮減,推理加速 1 和準確性 2,3。
若需要選一個贏家,我認為是 ALBERT,DistilBERT,MobileBERT,Q-BERT,LayerDrop和RPP。你也可以將其中一些方法疊加使用 4,但是有些剪枝相關的論文,它們的科學性要高于實用性,所以我們不妨也來驗證一番:
四、相關論文和博文推薦
《稀疏 Transformer:通過顯式選擇集中注意力》(Sparse Transformer: Concentrated Attention Through Explicit Selection),論文鏈接:https://openreview.net/forum?id=Hye87grYDH)
《使用四元數(shù)網(wǎng)絡進行輕量級和高效的神經(jīng)自然語言處理》(Lightweight and Efficient Neural Natural Language Processing with Quaternion Networks,論文鏈接:http://arxiv.org/abs/1906.04393)
《自適應稀疏 Transformer》(Adaptively Sparse Transformers,論文鏈接:https://www.semanticscholar.org/paper/f6390beca54411b06f3bde424fb983a451789733)
《壓縮 BERT 以獲得更快的預測結果》(Compressing BERT for Faster Prediction,博文鏈接:https://blog.rasa.com/compressing-bert-for-faster-prediction-2/amp/)
最后的話:
1、請注意,并非所有壓縮方法都能使模型更快。眾所周知,非結構化剪枝很難通過 GPU 并行來加速。其中一篇論文認為,在 Transformers 中,計算時間主要由 Softmax 計算決定,而不是矩陣乘法。
2、如果我們能拿出一個數(shù)字來記錄我們真正關心的事情,那將會很棒,就像 F1。
3、其中一些百分比是根據(jù) BERT-Large 而不是 BERT-Base 衡量的,僅供參考。
4、不同的壓縮方法如何交互,是一個開放的研究問題。
相關論文列表:
[1] Compressing BERT: Studying the Effects of Weight Pruning on Transfer Learning
[2] Are Sixteen Heads Really Better than One?
[3] Pruning a BERT-based Question Answering Model
[4] Reducing Transformer Depth on Demand with Structured Dropout
[5] Reweighted Proximal Pruning for Large-Scale Language Representation
[6] Structured Pruning of Large Language Models
[7] ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
[8] Extreme Language Model Compression with Optimal Subwords and Shared Projections
[9] DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter
[10] Distilling Task-Specific Knowledge from BERT into Simple Neural Networks
[11] Distilling Transformers into Simple Neural Networks with Unlabeled Transfer Data
[12] Attentive Student Meets Multi-Task Teacher: Improved Knowledge Distillation for Pretrained Models
[13] Patient Knowledge Distillation for BERT Model Compression
[14] TinyBERT: Distilling BERT for Natural Language Understanding
[15] MobileBERT: Task-Agnostic Compression of BERT by Progressive Knowledge Transfer
[16] Q8BERT: Quantized 8Bit BERT
[17] Q-BERT: Hessian Based Ultra Low Precision Quantization of BERT 雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
Via http://mitchgordon.me/machine/learning/2019/11/18/all-the-ways-to-compress-BERT.html
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。