論文標題:《Learning with Privileged Information for Efficient Image Super-Resolution》 ECCV-2020
作者信息:Wonkyung Lee, Junghyup Lee, Dohyung Kim, Bumsub Ham ——Yonsei University
關鍵詞:Privileged information, knowledge distillation, mutual information
第一部分:知識蒸餾的回顧
一、蒸餾的基本形式與說明
將教師網絡的知識蒸餾到學生網絡中去(用一個教師網絡去指導學生網絡)
其中教師網絡是一個效果比較好(比如分類的正確率比較高),但參數量大,計算成本高的網絡;
學生網絡是一個比較小的網絡;
如果單單只用學生網絡去學習、去訓練,那么它的訓練效果不是很好,因為其表征能力有限;而用了教師網絡來指導,可以提升學生網絡的模型效果;
知識蒸餾的目的是節省計算與存儲成本。
二、軟標簽蒸餾——《Distilling the Knowledge in a Neural Network》
該論文是Hinton大神在2015年發表的,可以認為是知識蒸餾的開山之作。
在本論文中,學生網絡不僅要跟真實數據標簽(硬標簽)作比較,而且要和教師網絡的輸出(軟標簽)做比較。
1、為什么要用軟標簽?
a.soft target可作為一個正則化項,去約束student network中參數的分布;
b.原本的數據的標簽是離散的(一張圖准確對應一個類標),而soft target把類別之間的關聯性給出了。(可以想象成是一種label augmentation)
2、標簽軟化
在原本的softmax中,增加了溫度系數T,可以讓教師網絡的輸出更加平滑;
比如原本是(0.01, 0.03, 0.96),變成(0.2,0.3,0.5);
3為什么要用溫度系數?
a.小概率結果對損失函數的貢獻微乎其微。解決的方法無非是:在計算損失函數時放大其他類的概率值所對應的損失值;
b.使得類與類之間的關聯信息更明顯;
二、特征蒸餾——《FitNets Hints for Thin Deep Nets》
該論文是2015年發表在ICLR上的,算是對軟標簽蒸餾的擴展;
在該論文發表時,ResNet還沒有問世,訓練一些深層的網絡是一件很困難的事情;
1、論文的主要idea
該論文的主要想法是學生網絡采用一個更窄(卷積核小)但更深(卷積層多)的網絡結構,稱為FitNet,然后用教師網絡的特征參數去指導學生網絡的特征參數;
2、FitNets的訓練過程
step1:按常規方法講教師網絡訓練好;
step2:使用hint損失函數(作特征蒸餾),讓學生網絡guided層的輸出去擬合教師網絡hint層的輸出;
由於hint層和guided層的維度、大小並不匹配,於是在二者之間添加一個回歸器;
第一項表示教師網絡輸入x后,到hint層的輸出;后一項是學生網絡的,但多一個回歸器及回歸器的參數;
step3:用軟標簽+硬標簽完整地訓練學生網絡。
三、知識蒸餾究竟在做什么?
傳統的損失函數:(第一項是模型結果與真實值的誤差,通常用平均絕對值或交叉熵;后一項是正則化項)
軟標簽損失函數:(第一項是模型結果與真實值的誤差,第二項是模型結果與軟標簽的誤差)
a.如果我們講兩個損失函數對應起來,軟標簽可視作一個正則化項,去約束學生網絡中的特征參數;
b.而上面的特征蒸餾更是直接地讓教師網絡的特征對學生網絡的特征參數進行約束;
c.蒸餾,就是讓學生網絡去學校教師網絡特征參數的分布,去尋找學生網絡特征參數與教師網絡特征參數之間的映射關系。
第二部分:《Learn with privileged information for efficient image super-resolution》
四、標題中的privileged information是什么?
直譯是特權信息,也叫附加、額外信息,是教師網絡中,用以輔組學生網絡訓練的信息。
論文原文:a teacher to make use of extra (privileged) information at training time, and assisting the training processof a student network with the complementary knowledge;
直觀理解:在課堂學習(訓練階段)時,我們做一道題,不僅僅有它的正確答案,而且會有老師給我們解釋其中的來龍去脈,這里“教師的解釋”就是privilege information。
五、論文中所提出框架的概覽
六、教師網絡
a.沙漏前端(Encoder)用以提取HR圖的緊湊特征;
b.沙漏后端(Decoder)使用FSRCNN*模型,利用提取到的特征去重建HR圖像;
c.為了避免Encoder得表征能力過強,同時也是為了利於學生網絡學習,在教師網絡的中間使用模仿損失函數(Imitation loss)去約束Encoder;
d.重建損失函數(Reconstruction loss)用以計算重建的圖像與原圖的差距;
e.模仿損失與重建損失聯合起來,可以讓網絡中間提取的特征在‘利於重建’與‘利於學生學習’之間達到一個平衡。
*FSRCNN出自《Accelerating the Super-Resolution Convolutional Neural Networks》(ECCV 2016)
七、學生網絡
a.學生網絡的結構與教師網絡的Decoder模塊一致,使用FSRCNN模型;
b.蒸餾損失函數(Distillation loss)用以學習教師網絡Decoder模塊中參數分布;
c.重建損失函數(Reconstruction loss)用以計算重建的圖像與原圖的差距;
d.蒸餾損失與重建損失聯合起來,可以讓學生網絡在模仿教師網絡的同時,也根據自身情況微調。
八、蒸餾損失函數如何設計?
本文使用VID的方法,其出發點是最大化教師網絡和學生網絡對應層的信息熵之間的互信息。
1、什么是互信息?
a.互信息:是兩個隨機變量間相互依賴性的度量,即當知道了其中一方之后,另一方的不確定性減少的量,用I(X,Y)表示。
b.兩個隨機變量之間的互信息越大,表明二者之間的關系越強。
c.相對於相關系數,互信息可以捕捉到變量之間非線性的統計相關性。
2、VID方法:
H(t)是教師網絡某一層特征的信息熵,H(s)是學生網絡某一層特征的信息熵;
H(t|s)表示當知道了學生網絡的特征信息之后,教師網絡的特征信息熵的減少,當H(t|s)越小則互信息越大(請從上面的韋恩圖理解)。
但是,在蒸餾的過程中,學生網絡的特征參數是不斷變化的,所以計算p(t|s)是很困難的。
於是,本文采用VID*方法,使用一個概率分布q(t|s)去模擬p(t|s),也就是本文中的蒸餾損失函數。
*VID方法出自《Variational Information Distillation for Knowledge Transfer》 CVPR 2019
在教師網絡訓練完成后,H(t)也就固定下來了,視作一個常數;同時,logq(t|s)和q(t|s)的單調性一樣,所以只需要模擬q(t|s)
3、蒸餾損失函數
4、為什么要用這樣的分布去模擬?
可以看到蒸餾損失函數的第二項和拉普拉斯分布中e的指數是一致的(而指數和該整個式子的單調性一致),可以認為VID方法用拉普拉斯分布去模擬p(t|s)。
由於訓練過程學生網絡的特征參數是不斷變化的,按照中心極限定理,它們總和的平均,就是高斯或者近高斯的。
高斯分布和拉普拉斯分布很像,該論文也嘗試了用高斯分布去模擬。
九、再看論文中所提出框架
十、消融實驗
十一、測試表現
可以從下表看到,該論文提出的蒸餾方法可以有效地提高FSRCNN的表現,但與其他大容量的模型,還是有一定差距。
十二、其他學生網絡
該論文還使用VDSR、IDN、CARN作Decoder和學生網絡去蒸餾,效果均有提升。