自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從入門到放棄:深度學(xué)習(xí)中的模型蒸餾技術(shù)

人工智能 深度學(xué)習(xí)
模型蒸餾在自然語言處理、計算機視覺和語音識別等領(lǐng)域均有廣泛研究,這篇閱讀筆記只包括與計算機視覺相關(guān)的部分論文。

[[321813]]

本文的部分內(nèi)容來自博文鏈接[1],也補充了一些自己閱讀到的論文。模型蒸餾在自然語言處理、計算機視覺和語音識別等領(lǐng)域均有廣泛研究,這篇閱讀筆記只包括與計算機視覺相關(guān)的部分論文。

模型壓縮和加速四個技術(shù)是設(shè)計高效小型網(wǎng)絡(luò)、剪枝、量化和蒸餾[2]。蒸餾,就是知識蒸餾,將教師網(wǎng)絡(luò)(teacher network)的知識遷移到學(xué)生網(wǎng)絡(luò)(student network)上,使得學(xué)生網(wǎng)絡(luò)的性能表現(xiàn)如教師網(wǎng)絡(luò)一般。我們就可以愉快地將學(xué)生網(wǎng)絡(luò)部署到移動手機和其它邊緣設(shè)備上。通常,我們會進行兩種方向的蒸餾,一種是from deep and large to shallow and small network,另一種是from ensembles of classifiers to individual classifier。

在2015年,Hinton等人[2]首次提出神經(jīng)網(wǎng)絡(luò)中的知識蒸餾(Knowledge Distillation, KD)技術(shù)/概念。較前者的一些工作[3-4],這是一個通用而簡單的、不同的模型壓縮技術(shù)。具體而言,第一,與Bucilua等人的工作[3]相比,Hinton等人的工作利用的是教師網(wǎng)絡(luò)或集成網(wǎng)絡(luò)(很多個教師網(wǎng)絡(luò))的輸出logits,而前者使用復(fù)雜的集成系統(tǒng)(SVMs, bagged trees, boosted trees等10種基學(xué)習(xí)器)去預(yù)測通過MUNGE生成的偽數(shù)據(jù),獲取偽標(biāo)簽,然后用這些帶有偽標(biāo)簽的偽數(shù)據(jù)和原始訓(xùn)練數(shù)據(jù)去訓(xùn)練快速、小型網(wǎng)絡(luò),達到“壓縮”目的,特別地,模型大小可壓縮100倍到10萬倍,執(zhí)行速度可加速100倍到1萬倍;第二,與Li等人的工作[4]相比,Hinton等人的工作使用不同的temperature,充分利用了教師網(wǎng)絡(luò)輸出的小logits,而前者使用1的temperature,另外蒸餾模型效果不佳。Ba和Caruana的工作[5]首次使用logits作為目標(biāo),而不是概率值作為目標(biāo),這啟發(fā)了KD。我們通常將這種分類任務(wù)中,低概率類別與高概率類別的關(guān)系,稱之為暗知識(dark knowledge)。

知識蒸餾[2]的原理,簡單而言,第一,利用大規(guī)模數(shù)據(jù)訓(xùn)練一個教師網(wǎng)絡(luò);第二,利用大規(guī)模數(shù)據(jù)訓(xùn)練一個學(xué)生網(wǎng)絡(luò),這時候的損失函數(shù)由兩部分組成:一部分是拿教師和學(xué)生網(wǎng)絡(luò)的輸出logits計算蒸餾損失/KL散度,見[2]中的(4)式,一部分是拿學(xué)生網(wǎng)絡(luò)的輸出和數(shù)據(jù)標(biāo)簽計算交叉熵?fù)p失。Hinton等人的工作以手寫數(shù)字識別和語音識別為例,驗證了上述蒸餾的有效性,蒸餾模型確實獲得了如教師網(wǎng)絡(luò)一般的泛化能力。

