15篇論文全面概覽BERT壓縮方法

作者 | Mitchell A. Gordon

譯者 | 孫薇

出品 | AI科技大本營(ID:rgznai100)

模型壓縮可減少受訓神經網絡的冗餘——由於幾乎沒有BERT或者BERT-Large模型可用於GPU及智能手機上,這一點就非常有用了。另外,內存與推理速度的提高也能節省大量成本。


本篇列出了作者所見過的BERT壓縮論文,以下表格中對不同方法進行了分類。

論文1:Compressing BERT: Studying the Effects of Weight Pruning on Transfer Learning

鏈接:https://openreview.net/forum?id=SJlPOCEKvH

摘要:通用特徵提取器,如用於自然語言處理的BERT,以及用於計算機視覺的VGG模型,都能在無需更多標記數據的情況下,有效地改善深度學習模型。常見範例包括使用大量數據對特徵提取器進行預訓練,之後在遷移學習之類的下游任務中微調,以優化深度學習模型。儘管有效,但類似BERT的功能提取器可能對於某些部署方案來說會顯得過大。

在該論文中,我們針對BERT的權重修剪問題進行了研究和探討:預訓中的壓縮是如何影響遷移學習的?我們發現,修剪對遷移學習的影響分三種情況:低水平修剪(30-40%)不會對預訓練損失及遷移到下流任務產生影響;中水平修剪會增加預訓練的損失,並會阻止有用的預訓練遷移至下流任務;高水平修剪還會影響到模型擬合下遊數據庫,導致進一步降級。最終,根據觀察,我們發現針對特定任務微調BERT並不會提高其可修剪能力,並得出結論,不影響性能的前提下,對BERT在預訓練階段進行單次修剪即可,無需針對各個任務分別修剪。


論文2:Are Sixteen Heads Really Better than One?

鏈接:http://arxiv.org/abs/1905.10650

摘要:注意力(attention)head非常強大,且普遍使用。有了attention head,神經模型在執行預測時,可通過平衡權重來着重於特定的重要信息。尤其multi-headed attention,更是近來許多最新NLP模型背後的推動力,比如Transformer-based MT模型,以及BERT。這些模型均用到了attention機制,且每個attention head都可能關注不同的輸入片段,使得超出普通加權平均的方式,表達複雜功能成爲可能。

本論文中,我們的觀察令人驚訝:即便使用多表頭(multiple head)來訓練模型,在實際中,測試時移除大量注意力表頭也不會對性能產生顯著影響。事實上,一些層級甚至可以刪成單表頭。我們進一步研究了用於修剪模型的貪婪算法,以及從中可獲得的潛在速度、內存效率及準確度改進。最終分析得出以下問題的結果:模型哪些部分在擁有多表頭時更可靠。並且預測了multi-head attention收益中training dynamics所起到的重要作用。


論文3:Pruning a BERT-based Question Answering Model

鏈接:http://arxiv.org/abs/1910.06360

摘要:我們研究瞭如何通過修剪基礎BERT模型中的參數,來壓縮基於BERT的問答系統。初始訓練模型是SQuAD 2.0,並引入gate(門)機制,令選中的transformer模塊可被單獨刪除。具體步驟包括:(1)減少各個transformer的attention head數量;(2)減少各個transformer前饋子層的中間寬度;(3)減少嵌入維度。我們比較了確認這些gate值的一些方法,並發現結合修剪attention head和前饋層之後,解碼速度提高了一倍,準確度損失僅有1.5 f point。


論文4:Reducing Transformer Depth on Demand with Structured Dropout

鏈接:https://openreview.net/forum?id=SylO2yStDr

摘要:過度參數化的transformer網絡已在各種自然語言處理任務(如機器翻譯、語言建模與問答)中取得了先進的成果。這些模型包含了數億個參數,需要大量計算並使得它們易於擬合。

在本文中,我們研究了LayerDrop,它採用了結構化的dropout形式,在訓練時具有正則化效應,並且允許我們在推理時進行有效修剪。我們特別展示了這樣的可能性,從一個大型網絡中選擇任意深度的子網,無需對其微調,且對性能影響十分有限。通過改善機器翻譯、語言建模、摘要、問答和語言理解基準方面的最先進技術,我們證明了所選方法的有效性。此外我們還展示了:使用我們的方法,可以生成質量更高的小型BERT類模型,而無需從頭訓練。


