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