所謂“知識精煉”我的理解就是將一個訓練好的復雜模型的“知識”遷移到一個結構更為簡單的網(wǎng)絡中社露,或者通過簡單的網(wǎng)絡去學習復雜模型中“知識”或模仿復雜模型的行為挟阻。當然“知識”的定義方式并不是唯一的,見仁見智峭弟。KD不同于遷移學習和多任務學習的地方在于它是單一任務在同一個域下的知識傳遞附鸽。隨著深度網(wǎng)絡的層數(shù)和參數(shù)的迅速增長,深度學習在實際應用中的部署越來越困難瞒瘸。因此坷备,結合KD來壓縮和加速網(wǎng)絡的推理就顯得尤為重要。目前關于KD的文章大致分為三類:
如何定義知識
outputs: logits / soften probability
《Distilling the knowledge in a neural networks》
知識精煉方法最早可以追溯到2006年的這篇文章情臭,作者的做法是用小網(wǎng)絡去擬合復雜網(wǎng)絡的logits省撑。Hinton在這個工作的基礎上做了改進赌蔑,他提出了soft target的做法。擬合soft target的優(yōu)點是很多的竟秫,一方面可以提供更多信息娃惯,彌補監(jiān)督信號不足的問題;另一方面可以恢復類內variance和類間distance肥败。其本質是打散原來壓縮到了一個點的監(jiān)督信息趾浅,讓小模型的輸出盡量match 復雜模型的輸出分布;另外soft target還可以看作一個正則項馒稍,起到防止過擬合的作用皿哨。soft target其實就是軟化的softmax,比常規(guī)的softmax多了一個溫度系數(shù)T纽谒,以達到蒸餾的目的证膨。而且當T充分大的時候,擬合soft target的做法和logits其實是等價的佛舱。文章的不足在于只將網(wǎng)絡輸出作為知識傳遞給小網(wǎng)絡的做法過于簡單椎例,teacher模型理論上是有很多知識可以傳遞給student模型的;而且這種做法只適合有softmax的分類任務请祖,并且要求類別數(shù)比較多订歪,對于二分類問題就沒有太大效果;最后一點不足是student模型不能是太深的網(wǎng)絡肆捕。-
feature map
《Fitnets: hints for thin deep nets》
本文試圖將一個復雜網(wǎng)絡的知識傳遞給一個深度更深但是參數(shù)更少的網(wǎng)絡刷晋,因為作者認為深度對于網(wǎng)絡的表達能力至關重要。訓練一個深層網(wǎng)絡的難度在于優(yōu)化慎陵,即如何克服梯度消失的問題眼虱。文章提出了intermediate-level hints的概念,即先用student模型學習teacher 模型的中間表示席纽,目的是讓student模型取得一個較好的局部最優(yōu)點作為初始參數(shù)捏悬。第二階段的訓練把整個student模型作為優(yōu)化目標,讓student模型學習teacher模型的soft targets润梯。得益于網(wǎng)絡的深度过牙,student模型的性能甚至超過teacher模型。文章的不足在于用student模型粗暴地學習teacher模型中間層的feature map纺铭,這有可能發(fā)過來影響student模型的性能和收斂寇钉,而且teacher模型和student模型的中間層的選取有很大的人為因素。《Knowledge Projection for DNN》
這篇文章的做法和fitnet的做法幾乎完全相同舶赔,兩點改變:中間層的選取上采用了迭代選擇的方案扫倡,選擇標準是聯(lián)合loss最小竟纳;teacher模型的中間輸出不只監(jiān)督student模型的底層撵溃,也被繼續(xù)利用監(jiān)督student模型的高層訓練疚鲤。 attention map
《Pay more attention to attention》
本文將attention map作為知識從teacher模型遷移到student模型。注意力機制很早就被用在NLP中缘挑,后來被證明將attention應用在CNN中也可以取得不錯的效果石咬。作者提出attention map的原因是feature map的做法太多生硬,表現(xiàn)不佳卖哎。定義attention map的做法是將feature map不同通道的feature plane取絕對值然后相加鬼悠。損失函數(shù)也做了改變,即在原損失函數(shù)的基礎上加上teacher和student模型的attention maps之間的歐氏距離亏娜。attention map的做法可以看作全激活feature map的summary焕窝,所以擬合attention map的效果略好于feature map也是容易理解的。雖然比feature map的做法有進步维贺,但是仍然存在要人為選取中間層的問題它掂。mini-batch MMD
《Like What You Like: Knowledge Distill via Neuron Selectivity Transfer》
這篇文章在attention transfer的基礎上引入了kernel trick,insight來自于風格遷移的做法溯泣,當kernel取線性核的時候attention transfer只是MMD的特例虐秋。作者之所以利用kernel trick將feature map映射到高維空間,是因為他認為attention map的做法粒度還是比較大垃沦。當kernel取二階多項式核的時候客给,根據(jù)gram矩陣的性質,feature map的channel之間的內積可以轉化為feature map空間的相關性肢簿,即讓student模型學習teacher模型的feature map通道之間的關系或者空間像素點之間的關系靶剑。具體的方法和attention transfer相同。layers relation
《Gift from Knowledge Distillation》
這篇文章定義的知識不是模型的輸出而是層與層之間的關系池充,相當于把MMD中的同一層feature map的相關性用到了不同層的feature map上桩引,這里的關系用FSP矩陣表示。因為層之間的關系相比輸出更本質收夸,更能反映網(wǎng)絡的knowledge坑匠。其中FSP矩陣(i,j)位置的值等于第i個channel和第j個channel的內積,然后讓student和teacher模型的FSP矩陣之間的距離最小卧惜。感覺這篇文章的做法不是直接學結果厘灼,而是學習得到這種結果的方法和過程,是一個不錯的思路序苏。-
gradient map
《Pay more attention to attention》
基于gradient的attention map和基于activation的attention map的思想來自于同一篇文章手幢,輸出對于輸入的梯度也反映了輸入和輸出層之間的關系捷凄,而且直接考慮輸入輸出的關系省去了很多人為選擇中間層的操作忱详。文中提到把teacher模型中l(wèi)oss對input的導數(shù)作為知識傳遞給student模型,因為loss對input的導數(shù)反映了網(wǎng)絡output的變化對于input的敏感程度跺涤,如果某個像素一個小的變化對于對于網(wǎng)絡輸出有一個大的影響匈睁,我們就可以認為網(wǎng)絡"pay attention"那個像素监透。具體做法和基于activation的attention map相同,不過這里在反傳梯度的時候相當于對student模型的input求了兩次導數(shù)航唆。《Sobolev training for neural network》
這是NIPS'17的文章胀蛮,作者提出在sobolev空間中近似兩個函數(shù),即不光match兩個函數(shù)的輸出糯钙,還match輸出對于輸入的梯度粪狼,即梯度也提供了非常豐富的信息。把teacher和student模型分別看作兩個函數(shù)任岸,采用sobolev訓練的方式比只match輸出要好很多再榄。 mini-batch rank
《DarkRank: Accelerating Deep Metric Learning via Cross Sample Similarities Transfer》
之前的工作都是考慮teacher模型和student模型的輸出以及中間結果的匹配,insight來源于Hinton的soft target享潜,即讓student模型學習teacher模型的不同樣本之間的排序關系困鸥。假設1個batch有7個樣本進來,輸出端得到7張feature map剑按,但這7張feature map是有親疏遠近關系的疾就,對于類別6, 樣本0到它的距離小于5到它的距離。換句話說艺蝴,在teacher模型中這7個樣本在類別6上的排序關系也可以作為知識傳遞給student模型猬腰。
改進學習框架
《Rocket Launching: A Universal and Efficient Framework》
這篇文章在定義知識上沒有大的創(chuàng)新,使用的仍然是logits猜敢,但是在學習框架上和之前有所不同漆诽。它不用預訓練teacher模型,而是student和teacher模型同時訓練锣枝;另外一點是共享網(wǎng)絡參數(shù)厢拭,共享一部分參數(shù)相當于火箭發(fā)射點火助推器的作用。所以student模型不是向一個已經(jīng)完全學好的teacher模型學習撇叁,每次都去學習一個相對正確的輸出供鸠,而是和teacher模型一起學習成長,連同teacher模型犯錯后糾錯的過程也一并學習了陨闹。
特定場景應用
《Mimicking Very Efficient Network for Object Detection》
在檢測任務中楞捂,直接擬合logits或者feature map都是不可行的。所以作者采用匹配proposal的做法趋厉。
《Cross Modal Distillation for Supervision Transfer》
作者提出跨模態(tài)遷移知識的做法寨闹,即在RGB數(shù)據(jù)集學習到的知識也能遷移到深度場景中來。
《Face Model Compression by Distilling Knowledge from Neurons》
人臉識別中君账,遷移的知識更具針對性繁堡,選擇特定的特征去擬合,盡量做到特征選擇的均勻性。
《Data-free knowledge distillation for deep neural networks》
這篇文章的應用場景是當訓練數(shù)據(jù)由于隱私等問題對于student模型不可用的時候椭蹄,如何通過extra metadata的方式解決闻牡。
經(jīng)典方法結合
《Learning loss for knowledge distillation with conditional adversarial networks》
這篇文章將GAN和KD做了一個結合,取得了不錯的效果绳矩。作者認為student模型的容量遠小于teacher模型罩润,讓student模型完全匹配teacher的做法有點困難,而且采用l2損失逼近的方式一定程度上限制了student模型的自主學習空間翼馆。學生網(wǎng)絡是生成器割以,判別器是一個多層感知機網(wǎng)絡,生成器和判別器迭代優(yōu)化应媚,生成器的目標是生成讓判別器無法辨別的logits拳球。某種程度上,這個工作也可以理解成對損失函數(shù)做了改進珍特。
《Using Knowledge Distillation To Improve Low-Precision Network Accuracy》
本文將KD和網(wǎng)絡量化做了一個結合祝峻,用高精度teacher模型指導低精度student模型的訓練。網(wǎng)絡參數(shù)精度下降后準確率勢必會受到影響扎筒,在獲得teacher模型的知識之后或許可以從一個壞的局部最優(yōu)點爬上來莱找。作者提出了3種思路:teacher模型和量化后的student模型聯(lián)合訓練;預訓練的teacher模型指導量化的student模型從頭開始訓練嗜桌;teacher模型和student模型均進行了預訓練奥溺,不過student模型在全精度權重基礎上做了量化,然后student在teacher模型的指導下進行finetuning骨宠。
《Moonshine: Distilling with Cheap Convolutions》
這篇工作將KD和設計輕便的網(wǎng)絡結構方法做了結合浮定。當復雜網(wǎng)絡結構被簡化的卷積模塊替換的時候,計算更加高效层亿,精度勢必受到影響桦卒。此時,將原網(wǎng)絡作為teacher模型匿又,簡化之后的網(wǎng)絡作為student模型方灾,然后通過teacher模型指導student模型的訓練。