論文5:Reweighted Proximal Pruning for Large-Scale Language Representation

鏈接:https://openreview.net/forum?id=r1gBOxSFwr&noteId=r1gBOxSFwr

摘要:近來,預訓練語言表徵模型蓬勃發展,已成爲自然語言理解社區(如BERT)的支柱。這些預訓練語言表徵模型可以在一系列下游任務上生成最先進的結果。隨着持續顯著的性能改善,這些預訓練的神經模型持續在規模與複雜度上快速增長。壓縮這些大型語言表徵模型是否可能?修剪後的語言表徵將如何影響下游多任務轉移學習的主體?

在本論文中,我們提出了重新加權近似度修剪(RPP)方法,這是一種專爲大規模語言表徵模型所設計的修剪方法。基於SQuAD及GLUE基準套件上的實驗,我們表明了近似度修剪後的BERT無論是針對於預訓練任務,還是下游多個高修剪比例的微調任務,都保持了較高的準確性。RPP方法爲我們提供了全新的角度,幫助我們分析大型語言表徵模型可能學習的內容。此外,有了這種方法,在一系列不同的設備(比如在線服務器、移動電話及邊緣設備)上部署類似BERT這樣的先進語言表徵模型也成爲可能。


論文6:Structured Pruning of Large Language Models

鏈接:http://arxiv.org/abs/1910.04732

摘要:近來,大型語言模型在各種自然語言任務中都達到了最先進的性能。與此同時,這些模型的大小與延遲也顯著增長,令使用成本增加,並引發一個有趣的問題:語言模型是否需要很大?我們通過模型壓縮的角度來研究這個問題,並提出了一種基於低秩矩陣分解與強化的拉格朗日L0範數正則化的新型結構化修剪方法。我們的結構化方法在任何稀疏度級別上都可以顯著實現推理加速,並匹配甚至優於我們的非結構化基準。將該方法應用於enwiki8數據庫的最新模型上,我們僅用5兆參數就獲得了1.19的困惑度評分,遠勝於從頭開始訓練的同大小模型。我們還在幾個下游任務分類中修剪BERT模型,展示了使用該方法對語言模型進行微調。


論文7:ALBERT: A Lite BERT for Self-supervised Learning of Language Representations

鏈接:https://openreview.net/forum?id=H1eA7AEtvS

摘要:在預訓練自然語言表徵時增加模型大小,通常會增加下游任務的數量。然而,由於GPU/TPU內存的限制、訓練時間更長以及意料之外的模型降級等問題,有些時候進一步提升模型變得更加困難。爲了解決這些問題,我們提出了兩種參數約簡(parameter-reduction)技術,以降低內存消耗,同時提高BERT的訓練速度。大量實驗表明,相比原始BERT,我們提出的方法優化後的模型可擴展性更佳。我們還使用了一個專注於模擬句子間連貫性的自監督loss,表明它可以持續協助多句子輸入的下游任務。最終,我們的最佳模型在GLUE、RACE以及SQuAD基準上達成了最先進的結果,與此同時參數卻少於BERT-large。


論文8:Extreme Language Model Compression with Optimal Subwords and Shared Projections

鏈接:https://openreview.net/forum?id=S1x6ueSKPr

摘要:經過預訓練的深度神經網絡語言模型,如ELMo、GPT、BERT及XLNet,近來在各種語言理解任務上都達到了最先進的性能。然而,其體量使得在許多場景下,尤其是在移動設備與邊緣設備(Edge devices) 上都無法使用。尤其是在輸入詞彙量和嵌入維數較大時,輸入單詞的嵌入矩陣會佔用模型內存的很多比例。知識蒸餾技術(Knowledge distillation techniques )在壓縮大型神經網絡模型方面已經取得成功,但在詞彙量與原始teacher模型不同的student模型)中效果不佳。

