Knowledge Distillation
背景
知識(shí)蒸餾(KD)是想將復(fù)雜模型(teacher)中的dark knowledge遷移到簡(jiǎn)單模型(student)中去朱嘴,一般來(lái)說(shuō)尸诽,teacher具有強(qiáng)大的能力和表現(xiàn)矫废,而student則更為緊湊腾供。通過(guò)知識(shí)蒸餾澳窑,希望student能盡可能逼近亦或是超過(guò)teacher钠怯,從而用更少的復(fù)雜度來(lái)獲得類似的預(yù)測(cè)效果。Hinton在Distilling the Knowledge in a Neural Network中首次提出了知識(shí)蒸餾的概念凭迹,通過(guò)引入teacher的軟目標(biāo)(soft targets)以誘導(dǎo)學(xué)生網(wǎng)絡(luò)的訓(xùn)練罚屋。近些年來(lái)出現(xiàn)了許多知識(shí)蒸餾的方法,而不同的方法對(duì)于網(wǎng)絡(luò)中需要transfer的dark knowledge的定義也各不相同蕊苗。
論文
1. Do Deep Nets Really Need to be Deep? 【NIPS2014】
動(dòng)機(jī)
shallow net在參數(shù)較少或者一樣的情況下能否和deep net達(dá)到相近的效果沿后?
方法
1)softmax的輸入是logits沿彭、輸出是probability朽砰,文中提出訓(xùn)練shallow net的時(shí)候使用deep net的logits作為label,Hinton稱之為logit匹配喉刘。
2)訓(xùn)練shallow net時(shí)在logits上使用L2 Loss監(jiān)督訓(xùn)練瞧柔。
思考
1)deep net更robust,可以對(duì)一些錯(cuò)誤樣本進(jìn)行矯正睦裳,使shallow net學(xué)習(xí)更容易造锅;同時(shí) deep net學(xué)習(xí)能力更強(qiáng),可以學(xué)習(xí)一些比較難的任務(wù)廉邑,并將其轉(zhuǎn)換成更加容易的soft label給小模型進(jìn)行學(xué)習(xí)哥蔚。
2)為什么不使用probability作為標(biāo)簽?zāi)兀?/p>
假如[2e-9, 4e-5, 0.9999]是softmax的三個(gè)probability,用這個(gè)作為shallow net的目標(biāo)蛛蒙,因?yàn)楦鱾€(gè)probability之間的差異太大糙箍,容易使shallow net注意力集中在較大的probability上,忽略值較小的probability牵祟。并且不同的logits通過(guò)softmax之后可能會(huì)有相近的表達(dá)深夯,因此差別會(huì)被縮小,如[-10, 0, 10]和[10, 20, 30]诺苹,顯然模型對(duì)兩者的特征表達(dá)是大不相同的咕晋。
3)logits比hard label包含更豐富的信息,其中包含deep net本身的知識(shí)提煉收奔。
2. Distilling the Knowledge in a Neural Network【NIPS2015】(Hinton系統(tǒng)詮釋蒸餾)
動(dòng)機(jī)
ensemble模型部署代價(jià)太高掌呜,直接訓(xùn)練小模型效果不夠
方法
該方法采用softmax層內(nèi)特征匹配的策略,其本質(zhì)是使用softmax的輸出作為監(jiān)督坪哄,但為了使得到的得分vector更soft质蕉,在softmax層加上了蒸餾溫度T呢撞,使蒸餾的性能提升。
步驟:
1)在T=1訓(xùn)練teacher;
2)在高溫下利用teacher softmax的輸出概率作為soft label饰剥,與hard label進(jìn)行融合來(lái)監(jiān)督student殊霞,對(duì)兩者的loss進(jìn)行加權(quán)。
3. FITNETS:Hints for Thin Deep Nets【ICLR2015】
動(dòng)機(jī)
deep是DNN主要的功效來(lái)源汰蓉,之前的工作都是用較淺的網(wǎng)絡(luò)作為student net绷蹲,這篇文章的主題是如何mimic一個(gè)更深但是比較小的網(wǎng)絡(luò)。
方法
使用的方法直覺(jué)上來(lái)講也是直接的:既然網(wǎng)絡(luò)很深直接訓(xùn)練會(huì)很困難顾孽,那就通過(guò)在中間層加入loss的方法祝钢,通過(guò)學(xué)習(xí)teacher中間層feature map來(lái)transfer中間層表達(dá)的知識(shí),文章中把這個(gè)方法叫做Hint-based Training若厚。
訓(xùn)練分為兩個(gè)stage:
stage1(Hints Training): 選取teacher的中間層作為guidance拦英,對(duì)student的中間層進(jìn)行監(jiān)督學(xué)習(xí),通常兩者的維度不一樣测秸,所以需要一個(gè)額外的線性矩陣或卷積層去進(jìn)行維度變換疤估,達(dá)到維度一致,然后使用L2 Loss進(jìn)行監(jiān)督霎冯。
stage2(Knowledge Distillation): 采用論文2中KD對(duì)整個(gè)student進(jìn)行知識(shí)遷移铃拇。
結(jié)果
1)小而深的網(wǎng)絡(luò)可以達(dá)到比teacher更好的效果,并且在參數(shù)量28分之一的前提下沈撞,效果高于論文2中的方法慷荔;
2)作者做了其他實(shí)驗(yàn):通過(guò)深度監(jiān)督(添加額外的中間層直接進(jìn)行分類的loss)去學(xué)習(xí)一個(gè)小而深的網(wǎng)絡(luò),發(fā)現(xiàn)無(wú)法正常學(xué)習(xí)缠俺。因此作者得出結(jié)論:添加teacher中間層的特征作為student學(xué)習(xí)對(duì)象能夠幫助其學(xué)習(xí)一個(gè)deeper的網(wǎng)絡(luò)显晶,而直接使用hard targets的分類信號(hào)去監(jiān)督中間層則難以起到幫助核偿。
4. Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer【ICLR2017】
動(dòng)機(jī)
將feature map作為知識(shí)直接從teacher transfer到student過(guò)于生硬往果,效果不佳。因此辣卒,文章提出將attention map作為知識(shí)從teacher transfer到student墓卦,希望讓student關(guān)注teacher所關(guān)注的區(qū)域倦春。
方法
文章中attention map定義如下:,即將feature map不同通道的feature plane取絕對(duì)值進(jìn)行power操作然后相加落剪,拉近teacher和student的attention map之間的歐式距離睁本。attention map可以看作全激活feature map的summary,因此會(huì)比直接transfer feature map效果好忠怖。
5. A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning【CVPR2017】
動(dòng)機(jī)
過(guò)去的知識(shí)蒸餾均是利用soft targets或者利用中間特征做hint來(lái)進(jìn)行知識(shí)的transfer呢堰,本文提出:神經(jīng)網(wǎng)絡(luò)的知識(shí)在于如何解決從一個(gè)輸入到輸出的映射,是一個(gè)從輸入到輸出的一個(gè)feature flow(即層與層之間的特征關(guān)系)凡泣,teacher要將這個(gè)flow transfer給student枉疼。層與層之間的特征關(guān)系更能表達(dá)一種提取的手段皮假,讓student學(xué)到這種手段更加像授人以魚不如授人以漁。
方法
文中定義了FSP Matrix矩陣來(lái)刻畫層與層之間的特征關(guān)系骂维。具體做法是:對(duì)于具有相同分辨率的特征圖惹资,低層和高層特征圖的channel兩兩做內(nèi)積,然后將結(jié)果填入FSP Matrix對(duì)應(yīng)位置航闺。FSP Matrix計(jì)算過(guò)程:
其中褪测,F(xiàn)1、F2是低層潦刃、高層特征圖侮措,h、w是特征圖的長(zhǎng)寬乖杠,i分扎、j是低層、高層特征圖的channel index胧洒,x和W是當(dāng)前的輸入和參數(shù)畏吓。
然后用L2 Loss去拉近teacher和student的FPS matrix之間的距離,定義如下:
文章采用resnet作為實(shí)驗(yàn)的backbone略荡,對(duì)teacher和student對(duì)應(yīng)的stage計(jì)算FSP Matrix庵佣,然后用L2 Loss去拉近FSP Matrix之間的距離,以達(dá)到知識(shí)遷移的目的汛兜。
6. Knowledge Distillation in Generations: More Tolerant Teachers Educate Better Students【AAAI2019】
動(dòng)機(jī)
硬標(biāo)簽會(huì)導(dǎo)致模型產(chǎn)生過(guò)擬合現(xiàn)象,soft label對(duì)于模型的泛化能力有所幫助通今。文中指出:一個(gè)更加tolerant的teacher(即使得teacher的輸出更加soft一些)粥谬,盡管在一定程度上降低了teacher的精度,但能給student更高的泛化學(xué)習(xí)的寬容度辫塌,反而能帶來(lái)student的提升漏策。常用的方法有l(wèi)abel smoothing regularization(lsr)和confidence penalty(CP)兩種方法,但其缺點(diǎn)是考慮了所有的類臼氨。本文提出了一個(gè)更合理的方法掺喻,沒(méi)有計(jì)算所有類的額外損失,而是挑選了幾個(gè)具有最高置信度分?jǐn)?shù)的類储矩。
方法
1)訓(xùn)練teacher時(shí)感耙,對(duì)teacher的loss加了一項(xiàng)約束:置信度top1和topK其余K-1個(gè)平均值之間的gap,命名為top score difference持隧。2)訓(xùn)練student時(shí)即硼,用1)得到的teacher的soft label與hard label融合;
論文中實(shí)驗(yàn)在CIFAR-100和ILSVRC2012分類數(shù)據(jù)集上漲點(diǎn)3%~8%不等屡拨。