NYU Google: 知识蒸馏无处不在,但它真的有用吗?
文 | 小偉
編 | 小軼
導師: 小偉,聽說你對知識蒸餾比較了解,你來給我說說知識蒸餾有什么用?
我: 知識蒸餾是一種很典型的模型壓縮的方法,我們可以用它來有效地從大型教師模型學習小型學生模型,并且學生模型的性能也很不錯。
導師: 那它既然叫知識蒸餾,你怎么知道學生模型是不是真的充分學到了教師模型的知識呢?
我: 這不簡單嘛,學生模型的效果好不就說明學到充足的知識了。
導師:一看你就不關心最新的學術進展,天天是不是忙著吃雞了!最近NYU和Google聯合發了一篇文章,仔細探索了知識蒸餾中學生模型的精度和蒸餾效果之間的關系,快去讀一讀!
我: 好嘞~
論文標題:
Does Knowledge Distillation Really Work?
論文地址:
https://arxiv.org/pdf/2106.05945
arxiv訪問慢的小伙伴也可以在 【夕小瑤的賣萌屋】訂閱號后臺回復關鍵詞 【0825】 下載論文PDF~
隨著自然語言處理進入了預訓練模型的時代,模型的規模也在極速增長,GPT-3甚至有1750億參數。如何在資源有限的情況下部署使用這些龐大的模型是一個很大的挑戰。
目前知識蒸餾在解決這一問題中的方法中占據了重要的地位。我們可以通過知識蒸餾來學習容易使用的小型學生模型,但是它真的可以起到蒸餾教師模型知識的效果嗎?在這篇文章中,作者對這一問題進行了詳細的探索與解答,下面我們就來一探究竟。
概要
盡管目前有很多知識蒸餾相關的研究,但它們主要集中于如何提高學生模型的泛化性(generalization),往往忽視了學生模型的預測和教師模型的預測的匹配程度(fidelity),我們可以簡單稱之為學生模型的匹配度。相比泛化性,匹配度更好的反映了學生模型蒸餾到了多少教師模型含有的知識。
本文對這兩種概念做了詳細的解釋與區分,并且指出獲得良好的匹配度對學生模型來說往往是很困難的。
基于此現象,作者探索了兩種可能導致這種困難的原因:
Identifiability: 蒸餾數據不夠充足,所以在訓練數據上學生-教師預測可以匹配并不意味著在測試數據上也可以匹配。
Optimization: 我們不能很好地解決蒸餾優化問題,所以不管是在訓練數據還是測試數據上,學生模型的匹配度都比較低。
為什么需要匹配度?
之前的研究已經揭示了知識蒸餾通常會提高學生模型的泛化能力,所以我們為什么還要關心學生模型的匹配度呢?
首先是學生模型的泛化性能和教師模型的泛化性能往往有比較大的差距,提高匹配度是消除學生和教師泛化性能差異最顯而易見的方法。
其次良好的學生模型匹配度可以提高知識蒸餾的可解釋性與可信賴性。
最后,將匹配度和泛化性解耦可以幫助更好的理解知識蒸餾是怎么工作的以及如何在各種應用程序中更好的利用它
學生模型的匹配度高嗎?
作者使用3個ResNet-56網絡的集成來作為教師模型,使用單個的ResNet-56網絡來作為學生模型進行知識蒸餾。
如Figure 1(b)顯示,學生模型和教師模型的預測之前有著顯著的差距(Low Test Agreement),也就是低匹配度。
導致低匹配度的原因
學生模型的匹配度比較差,是什么原因導致的呢?
作者給出了兩個可能的原因,并進行了相應的探索與驗證。
首先可能是蒸餾數據不夠充足
作者設計實驗探索了在蒸餾過程中使用不同的數據增強策略是否可以提高學生模型的匹配度。
如Figure 3所示,實驗結果證明雖然數據增強在縮小學生-教師模型預測差距上是有用的,但它帶來的改進很小,所以蒸餾數據不足不是導致低匹配度的主要原因。
既然蒸餾數據數量不足不是主要原因,那么會不會是蒸餾數據的分布偏移導致的呢?
作者同樣設計了實驗來驗證這一猜想。Figure 4中的實驗結果顯示調整蒸餾數據的分布可以帶來微小的改進,這也證明了數據的錯誤選擇不是導致低匹配度的主要原因。
其次可能是蒸餾過程中的優化有問題
既然數據不夠充足或者分布有偏移不是主要原因,那么會不會是因為學生模型本來就沒有充分的學習訓練集,導致即使是在訓練數據上學生-教師預測的差異都很大呢?
為了驗證這一猜想,作者使用ResNet-56以及CIFAR-100設計了簡單的蒸餾實驗。
如Figure 5所示,當使用廣泛的數據增強策略時,即使是在訓練集上,學生模型的匹配度也會比較低。這印證了我們的猜想,學生模型沒有充分的學習訓練數據。
那么為什么即使是在訓練集上,學生-教師模型預測的匹配度都很低呢?原因其實很簡單,知識蒸餾的優化會收斂于次優解,從而導致低匹配度。
總結
作者總結了本文的關鍵發現:
學生模型的泛化性能(generalization)和匹配度(fidelity)的變化趨勢并不一致
學生模型的匹配度(fidelity)和蒸餾的校準(calibration)有很大的關聯
知識蒸餾過程中的優化是很困難的,這也是導致低匹配度的主要原因
蒸餾優化的復雜度以及蒸餾數據的質量之間存在均衡(trade-off)
Final Question
現在回到我們最開始的問題,知識蒸餾真的有用嗎?
毫無疑問,它是有用的,因為它通常可以提高學生模型的泛化性能;同時它也是沒用的,因為它總是將很有限的知識從教師傳遞到學生,這與它的名字知識蒸餾相去甚遠。所以我們是不是可以改稱它為knowledge enhancement?
小伙伴,你們怎么看呢?
最后的最后,
導師: 小伙子不錯啊,論文讀得又快又精準,這周的Reading Group就交給你了。
我: 嗚嗚嗚,又是我,滾去讀論文了~
尋求報道、約稿、文案投放:
添加微信xixiaoyao-1,備注“商務合作”
后臺回復關鍵詞【入群】
加入賣萌屋NLP/IR/Rec與求職討論群
后臺回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
總結
以上是生活随笔為你收集整理的NYU Google: 知识蒸馏无处不在,但它真的有用吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在深度学习顶会ICLR 2020上,Tr
- 下一篇: 为什么搜索与推荐场景用AUC评价模型好坏