0
模型壓縮可減少受訓(xùn)神經(jīng)網(wǎng)絡(luò)的冗余,由于幾乎沒有 BERT 或者 BERT-Large 模型可直接在 GPU 及智能手機(jī)上應(yīng)用,因此模型壓縮方法對(duì)于 BERT 的未來的應(yīng)用前景而言,非常有價(jià)值。
軟件工程師 Mitchell A. Gordon 在本文中總結(jié)了所有的 BERT 壓縮模型的方法,并對(duì)該領(lǐng)域的論文進(jìn)行羅列及分類,我們下面來看:
1、剪枝——即訓(xùn)練后從網(wǎng)絡(luò)中去掉不必要的部分。
這包括權(quán)重大小剪枝、注意力頭剪枝、網(wǎng)絡(luò)層以及其他部分的剪枝等。還有一些方法也通過在訓(xùn)練期間采用正則化的方式來提升剪枝能力(layer dropout)。
2、權(quán)重因子分解——通過將參數(shù)矩陣分解成兩個(gè)較小矩陣的乘積來逼近原始參數(shù)矩陣。
這給矩陣施加了低秩約束。權(quán)重因子分解既可以應(yīng)用于輸入嵌入層(這節(jié)省了大量磁盤內(nèi)存),也可以應(yīng)用于前饋/自注意力層的參數(shù)(為了提高速度)。
3、知識(shí)蒸餾——又名「Student Teacher」。
在預(yù)訓(xùn)練/下游數(shù)據(jù)上從頭開始訓(xùn)練一個(gè)小得多的 Transformer,正常情況下,這可能會(huì)失敗,但是由于未知的原因,利用完整大小的模型中的軟標(biāo)簽可以改進(jìn)優(yōu)化。
一些方法還將BERT 蒸餾成如LSTMS 等其他各種推理速度更快的架構(gòu)。另外還有一些其他方法不僅在輸出上,還在權(quán)重矩陣和隱藏的激活層上對(duì) Teacher 知識(shí)進(jìn)行更深入的挖掘。
4、權(quán)重共享——模型中的一些權(quán)重與模型中的其他參數(shù)共享相同的值。
例如,ALBERT 對(duì) BERT 中的每個(gè)自注意力層使用相同的權(quán)重矩陣。
5、量化——截?cái)喔↑c(diǎn)數(shù),使其僅使用幾個(gè)比特(這會(huì)導(dǎo)致舍入誤差)。
模型可以在訓(xùn)練期間,也可以在訓(xùn)練之后學(xué)習(xí)量化值。
6、預(yù)訓(xùn)練和下游任務(wù)——一些方法僅僅在涉及到特定的下游任務(wù)時(shí)才壓縮 BERT,也有一些方法以任務(wù)無關(guān)的方式來壓縮 BERT。
(原英文標(biāo)題見文章尾部)
三、結(jié)果比較
在這里將盡我所能的對(duì)這些論文的觀點(diǎn)進(jìn)行解讀,同時(shí)主要關(guān)注以下指標(biāo):參數(shù)縮減,推理加速 1 和準(zhǔn)確性 2,3。
若需要選一個(gè)贏家,我認(rèn)為是 ALBERT,DistilBERT,MobileBERT,Q-BERT,LayerDrop和RPP。你也可以將其中一些方法疊加使用 4,但是有些剪枝相關(guān)的論文,它們的科學(xué)性要高于實(shí)用性,所以我們不妨也來驗(yàn)證一番:
四、相關(guān)論文和博文推薦
《稀疏 Transformer:通過顯式選擇集中注意力》(Sparse Transformer: Concentrated Attention Through Explicit Selection),論文鏈接:https://openreview.net/forum?id=Hye87grYDH)
《使用四元數(shù)網(wǎng)絡(luò)進(jìn)行輕量級(jí)和高效的神經(jīng)自然語言處理》(Lightweight and Efficient Neural Natural Language Processing with Quaternion Networks,論文鏈接:http://arxiv.org/abs/1906.04393)
《自適應(yīng)稀疏 Transformer》(Adaptively Sparse Transformers,論文鏈接:https://www.semanticscholar.org/paper/f6390beca54411b06f3bde424fb983a451789733)
《壓縮 BERT 以獲得更快的預(yù)測結(jié)果》(Compressing BERT for Faster Prediction,博文鏈接:https://blog.rasa.com/compressing-bert-for-faster-prediction-2/amp/)
最后的話:
1、請(qǐng)注意,并非所有壓縮方法都能使模型更快。眾所周知,非結(jié)構(gòu)化剪枝很難通過 GPU 并行來加速。其中一篇論文認(rèn)為,在 Transformers 中,計(jì)算時(shí)間主要由 Softmax 計(jì)算決定,而不是矩陣乘法。
2、如果我們能拿出一個(gè)數(shù)字來記錄我們真正關(guān)心的事情,那將會(huì)很棒,就像 F1。
3、其中一些百分比是根據(jù) BERT-Large 而不是 BERT-Base 衡量的,僅供參考。
4、不同的壓縮方法如何交互,是一個(gè)開放的研究問題。
相關(guān)論文列表:
[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)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。