截止到2019年11月23日,Hinton等人的KD[2]已經(jīng)被引用2489次??纯唇?年,KD發(fā)生了什么變化?

(ICLR 2015) FitNets Romero等人的工作[6]不僅利用教師網(wǎng)絡(luò)的最后輸出logits,還利用它的中間隱層參數(shù)值(intermediate representations),訓(xùn)練學(xué)生網(wǎng)絡(luò),獲得又深又細(xì)的FitNets。前者是KD的內(nèi)容,后者是作者提出的hint-based training,如圖1所示。因為教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的的輸出特征圖大小不一,通常是提供hint的特征圖較大(圖1中間綠色框的輸出),而被guided的特征圖(圖1中間紅色框的輸出)較小,作者引入基于卷積的回歸器使得特征圖大小一致。因為輸入是一樣的,要求輸出盡可能相似,那么中間隱層參數(shù)值會盡可能相似。

圖1:基于提示的學(xué)習(xí)

(ICLR 2017) Paying More Attention to Attention Zagoruyko和Komodakis提出用注意力去做知識遷移[7],具體而言,用的是activation-based和gradient-based空間注意力圖,如圖2所示。activation-based空間注意力圖,構(gòu)造一個映射函數(shù)F,其輸入是三維激活值張量,輸出是二維空間注意力圖。這樣的映射函數(shù)F,作者給了三種,并且都是有效的。gradient-based空間注意力圖使用的是Simonyan et al.的工作[8],即輸入敏感圖。簡單而言,KD希望教師和學(xué)生網(wǎng)絡(luò)的輸出概率分布類似,而Paying More Attention to Attention希望教師和學(xué)生網(wǎng)絡(luò)的中間激活和原始RGB被激活區(qū)域類似。兩種知識遷移的效果可以疊加。

圖2:注意力圖

(NIPS 2017) Learning Efficient Object Detection Models Chen等人的工作[9]使用KD[2]和hint learning[6]兩種方法,將教師Faster R-CNN的知識遷移到學(xué)生Faster R-CNN上,如圖3所示,針對物體檢測,作者將原始KD的交叉熵?fù)p失改為類別加權(quán)交叉熵?fù)p失解決分類中的不平衡問題;針對檢測框回歸,作者使用教師回歸損失作為學(xué)生回歸損失的upper bound;針對backbone的中間表示,作者使用hint learning做特征適應(yīng)。二階段檢測器比起一階段檢測器和anchor-free檢測器較復(fù)雜,相信KD在未來會被用于一階段和anchor-free檢測器。這篇文章為物體檢測和知識蒸餾的結(jié)合提供了實踐經(jīng)驗。

圖3:蒸餾Faster R-CNN

(arXiv 2017) TuSimple之Neuron Selectivity Transfer NST[10]使用Maximum Mean Discrepancy去做中間計算層的分布匹配。

(AAAI 2018) TuSimple之DarkRank DarkRank[11]認(rèn)為KD使用的知識來自單一樣本,忽略不同樣本間的關(guān)系。因此,作者提出新的知識,該知識來自跨樣本相似性。驗證的任務(wù)是person re-identification、image retrieval。

(CVPR 2017) A Gift from Knowledge Distillation Yim等人的工作[12]展示了KD對于以下三種任務(wù)有幫助:1、網(wǎng)絡(luò)快速優(yōu)化,2、模型壓縮,3、遷移學(xué)習(xí)。作者的知識蒸餾方法是讓學(xué)生網(wǎng)絡(luò)的FSP矩陣(the flow of solution procedure)和教師網(wǎng)絡(luò)的FSP矩陣盡可能相似。FSP矩陣是指一個卷積網(wǎng)絡(luò)的兩層計算層結(jié)果(特征圖)的關(guān)系,如圖4所示,用Gramian矩陣去描述這種關(guān)系。教師網(wǎng)絡(luò)的“知識”以數(shù)個FSP矩陣的形式被提取出來。最小化教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的FSP矩陣,知識就從教師蒸餾到學(xué)生。作者的實驗證明這種知識遷移方法比FitNet的好。

