成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從入門到放棄:深度學習中的模型蒸餾技術

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

[[321813]]

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

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

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

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

截止到2019年11月23日,Hinton等人的KD[2]已經被引用2489次。看看近5年,KD發生了什么變化?

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

圖1:基于提示的學習

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

圖2:注意力圖

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

圖3:蒸餾Faster R-CNN

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

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

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

圖4:FSP矩陣

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

圖5:Contrastive Representation Distillation的三個應用場景

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

圖6:助教知識蒸餾TAKD

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

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

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

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

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

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

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

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

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

(ICLR 2018) Apprentice 學徒[24]利用KD技術提升低精度網絡的分類性能,結合量化和蒸餾兩種技術。引入量化,那么教師網絡就是高精度網絡,并且帶非量化參數,而學徒網絡就是低精度網絡,帶量化參數。

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

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

圖8:結構化知識蒸餾

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

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

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

 

責任編輯:龐桂玉 來源: 深度學習這件小事
相關推薦

2024-07-19 08:00:00

深度學習知識蒸餾

2019-07-02 14:17:18

API網關網關流量

2017-03-25 20:30:15

2025-04-22 02:00:00

芯片晶圓光刻機

2017-12-25 11:15:06

JavaArray數組

2020-07-07 10:50:19

Python丄則表達文本

2017-07-11 10:19:24

淺層模型機器學習優化算法

2022-01-17 08:52:32

CPUCPU工具顯卡

2018-01-26 14:35:16

程序員入門經歷

2019-02-13 19:20:12

人臉識別深度學習人工智能

2019-12-27 16:20:35

人臉識別深度學習人工智能

2021-11-08 07:11:49

決策樹數據分類器

2016-08-03 16:01:47

GitLinux開源

2022-03-28 11:00:34

JVMJava對象

2021-02-06 22:10:12

宏定義處理器代碼

2017-05-09 08:48:44

機器學習

2017-03-10 12:16:46

機器學習

2017-08-30 09:20:47

深度學習語音合成Siri

2021-05-11 11:08:37

電腦病毒軟件

2021-08-02 06:49:46

Flutter Router安全
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人艹人人爽 | 成人三级av| 高清亚洲 | 国产在线视频在线观看 | 亚洲精品一区中文字幕 | 成人免费视频网站在线看 | 天堂三级| 午夜免费网站 | 久久99深爱久久99精品 | 美女视频一区 | 欧美成人第一页 | 视频一区二区中文字幕 | 罗宾被扒开腿做同人网站 | 亚洲狠狠爱一区二区三区 | www成人啪啪18| 精品一二三| 国产成人精品999在线观看 | 欧美成人二区 | 久久这里只有 | 久久精品亚洲 | 亚洲精品久| 伊人手机在线视频 | 欧美久久久久久久 | 国产免费让你躁在线视频 | 亚洲欧美在线观看 | 国产精品18久久久久久白浆动漫 | 99国产视频 | 亚洲午夜在线 | 国产一级在线 | 四虎成人在线播放 | 国产一区二区不卡 | 亚洲综合在线视频 | 91福利在线观看视频 | 日韩毛片中文字幕 | 殴美成人在线视频 | 成人一区二区电影 | 五十女人一级毛片 | 99精品久久久久久中文字幕 | 国产一级精品毛片 | 欧美淫片 | 久亚州在线播放 |