Poor Man's BERT: 更小更快的Transformer模型
文 | sliderSun
源 | 知乎
NLP模型的大小不斷增加,隨之而來的是可用性降低,TinyBERT,MobileBERT,和DistilBERT都提出了一個獨特的知識蒸餾框架,其共同目標是在保持性能的同時減小模型大小。
盡管所有這些方法都以各自的方式取得了成功,但存在一個共同的缺點:知識蒸餾需要在已經很昂貴的教師訓練之后進行額外的訓練,限制了這些技術對推理時間的實用性。
_修剪_是知識蒸餾的替代方法,先前的工作,表明基于Transformer的架構可以在推理過程中減少一些注意頭,而不會顯著降低性能。
如果我們將整個Transformer層從我們預先訓練過的模型中刪除,模型性能會發生什么變化?得出的模型對進一步的微調有用嗎?性能是否因我們刪除的層而不同?《Poor Man’s BERT: Smaller and Faster Transformer Models》給出了分析。
主要貢獻
剪枝技術(五種不同的策略)
Top-layer dropping。 移除網絡的最后一層。先前的工作已經表明,網絡的后期層次專門用于訓練前的目標,這在訓練的微調階段可能沒有幫助。
Bottom-layer dropping。 從網絡中移除初始層。出于完整性考慮,包含了這種剪枝形式,即使以前的工作已經表明初始層為token之間的局部交互建模。
Alternate dropping。 從網絡的末端開始,移除每一層,包括偶數層或奇數層。這些技術的目的是回答相鄰層是否學習了足夠相似的變換來移除其中一個。
Symmetric dropping。 從網絡中心移除層。其動機是,與底層和頂層相比,這些層學習不那么重要的功能。
Contribution-based dropping。 根據它們對輸入的修改程度刪除層。這是通過平均輸入和輸出嵌入之間的余弦相似度來測量的。移除相似度高的層似乎是合理的,因為這意味著細微的變化。
擬議方法的好處
應用這些修剪技術的主要好處之一是,生成的模型不需要任何進一步的_預訓練_。作者建議僅根據特定任務_微調_模型就足夠了。
這使從業人員無需訪問大量計算硬件即可輕松創建已經存在的,經過預先訓練的模型的較小版本。
結果
針對三種模型評估了上述修剪技術-12層基于BERT和XLNet的模型以及6層DistilBERT。DistilBERT還使所建議的修剪方法與類似的知識蒸餾技術之間能夠進行進一步的比較。
最佳修剪技術
我們發現頂層刪除優于其他修剪技術,尤其是在GLUE基準測試中刪除4層或6層時。在后一種情況下,當刪除模型的一半層時,BERT和XLNet的性能僅分別降低了2.9和1.8 GLUE點。這與DistillBERT的性能相匹配,后者的尺寸可與這些修剪過的模型相媲美。
在BERT或XLNet中修剪六個頂層都會得到一個與DistillBERT的性能和大小相匹配的模型,而無需任何特定的培訓過程。
從DistillBERT刪除圖層也會產生高性能模型,其中刪除一層或兩層的效果與原始模型相當。同樣,頂層刪除是最一致的,而兩種(偶數和奇數)替換刪除方法都具有競爭性。
特定任務的結果
由于頂級修剪被證明是最佳選擇,因此以下實驗僅限于該方法。
不必研究刪除固定的一組層時會發生什么,而是可以從另一個角度解決這個問題-假設我們接受了一定的性能下降,我們允許下降多少層?
接受1%,2%或3%的性能下降表明,對于某些GLUE任務,BERT和XLNet最多可以下降9(!)層(在DistilBERT情況下最多可以下降4)!這(如果有的話)應該很好地表明了變壓器模型所面臨的過度參數化。
對于某些任務,可以從12層模型中修剪最多9個頂層,而不會降低3%以上的性能。
BERT與XLNet
作者還提供了有關BERT和XLNet的修剪能力的詳細比較。他們發現了以下內容:
XLNet在修剪頂層方面更加強大。 這使他們得出結論,XLNet能夠在網絡中更早地學習更復雜的,特定于任務的信息。通過在BERT和XLNET的每個變壓器層上添加分類器頭來評估該假設。XLNet已在第7層達到了最佳性能,而BERT需要至少11層才能收斂,請參見下圖。該結果說明了XLNet的魯棒性。
微調以完全不同的方式影響BERT和XLNet中的層。 盡管先前的工作表明,對BERT的較晚層進行微調的程度遠大于對BERTNet的較早層進行微調,但尚未研究它如何影響XLNet層。這項工作驗證了先前的發現,但與XLNet的事實形成了對比,對于XLNet,中間層的變化遠大于微調后的早期和晚期層。下圖顯示了這兩種模型微調前后各層之間的比較。
作者推測,造成這種差異的原因是預訓練過程。為了避免陷入確切的細節中,XLNet是一種自動回歸(AR)語言模型,它通過分解階數的所有可能排列進行訓練,盡管它是AR模型,但它仍可以學習雙向上下文。
修剪微調的模型
當問到“如果我們修剪已經微調的模型會發生什么情況”這個問題是有效的時,作者表明,它并不能顯著提高性能(實際上會導致BERT的結果更糟)。
結論
知識蒸餾已顯示出令人鼓舞的結果,可以在減小模型大小的同時保留其大部分性能。主要缺點是建立這些模型需要額外的訓練,這會阻止計算資源有限的研究人員創建這些較小的模型。
一種替代方法是通過簡單地刪除一組圖層來修剪模型。這項工作表明,刪除頂層可以提供最一致的結果,對于某些任務,可以從12層中刪除9層,同時保留原始模型的97%的性能。
最后,這項工作提供了有關BERT和XLNet之間差異的見解,這表明XLNet是用于修剪的更強大的模型。 作者部分地歸因于其新穎的預訓練目標。
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
?
[1] https://link.medium.com/jxkO6EmLi8
[2] https://link.medium.com/KeobJglLi8
[3] https://link.medium.com/I4Q4ulnLi8
[4] http://arxiv.org/abs/1905.10650
[5] https://arxiv.org/abs/1905.09418
[6] https://arxiv.org/abs/2004.03844
[7] https://medium.com/dair-ai/poor-mans-bert-why-pruning-is-better-than-knowledge-distillation-%EF%B8%8F-f9652a1dc2bd
總結
以上是生活随笔為你收集整理的Poor Man's BERT: 更小更快的Transformer模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斯坦福大学NLP公开课CS224n上映啦
- 下一篇: 推荐系统图算法实用干货汇总(含论文、代码