圖4:FSP矩陣

(arXiv 2019) Contrastive Representation Distillation (CRD) Tian等人的工作[13]指出原始KD適合網(wǎng)絡(luò)輸出為類別分布的情況,不適合跨模態(tài)蒸餾(cross-modal distillation)的情況,如將圖像處理網(wǎng)絡(luò)(處理RGB信息)的表示/特征遷移到深度處理網(wǎng)絡(luò)(處理depth信息),因為這種情況是未定義KL散度的。作者利用對比目標(biāo)函數(shù)(contrastive objectives)去捕捉結(jié)構(gòu)化特征知識的相關(guān)性和高階輸出依賴性。contrastive learning簡而言之就是,學(xué)習(xí)一個表示,正配對在某metric space上離得近些,負(fù)配對離得遠些。CRD適用于如圖5的三種具體應(yīng)用場景中,其中模型壓縮和集成蒸餾是原始KD適用的任務(wù)。這里說一些題外話,熟悉域適應(yīng)的同學(xué),肯定知道像素級適應(yīng)(CycleGAN),特征級適應(yīng)和輸出空間適應(yīng)(AdaptSegNet)是提升模型適應(yīng)目標(biāo)域數(shù)據(jù)的三個角度。原始KD就是輸出空間蒸餾,CRD就是特征蒸餾,兩者可以疊加適使用。

圖5:Contrastive Representation Distillation的三個應(yīng)用場景

(arXiv 2019) Teacher Assistant Knowledge Distillation (TAKD) Mirzadeh S-I等人的工作[14]指出KD并非總是effective。當(dāng)教師網(wǎng)絡(luò)與學(xué)生網(wǎng)絡(luò)的模型大小差距太大的時候,KD會失效,學(xué)生網(wǎng)絡(luò)的性能會下降【這一點需要特別注意】。作者在教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)之間,引入助教網(wǎng)絡(luò),如圖6所示。TAKD的原理,簡單而言,教師網(wǎng)絡(luò)和助教網(wǎng)絡(luò)之間進行知識蒸餾,助教網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)之間再進行知識蒸餾,即多步蒸餾(multi-step knowledge distillation )。

圖6:助教知識蒸餾TAKD

(ICCV 2019) On the Efficacy of Knowledge Distillation Cho和Hariharan的工作[15]關(guān)注KD的有效性,得到的結(jié)論是:教師網(wǎng)絡(luò)精度越高,并不意味著學(xué)生網(wǎng)絡(luò)精度越高。這個結(jié)論和Mirzadeh S-I等人的工作[14]是一致的。mismatched capacity使得學(xué)生網(wǎng)絡(luò)不能穩(wěn)定地模仿教師網(wǎng)絡(luò)。有趣的是,Cho和Hariharan的工作認(rèn)為上述TAKD的多步蒸餾并非有效,提出應(yīng)該采取的措施是提前停止教師網(wǎng)絡(luò)的訓(xùn)練。

(ICCV 2019) A Comprehensive Overhaul of Feature Distillation Heo等人的工作[16]關(guān)注特征蒸餾,這區(qū)別于Hinton等人的工作:暗知識或輸出蒸餾。隱層特征值/中間表示蒸餾從FitNets開始。這篇關(guān)注特征蒸餾的論文遷移兩種知識,第一種是after ReLU之后的特征響應(yīng)大小(magnitude);第二種是每一個神經(jīng)元的激活狀態(tài)(activation status)。以ResNet50為學(xué)生網(wǎng)絡(luò),ResNet152為教師網(wǎng)絡(luò),使用作者的特征蒸餾方法,學(xué)生網(wǎng)絡(luò)ResNet50(student)從76.16提升到78.35,并超越教師網(wǎng)絡(luò)ResNet152的78.31(Top-1 in ImageNet)。另外,這篇論文在通用分類、檢測和分割三大基礎(chǔ)任務(wù)上進行了實驗。Heo等人先前在AAAI2019上提出基于激活邊界(activation boundaries)的知識蒸餾[17]。

