【论文解读】Knowledge Review:知识蒸馏新解法
今天介紹一篇我司的文章Distilling Knowledge via Knowledge Review(縮寫為KR),提出知識蒸餾的新解法。
之前在知乎回答過一個知識蒸餾的問題,為何感覺“知識蒸餾”這幾年沒有什么成果?https://www.zhihu.com/question/309808462/answer/1591099835
其實知識蒸餾從15年提出以來,主要出現了按照蒸餾位置不同的兩種方法分別為蒸logits和features。蒸logits,kd(指15年那篇)之后,主要是通過同時對teacher和student進行約束來保持兩者的分布一致性來做的,如PKT、CC等;蒸features,起源于FitNet,后續主要是通過如何更好的利用teacher的feature來做的,如Overhaul等。另外最近因為self-supervised的火熱,也出現了如CRD、SSKD等優秀的自監督相關的kd算法。
我在回答中也提到,之前的知識蒸餾方法中Overhaul效果是最好的,一騎絕塵。之前的方法把知識蒸餾的上限推到了一個新的高度,貌似已經達到飽和了,那么就引出來一個值得思考的問題,之前的蒸餾feature和logits的方式,teacher的信息真的完全被利用了嗎?
顯然還沒有
01
Knowledge Review
如上圖,其中(a)圖是蒸logits,(b)是蒸單層feture,(c)是蒸多層feature。之前的蒸餾方法(a)(b)(c)三種形式都可以理解為相同層進行蒸餾,引導student學習teacher相同層的feature。但是這種相同層蒸餾方式在訓練的過程中顯然是不合理的,teacher深層的語義信息更加抽象,在student的訓練初期,去學習teacher的抽象深層語義信息,這就好比是讓一個嬰兒去學習大學知識,這顯然是非常困難且難以學習的。
于是就引出了knowledge review的方法,如圖(d)所示,student的單層feature通過teacher的多層feature同時引導學習,這種引導學習的方式比起之前的方法更加完全,teacher的淺層可以認為是比較簡單的知識,深層是比較抽象的知識,student訓練早期會更加關注teacher淺層簡單知識的學習,隨著訓練的進行,會越來越關注teacher深層抽象知識的學習,knowledge review這個詞非常形象表達了這個過程——溫故知新,淺層是old knowledge,深層是new knowledge。
knowledge review的想法是非常make sense的,但是想要做work,還需要一些針對性的設計。
02
Review Mechanism
下面先通過符號假設推導出review mechanism的函數表達式。
假設一張圖片輸入是??,student網絡是??,那么student的logit輸出為??。其中??可以分成??不同部分,??是classifier部分,其余是不同stage部分,那么
??
??表示復合函數??,中間層的feture表示為??,那么第i層的feature的公式為
??
teacher的函數表達式跟student相類似。
那么一層知識蒸餾的loss可以表示為
??
其中??是對feature進行轉換的函數。??是用來衡量轉換后的teacher和student的距離函數。
那么多層知識蒸餾的loss可以表示為
??
review mechanism的單層知識蒸餾loss則可以表示為
??
表示student第i層同時對應teacher的從1到i層的loss之和。
那么review mechanism的多層知識蒸餾loss則可以表示為
??
在知識蒸餾的訓練過程中,review mechanism的loss相當于一個正則項,測試的時候,只在student網絡上inference,沒有額外的時間損耗。
03
Residual Learning Framework
根據上述review mechanism推導得到的框架如圖(a),灰色塊是student做了轉換后的feature,綠色塊是蒸餾的距離函數計算方式。圖(b)對圖(a)進一步進行設計,直接將每個單層student對應多層teacher,但是直接對student每一個stage進行蒸餾,不同層的特征會產生沖突相互干擾。
將review mechanism的loss函數簡寫成
??
忽略掉對feature的轉換函數。然后將i和j兩個順序進行交換
??
可以將上式括號內部分近似成student多層feature融合求距離的公式
??
其中??是一個融合函數。那么整個知識蒸餾框架就變成了圖(c),紅色塊表示融合模塊。
最后圖(d)再進一步對圖(c)的融合模塊進行優化,提高效率。融合??的過程可以看成是??和??融合,于是就可以將??看成一個遞歸函數,重復進行融合操作,將??看成是??到??的融合,那么loss函數可以表示成
??
有沒有覺得這個式子似曾相識,這就是ResNet的residual learning的遞推公式啊,這個residual learning的設計可以幫助knowledge review的訓練過程更加穩定,容易優化。
其中紅色塊和綠色塊分別設計了ABF和HCL模塊。
ABF模塊設計和SKNet非常類似,將student后面一個stage轉換得到的feature和當前stage的feature看成是兩條分支,然后通過concat、卷積的方式得到兩條分支的spatial weight,最后reweight后相加得到融合的feature。
HCL模塊設計借鑒了PSPNet的方式,用四種尺度AvgPool分別對student和teacher的feature進行池化,然后計算loss。
通過上述一系列的設計,knowledge review將溫故知新的思想發揮到了極致。
表格中的OFD是Overhaul,可以看到knowledge review比之前的Overhaul、CRD等方法都要好上一大截,而且在不同模型架構上都有效。
04
總結
知識蒸餾是計算機視覺中一個很有趣的問題,之前的方法都是從如何更好的利用好teacher的信息出發,將teacher和student相同層的信息利用起來,而knowledge review進一步引入溫故知新的思想,將teacher的信息利用到了極致。但是知識蒸餾仍然存在著超參敏感的問題,后續或許可以結合一些self-supervised的方法像之前的CRD,或者通過一些特殊的設計來增強知識蒸餾的穩定性,這可能是知識蒸餾發揮實用價值當務之急的事情。
Reference
paper鏈接: https://jiaya.me/papers/kdreview_cvpr21.pdf
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:總結
以上是生活随笔為你收集整理的【论文解读】Knowledge Review:知识蒸馏新解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pptv如何绑定邮箱账号
- 下一篇: win7系统应用程序安装不了的解决教程