我們引入了一種全新的知識蒸餾技術,用以訓練詞彙量明顯較小、嵌入與隱藏維度也較低的student模型。具體來講,我們部署了一套雙重訓練機制,同時訓練teacher模型和student模型,以獲得針對student模型詞彙量的最佳單詞嵌入機制。將此方法與分享投影矩陣(shared projection matrices)的學習相結合,將分層知識自teacher模型傳遞至student模型。我們的方法可以將基於BERT的模型壓縮60倍以上,而下游任務僅有極少降低,因此語言模型的佔用空間僅不到7MB。實驗結果還顯示,與其他最先進的壓縮技術相比,該方法具有更高的壓縮效率與準確度。


論文9:DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter

鏈接:http://arxiv.org/abs/1910.01108

摘要:隨着自大型預訓練模型執行的轉移學習在自然語言處理(NLP)中愈發普遍,在實時與/或受限的計算訓練中或推理預算下,操作這些大型模型仍然很有挑戰性。在本文中,我們提出了一種名爲DistilBERT的方法,預訓練較小的通用語言表徵模型,在將其用於較大任務(如較大的對應對象)時再對其進行微調。儘管之前的大多工作都在研究使用蒸餾來構建特定的任務模型,但是在預訓練階段,我們使用了知識蒸餾,證明了將BERT模型的大小減少40%,同時保留其97%的語言理解能力,並且增速60%是可行的。

爲了利用預訓練期間大型模型學習時的歸納偏差,我們引入了三重loss。這個更小、更快、更輕量級的模型在預訓練時更便宜。我們在概念驗證實驗與比較性設備實體研究(on-device study)中證明了該模型的計算能力。


論文10:Distilling Transformers into Simple Neural Networks with Unlabeled Transfer Data

鏈接:http://arxiv.org/abs/1910.01769

摘要:近來,通過自我監督對大量文本執行大規模的模型預訓練已經在各種自然語言處理任務中取得了先進成果。然而在實踐中,這些模型龐大而昂貴,很難用於下游任務中。近期,我們使用知識蒸餾來壓縮這些模型,卻發現較小的student模型與較大的teacher模型之間存在着巨大的性能差異。

在本文中,我們將利用大量域內未標記的傳輸數據,以及少量標記過的訓練實例來嘗試彌補差異。實驗證明,基於RNN的簡單student模型在經過hard蒸餾的情況下,可以再次通過soft蒸餾,以及利用teacher模型的中間表示法獲得提升。我們還證明了student模型可以將龐大的teacher模型壓縮26倍,甚至在資源較少的情況下,僅有少量標記數據,也能媲美甚至超越teacher模型的表現。


論文11:Patient Knowledge Distillation for BERT Model Compression

鏈接:http://arxiv.org/abs/1908.09355

摘要:事實證明,類似BERT這樣的預訓練語言模型對於自然語言處理(NLP)任務非常有效。但這類模型在訓練時對計算資源的高需求,阻礙了其實踐中的應用。爲了減輕大規模模型訓練時的資源匱乏問題,我們提出了一種名爲“耐心知識蒸餾”的方法,將原始的大模型(teacher)壓縮成效果相等的輕量級淺層網絡(student)。

與之前僅使用teacher網絡最後一層的輸出進行提煉的知識蒸餾方法不同,我們的student模型從teacher模型的多箇中間層中學習,耐心進行增量知識提取,並遵循以下兩種策略:(1)PKD-Last:從最後的k層開始學習;(2)PKD-Skip:從每個k層開始學習。這兩種耐心知識蒸餾方案都能夠利用teacher模型隱藏層的豐富信息,鼓勵student模型通過多層蒸餾過程耐心向teacher模型學習和模仿。根據經驗,多個NLP任務都獲得了提升,且在不犧牲模型準確性的前提下,顯著提高了訓練效率。


論文12:TinyBERT: Distilling BERT for Natural Language Understanding

鏈接:https://openreview.net/forum?id=rJx0Q6EFPB

摘要:語言模型預訓練(如BERT)極大地改善了許多自然語言處理任務的性能。但通常情況下,預訓練語言模型計算量大、佔用內存高,因此很難在資源受限的設備上有效執行。爲了加快推理速度,並減少模型大小,且不損失精確度,我們首先提出了一種全新的Transformer蒸餾方法,這種方法是專爲基於Transformer模型的知識蒸餾(KD)而設計。