(ICCV 2019) Distilling Knowledge from a Deep Pose Regressor Network Saputra等人的工作[18]對用于回歸任務(wù)的網(wǎng)絡(luò)進行知識蒸餾有一定的實踐指導(dǎo)價值。

(arXiv 2019) Route Constrained Optimization (RCO) Jin和Peng等人的工作[19]受課程學(xué)習(xí)(curriculum learning)啟發(fā),并且知道學(xué)生和老師之間的gap很大導(dǎo)致蒸餾失敗,提出路由約束提示學(xué)習(xí)(Route Constrained Hint Learning),如圖7所示。簡單而言,我們訓(xùn)練教師網(wǎng)絡(luò)的時候,會有一些中間模型即checkpoints,RCO論文稱為anchor points,這些中間模型的性能是不同的。因此,學(xué)生網(wǎng)絡(luò)可以一步一步地根據(jù)這些中間模型慢慢學(xué)習(xí),從easy-to-hard。另外,這篇論文在開集人臉識別數(shù)據(jù)集MegaFace上做了實驗,以0.8MB參數(shù),在1:10^6任務(wù)上取得84.3%準(zhǔn)確率。

圖7:路由約束提示學(xué)習(xí)(Route Constrained Hint Learning)

(arXiv 2019) Architecture-aware Knowledge Distillation (AKD) Liu等人的工作[20]指出給定教師網(wǎng)絡(luò),有最好的學(xué)生網(wǎng)絡(luò),即不僅對教師網(wǎng)絡(luò)的權(quán)重進行蒸餾,而且對教師網(wǎng)絡(luò)的結(jié)構(gòu)進行蒸餾從而得到學(xué)生網(wǎng)絡(luò)。(Rethinking the Value of Network Pruning這篇文章也指出剪枝得到的網(wǎng)絡(luò)可以從頭開始訓(xùn)練,取得不錯的性能,表明搜索/剪枝得到的網(wǎng)絡(luò)結(jié)構(gòu)是挺重要的。)

(ICML 2019) Towards Understanding Knowledge Distillation Phuong和Lampert的工作[21]研究線性分類器(層數(shù)等于1)和深度線性網(wǎng)絡(luò)(層數(shù)大于2),回答了學(xué)生模型在學(xué)習(xí)什么?(What Does the Student Learn?),學(xué)生模型學(xué)習(xí)得多?(How Fast Does the Student Learn?),并從Data Geometry,Optimiation Bias,Strong Monotonicity(單調(diào)性)三個方面解釋蒸餾為什么工作?(Why Does Distillation Work)。數(shù)學(xué)夠好的同學(xué)可以去閱讀該論文。

(ICLR 2016) Unifying Distillation and Privileged Information Lopez-Paz等人的工作[22]聯(lián)合了兩種使得機器之間可以互相學(xué)習(xí)的技術(shù):蒸餾和特權(quán)信息,提出新的框架廣義蒸餾(generalized distillation)。是一篇從理論上解釋蒸餾的論文。

(ICML 2018) Born-Again Neural Networks (BANs) BANs不算模型壓縮,因為學(xué)生模型容量與教師模型容量相等。但是Furlanello等人[23]發(fā)現(xiàn)以KD的方式去訓(xùn)練模型容量相等的學(xué)生網(wǎng)絡(luò),會超越教師網(wǎng)絡(luò),稱這樣的學(xué)生網(wǎng)絡(luò)為大師網(wǎng)絡(luò)。這一發(fā)現(xiàn)真讓人驚訝!與Hinton理解暗知識不同,BANs的作者Furlanello等人,認(rèn)為軟目標(biāo)分布起作用,是因為它是重要性采樣權(quán)重。

(ICLR 2018) Apprentice 學(xué)徒[24]利用KD技術(shù)提升低精度網(wǎng)絡(luò)的分類性能,結(jié)合量化和蒸餾兩種技術(shù)。引入量化,那么教師網(wǎng)絡(luò)就是高精度網(wǎng)絡(luò),并且?guī)Х橇炕瘏?shù),而學(xué)徒網(wǎng)絡(luò)就是低精度網(wǎng)絡(luò),帶量化參數(shù)。

(ICLR 2018) Model Compression via Distillation and Quantization 這個工作[25]同Apprentice類似,希望獲得淺層和量化的小型網(wǎng)絡(luò),結(jié)合量化和蒸餾兩種技術(shù)。

(CVPR 2019) Structured Knowledge Distillation Liu等人的工作[26-27]整合了暗知識的逐像素蒸餾(pixel-wise distillation)、馬爾科夫隨機場的逐配對/特征塊蒸餾(pair-wise distillation)和有條件生成對抗網(wǎng)絡(luò)的整體蒸餾(holistic distillation),如圖8所示,用于密集預(yù)測任務(wù):語義分割、深度估計和物體檢測。

圖8:結(jié)構(gòu)化知識蒸餾

(arXiv 2019) xxx Li等人的工作[28]。

(arXiv 2019) xxx Kim等人的工作[29]。

在模型壓縮中,因為模型蒸餾可以用于任意網(wǎng)絡(luò)(從大網(wǎng)絡(luò)到小網(wǎng)絡(luò),從循環(huán)網(wǎng)絡(luò)到卷積網(wǎng)絡(luò),從集成網(wǎng)絡(luò)到單一網(wǎng)絡(luò)等),極其吸引人,所以被廣泛研究,并應(yīng)用于具體的視覺計算任務(wù)之中。天下沒有免費的午餐,蒸餾的一些“坑”也逐漸被試探和發(fā)現(xiàn)出來,對應(yīng)用蒸餾技術(shù)提供了一些寶貴經(jīng)驗。知識蒸餾背后的原理,也被開始研究了??傊?,從簡單理論到具體應(yīng)用,蒸餾有著很多研究和實踐,大家不妨一試。其它一些有用的原理介紹和論文解讀,大家在知乎搜索“知識蒸餾”就可以學(xué)習(xí)了。 

 

責(zé)任編輯:龐桂玉 來源: 深度學(xué)習(xí)這件小事
相關(guān)推薦

2024-07-19 08:00:00

深度學(xué)習(xí)知識蒸餾

2019-07-02 14:17:18

API網(wǎng)關(guān)網(wǎng)關(guān)流量

2017-03-25 20:30:15

2025-04-22 02:00:00

芯片晶圓光刻機

2020-07-07 10:50:19

Python丄則表達文本

2017-12-25 11:15:06

JavaArray數(shù)組

2017-07-11 10:19:24

淺層模型機器學(xué)習(xí)優(yōu)化算法

2022-01-17 08:52:32

CPUCPU工具顯卡

2018-01-26 14:35:16

程序員入門經(jīng)歷

2019-02-13 19:20:12

人臉識別深度學(xué)習(xí)人工智能

2019-12-27 16:20:35

人臉識別深度學(xué)習(xí)人工智能

2021-11-08 07:11:49

決策樹數(shù)據(jù)分類器

2016-08-03 16:01:47

GitLinux開源

2022-03-28 11:00:34

JVMJava對象

2017-05-09 08:48:44

機器學(xué)習(xí)

2017-03-10 12:16:46

機器學(xué)習(xí)

2021-02-06 22:10:12

宏定義處理器代碼

2017-08-30 09:20:47

深度學(xué)習(xí)語音合成Siri

2021-05-11 11:08:37

電腦病毒軟件

2021-08-02 06:49:46

Flutter Router安全
點贊
收藏

51CTO技術(shù)棧公眾號