藉助這種全新的KD方法,我們可以將大型“teacher”BERT模型的知識轉移到小型的“student”TinyBERT模型中。此外,我們爲TinyBERT引入了一個全新的兩階段學習框架,在預訓練階段和特定任務學習階段都會執行Transformer蒸餾方式,確保TinyBERT可以捕獲BERT中的一般領域及特定任務領域。TinyBERT已被證實了效果,在GLUE基準測試中幾可與BERT比擬,卻比BERT要小7.5倍,推理速度達9.4倍。與BERT蒸餾的最前沿基準線相比,TinyBERT也要好得多,參數僅有前者的28%左右,推理時間也僅需31%左右。


論文13:MobileBERT: Task-Agnostic Compression of BERT by Progressive Knowledge Transfer

鏈接:https://openreview.net/forum?id=SJxjVaNKwB

摘要:近來,使用包含數億參數的大量預訓練模型,自然語言處理(NLP)取得了巨大成功。不過這些模型無論大小還是延遲都太過差強人意,我們無法將其直接部署到資源受限的移動設備上。本論文提出了將MobileBERT用於壓縮和加速大熱的BERT模型。與BERT一樣,MobileBERT也是任務無偏(task-agnostic)的,即可以通過微調將其普遍應用在各種下游NLP任務之上。MobileBERT是BERT-LARGE的精簡版,增加了瓶頸結構,並在self-attention和前饋網絡間做了精細的平衡設計。

爲了訓練MobileBERT,我們使用了自上而下的漸進方案,用專門設計的反向瓶頸BERT-LARGE teacher模型將其中知識傳遞給MobileBERT。研究表明,MobileBERT比原始的BERT-BASE小4.3倍,推理速度要快4倍,且在知名的NLP基準測試中獲得了具有競爭力的成果。在GLUE的自然語言推理任務上,MobileBERT在Pixel 3手機上實現了0.6 GLUE評分性能下降和367毫秒延遲的成績。在SQuAD v1.1/v2.0的問答任務中,MobileBERT獲得90.0/79.2 dev F1的分數,高於BERT-BASE的1.5/2.1。


論文14:Q8BERT: Quantized 8Bit BERT

鏈接:http://arxiv.org/abs/1910.06188

摘要:近來,經過預訓練、以Transformer爲基礎的語言模型,如BERT和GPT在許多自然語言處理(NLP)任務中已經展現出極大的優化。但是,這些模型包含有大量參數。更大、更準確的模型,如GPT2和Megatron的出現,預示着預訓練Transforemer模型的大型化趨勢。然而,使用這些大型模型在生產環境中太過複雜,需要大量的計算,還會耗費大量內存和電力資源。本文展示瞭如何在BERT的微調階段執行量化感知訓練,以便以最小的精度損失將BERT壓縮4倍。此外,如果針對8位支持硬件進行優化,則生成的量化模型可以加快推理速度。


論文15:Q-BERT: Hessian Based Ultra Low Precision Quantization of BERT

鏈接:http://arxiv.org/abs/1909.05840

摘要:基於Transformer的架構已成爲一系列自然語言處理任務的實際模型。尤其,基於BERT的模型在GLUE、CoNLL-03和SQuAD中都取得了明顯的準確度提高。但基於BERT的模型在內存佔用和延遲方面都令人不甚滿意。因此,在資源受限的環境中,部署基於BERT的模型已成爲一項具有挑戰性的任務。

本文中,我們使用了二階Hessian信息,對微調的BERT模型進行了廣泛的分析,我們根據結果提出了一種將BERT模型量化爲超低精度的新方法。尤其我們還提出了一種新的逐組量化方案,並使用基於Hessian的混合精度方法進一步壓縮模型。我們在SST-2、MNLI、CoNLL-03和SQuAD的下游任務上都測試了上述方法,可以達到與基準相當的性能,最多性能下降不超過2.3%,即便在超低精度量化中降到2位,模型參數壓縮達13倍,以及嵌入表最大4倍的壓縮。所有任務中,我們發現在SQuAD上微調的BERT性能損失最高,通過研究基於Hessian的分析與可視化,結果證明這與目前BERT訓練/微調方案無法聚集到SQuAD有關。

原文鏈接:

http://mitchgordon.me/machine/learning/2019/11/18/all-the-ways-to-compress-BERT.html

(*本文首發於「AI科技大本營」微信公衆號,更多幹貨內容請在公衆號查看。轉載請聯繫微信1092722531)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章