孟憲法,劉 方,李 廣,黃萌萌
國防科技大學(xué) 自動目標識別重點實驗室,長沙 410000
近些年來,隨著數(shù)據(jù)集的豐富完善,計算單元性能的快速提升,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)憑借著強大的特征提取和表達能力,在圖像分類[1]、目標檢測[2]和語義分割[3]等計算機視覺領(lǐng)域,都獲得了顯著的應(yīng)用成效。得益于網(wǎng)絡(luò)模型的加深加巨,CNN 的眾多拓展模型在眾多任務(wù)中超越了很多傳統(tǒng)技術(shù)方法,甚至堪比人類的識別能力,可適用于廣泛的行業(yè)應(yīng)用,如智能駕駛[4-5]、智能機器人[6]、人臉識別[7]、疾病檢測[8]等。
但是注意到:通常網(wǎng)絡(luò)的性能與網(wǎng)絡(luò)的結(jié)構(gòu)復(fù)雜度成正比,網(wǎng)絡(luò)結(jié)構(gòu)越復(fù)雜模型越深越寬,網(wǎng)絡(luò)性能就越好。如表1 所示,He 等提出的ResNet-152[9]模型深度達到了152 層,參數(shù)量達到了0.6 億個,需要花費241 MB 內(nèi)存存儲,分類一幅分辨率為224×224 的彩色圖像需要115 億次浮點型計算。深度神經(jīng)網(wǎng)絡(luò)會占用大量的內(nèi)存存儲,帶來繁多的計算量,造成巨大的電量消耗,這些問題使網(wǎng)絡(luò)很難在資源受限的嵌入式設(shè)備和對實時性要求較高的移動端部署。如果能把深度神經(jīng)網(wǎng)絡(luò)進行壓縮,讓網(wǎng)絡(luò)減少對內(nèi)存存儲的消耗,就可以使網(wǎng)絡(luò)在內(nèi)存資源受限的設(shè)備上進行部署,并且輕量化的神經(jīng)網(wǎng)絡(luò)還可以實現(xiàn)運算加速,這樣在軍民應(yīng)用中都有著廣泛的拓展?jié)摿Α?/p>
Table 1 Basic information of classical convolutional neural network表1 經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)的基本信息
通常情況下,深度神經(jīng)網(wǎng)絡(luò)存在著大量的參數(shù)冗余。根據(jù)LeCun 等[10]實驗表明,深度神經(jīng)網(wǎng)絡(luò)有近一半的權(quán)重對網(wǎng)絡(luò)性能影響甚微,由此可見,深度神經(jīng)網(wǎng)絡(luò)有著很大的壓縮空間,而且過量的參數(shù)還會導(dǎo)致過擬合,使模型的泛化能力下降。研究者們已經(jīng)探索了網(wǎng)絡(luò)剪枝(network pruning)[11-13]、參數(shù)量化(parameter quantification)[14-17]、低秩分解(low-rank decomposition)[18-19]、輕量化網(wǎng)絡(luò)設(shè)計(compact structure design)[20-22]、知識蒸餾(knowledge distillation)[23-26]等方法。自AI 教父Hinton 提出了知識蒸餾技術(shù)后[23],知識蒸餾受到了研究者們的廣泛關(guān)注,并在網(wǎng)絡(luò)壓縮中展現(xiàn)了巨大的研究價值。目前網(wǎng)絡(luò)壓縮領(lǐng)域的綜述性文章[27-31]缺乏專門對知識蒸餾技術(shù)的詳細介紹,因此本文對卷積神經(jīng)網(wǎng)絡(luò)壓縮中的知識蒸餾技術(shù)進行詳細說明。
卷積神經(jīng)網(wǎng)絡(luò)是目前廣泛應(yīng)用的深度學(xué)習(xí)架構(gòu),它是一種層次模型,由用于特征提取的卷積層和用于特征處理的池化層交叉堆疊而成。卷積神經(jīng)網(wǎng)絡(luò)的輸入為一般原始數(shù)據(jù)(如RGB 圖像、原始音頻數(shù)據(jù)等),通過前饋運算來進行預(yù)測和推理,通過反饋運算來進行網(wǎng)絡(luò)參數(shù)的訓(xùn)練和學(xué)習(xí)。
VGG[32]是一種經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),它采用卷積層和池化層交叉堆疊,最后連接全連接層的層次結(jié)構(gòu),其網(wǎng)絡(luò)結(jié)構(gòu)非常具有代表性。VGG 一共有6個不同的版本,最常用的是VGG16,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。VGG 的核心思想是通過加深網(wǎng)絡(luò)深度來提高網(wǎng)絡(luò)性能,在2014 年的ILSVRC 挑戰(zhàn)賽中表現(xiàn)優(yōu)異,在定位比賽上取得了第一名的成績,在分類比賽上以7.3%的top5 錯誤率取得了第二名的成績。
Fig.1 Stucture of VGG16 network圖1 VGG16 網(wǎng)絡(luò)結(jié)構(gòu)
6 個不同版本的VGG 網(wǎng)絡(luò)結(jié)構(gòu)如表2 所示。模型A-LRN 在模型A 的基礎(chǔ)上多一個局部響應(yīng)歸一化層(local response normalization,LRN),但是實驗表明,LRN 對性能提升收效甚微,并且增加模型的內(nèi)存占用和運行時間,因此后續(xù)模型都沒有加入LRN。模型C 在模型B 的基礎(chǔ)上增加了1×1 卷積層,增加了網(wǎng)絡(luò)的非線性表達能力。模型D 用3×3 卷積核代替了模型C 的1×1 卷積核,因為大感受野可以學(xué)習(xí)到更多的空間特征,增加了網(wǎng)絡(luò)的學(xué)習(xí)能力。模型D 對應(yīng)VGG16,模型E 對應(yīng)VGG19。
Table 2 Structure of VGGNet network表2 VGGNet網(wǎng)絡(luò)結(jié)構(gòu)組成
卷積神經(jīng)網(wǎng)絡(luò)起源于20 世紀60 年代左右的神經(jīng)科學(xué)領(lǐng)域中。LeCun 在1998 年提出基于梯度學(xué)習(xí)的改良版CNN 模型LeNet-5[33]。在這之后,大量研究人員提出了很多方法去優(yōu)化深層結(jié)構(gòu)和克服深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程的困難,深度卷積神經(jīng)網(wǎng)絡(luò)的性能也因此得到了大幅提升。2012 年卷積神經(jīng)網(wǎng)絡(luò)在ILSVRC2012 挑戰(zhàn)賽圖像分類任務(wù)大放異彩,Krizhevsky 提出的AlexNet[34]模型一舉奪下2012 年ILSVRC 挑戰(zhàn)賽冠軍。繼AlexNet 之后,卷積神經(jīng)網(wǎng)絡(luò)迅速發(fā)展,陸續(xù)出現(xiàn)了很多性能優(yōu)異的卷積神經(jīng)網(wǎng)絡(luò)模型,其中比較有代表性的有ZF-Net[35]、VGG[32]、GoogLeNet[36]、ResNet[9]、DenseNet[37]、DPN[38]、SENet[39]、MobileNetV1[40]、MobileNetV2[41]、SqueezeNet[42]和ShuffleNet[43]。
如圖2 所示,卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展是由簡到繁,不斷發(fā)展的應(yīng)用亟需網(wǎng)絡(luò)在保持性能的前提下可高效適用于計算資源受限的平臺上,探索可行的網(wǎng)絡(luò)簡化技術(shù)具有理論和應(yīng)用雙重意義。
Fig.2 Development of convolutional neural network圖2 卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展
目前卷積神經(jīng)網(wǎng)絡(luò)壓縮和加速的方法主要有以下五種:網(wǎng)絡(luò)剪枝、參數(shù)量化、低秩分解、輕量化網(wǎng)絡(luò)設(shè)計、知識蒸餾。為了綜合示意以上方法特色,如表3所示,從方法的設(shè)計思想、作用位置、是否改動網(wǎng)絡(luò)架構(gòu)等方面進行對比,列舉了以上方法的代表性研究工作,并對比分析了以上方法的優(yōu)缺點。
知識蒸餾從充分發(fā)掘神經(jīng)網(wǎng)絡(luò)的性能潛力出發(fā)進行研究,旨在實現(xiàn)使用層級淺、結(jié)構(gòu)簡單的神經(jīng)網(wǎng)絡(luò)發(fā)揮良好的性能,相比于其他方法壓縮出來的雜亂的結(jié)構(gòu),知識蒸餾可以選擇任何一種網(wǎng)絡(luò)結(jié)構(gòu)整齊簡潔的小型網(wǎng)絡(luò)作為目標網(wǎng)絡(luò),并且不會改變小型網(wǎng)絡(luò)的結(jié)構(gòu),知識蒸餾通過大型網(wǎng)絡(luò)(即教師網(wǎng)絡(luò))輔助小型網(wǎng)絡(luò)(即學(xué)生網(wǎng)絡(luò))訓(xùn)練的方式,提高學(xué)生網(wǎng)絡(luò)性能,達到學(xué)生網(wǎng)絡(luò)性能接近教師網(wǎng)絡(luò)的效果,實現(xiàn)將教師網(wǎng)絡(luò)壓縮為學(xué)生網(wǎng)絡(luò)的目的。通過知識蒸餾獲得了層數(shù)更淺性能更好的小模型,小模型更適合部署因為它就是為了快而設(shè)計的,并且小模型并不需要花很多時間去調(diào)參,不需要特定的硬件就能直接實現(xiàn)模型加速。因此知識蒸餾逐漸發(fā)展為網(wǎng)絡(luò)輕量化方法的一個熱點分支。
Table 3 Comparison of network compression methods表3 網(wǎng)絡(luò)壓縮方法對比
2014 年,Hinton 等人[23]首次提出了知識蒸餾(knowledge distillation,KD)的概念,并通過實驗驗證了其在卷積神經(jīng)網(wǎng)絡(luò)壓縮上的有效性和可行性。知識蒸餾策略已在目標檢測[44-46]、語義分割[47]、目標識別[48]、視頻分類[49]、圖像去霧[50]等很多計算機視覺應(yīng)用中發(fā)揮了作用。
下文先給出基本分析原理,然后根據(jù)蒸餾位置的不同,把知識蒸餾劃分為基于softmax 輸出層的知識蒸餾與基于中間層的知識蒸餾,其他代表性的方法還包括基于相關(guān)性知識的知識蒸餾以及結(jié)合生成對抗網(wǎng)絡(luò)(generative adversarial networks,GAN)的知識蒸餾。
知識蒸餾的本質(zhì)體現(xiàn)在:老師會把自己的思考過程和總結(jié)作為一種知識精華傳授給學(xué)生,學(xué)生通過理解學(xué)習(xí),獲得抽象、提煉后的知識,以達到和老師接近的水平。
知識蒸餾的基本思想正是讓卷積神經(jīng)網(wǎng)絡(luò)模仿人類的學(xué)習(xí)行為,將大型網(wǎng)絡(luò)(教師網(wǎng))學(xué)習(xí)到的知識提煉傳授給小型網(wǎng)絡(luò)(學(xué)生網(wǎng)),并指導(dǎo)小型網(wǎng)絡(luò)的訓(xùn)練,從而實現(xiàn)了從大型網(wǎng)絡(luò)壓縮成小型網(wǎng)絡(luò)的目的。其一般實現(xiàn)思路如圖3 所示。
Fig.3 Realization of knowledge distillation圖3 知識蒸餾一般的實現(xiàn)思路
基于softmax輸出層的知識蒸餾(KD)[23]是由Hinton提出的知識蒸餾領(lǐng)域的開山之作。在一個訓(xùn)練成熟的網(wǎng)絡(luò)模型輸出的概率分布中,錯誤類別的概率一般比較小,但是其中可能會存在一些概率相對較高的類別,例如,一輛公交車可能只有很小的機會被誤認為小汽車,但這個錯誤概率仍然比誤認為一棵樹的可能性高很多倍,Hinton 等人認為這些錯誤類別的相對概率中隱藏著網(wǎng)絡(luò)學(xué)習(xí)到的知識,這種知識是概率分布只有0 和1 的真實標簽不具備的。
因此,Hinton 提出KD,在softmax 輸出層中加入超參數(shù)T(如式(1)所示)用來平滑網(wǎng)絡(luò)輸出的概率分布,以強化輸出的概率分布中網(wǎng)絡(luò)學(xué)習(xí)到的知識。通過溫度系數(shù)T平滑過后的網(wǎng)絡(luò)輸出被稱為軟目標,軟目標和真實標簽一起指導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練,損失函數(shù)的組成JKD一般如式(2)所示。
神經(jīng)網(wǎng)絡(luò)通常通過使用softmax 輸出層來產(chǎn)生類別概率,該輸出層通過將zi歸一化轉(zhuǎn)化成概率qi。JCE(ytrue,p)表示學(xué)生網(wǎng)絡(luò)的預(yù)測輸出與真實標簽的交叉熵,表示學(xué)生網(wǎng)絡(luò)平滑后的預(yù)測輸出與教師網(wǎng)絡(luò)平滑后的預(yù)測輸出的交叉熵,λ為調(diào)節(jié)兩個損失函數(shù)比例的超參數(shù),因為經(jīng)過超參數(shù)T平滑后的交叉熵,在反向傳播時其梯度會變?yōu)樵瓉淼臑榱吮3制涮荻鹊某叨群驼鎸崢撕瀸?yīng)的交叉熵的尺度一致,需要把平滑后的交叉熵乘以T2。
下面介紹基于softmax 輸出層的知識蒸餾的拓展方法。
2.2.1 最高分差(TSD)知識蒸餾
研究動機:深度網(wǎng)絡(luò)能夠自動地為每幅圖像學(xué)習(xí)語義相似的類,置信度越高的類在語義上更可能與輸入圖像相似。利用這些信息,可以讓學(xué)生網(wǎng)絡(luò)避免對不必要的嚴格分布進行擬合,從而獲得更好的泛化能力。
方法實現(xiàn):最高分差(top score difference,TSD)[51]在標簽平滑正則化(label smoothing regularization,LSR)[52]和置信懲罰(confidence penalty,CP)[53]的基礎(chǔ)上進行改進,TSD 只使用教師網(wǎng)絡(luò)預(yù)測輸出置信度最高的k個類別計算損失,超參數(shù)k代表每個圖像語義上最相似的類的數(shù)量,其中包含真實類別在內(nèi)。然后,計算最高置信度類別與其之下得分最高的k-1 類之間的置信度差距,將結(jié)果作為教師網(wǎng)絡(luò)提供的損失,聯(lián)合目標任務(wù)損失對學(xué)生網(wǎng)絡(luò)進行訓(xùn)練。
2.2.2 提前停止知識蒸餾(ESKD)
研究動機:將神經(jīng)網(wǎng)絡(luò)部署在移動平臺上一般需要較大的壓縮率,學(xué)生網(wǎng)絡(luò)和教師網(wǎng)絡(luò)之間的規(guī)模差距也隨之提升。雖然大模型的準確率更高,但是它往往并不能更好地指導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練,原因是容量不匹配。由于網(wǎng)絡(luò)規(guī)模差距過大,學(xué)生無法模仿老師,反而會帶偏了目標任務(wù)損失。這類問題的解決辦法一般是采用分步蒸餾,從大模型提取到中模型,然后從中模型提取到小模型,但是這種分步的方法需要多次訓(xùn)練,造成訓(xùn)練時間也數(shù)倍地增長。
方法實現(xiàn):文獻[54]詳盡地探索了影響知識蒸餾的因素,提出了另外一種思路——提前停止知識蒸餾(early-stopped knowledge distillation,ESKD),在學(xué)生網(wǎng)絡(luò)訓(xùn)練結(jié)束之前停止教師的知識指導(dǎo)以提高學(xué)生網(wǎng)絡(luò)學(xué)習(xí)效果,通過使教師網(wǎng)絡(luò)知識對應(yīng)的損失權(quán)重逐漸衰減,以獲得一個更適合學(xué)生訓(xùn)練的方案。
基于中間層的知識蒸餾是目前研究最多的方法[55-60],主要是從網(wǎng)絡(luò)的中間隱藏層中通過各種手段提取可以表示網(wǎng)絡(luò)學(xué)習(xí)過程的知識,或者能夠蘊藏網(wǎng)絡(luò)如何對輸入數(shù)據(jù)進行推理的知識,將提取到的這些知識傳遞給學(xué)生網(wǎng)絡(luò)以實現(xiàn)知識蒸餾,達到提高學(xué)生網(wǎng)絡(luò)性能的目的。下面介紹一些典型的方法。
2.3.1 FitNet
研究動機:增加網(wǎng)絡(luò)深度可以重復(fù)使用特征,獲得在更高層次上更抽象和不變的特征表示。受此啟發(fā),F(xiàn)itNet[55]使用更深更窄的學(xué)生網(wǎng)絡(luò)和更淺更寬的教師網(wǎng)絡(luò)以實現(xiàn)更好的蒸餾效果,并且同時使用教師網(wǎng)絡(luò)的軟目標和教師網(wǎng)絡(luò)的中間層特征圖作為知識。
方法實現(xiàn):使用教師網(wǎng)絡(luò)的特征圖作為指導(dǎo)層,選擇學(xué)生網(wǎng)絡(luò)的特征圖作為被指導(dǎo)層,F(xiàn)itNet 是一個二階知識蒸餾,第一步使用指導(dǎo)層指導(dǎo)被指導(dǎo)層訓(xùn)練,損失函數(shù)如式(3)所示,第二步使用KD[23]繼續(xù)訓(xùn)練學(xué)生網(wǎng)絡(luò)。
其中,uh、vg和r分別代表教師網(wǎng)絡(luò)、學(xué)生網(wǎng)絡(luò)和適配器的嵌套函數(shù),X是輸入特征圖,WHint、WGuided和Wr分別代表教師網(wǎng)絡(luò)的權(quán)重、學(xué)生網(wǎng)絡(luò)的權(quán)重和適配器的權(quán)重。
直接由卷積層生成的特征圖通常尺寸較大,計算成本高,而且學(xué)生網(wǎng)絡(luò)很難學(xué)習(xí)。為了解決這個問題,Lee 等人[56]提出結(jié)合奇異值分解(singular value decomposition,SVD)的知識蒸餾,通過減少特征地圖的空間維數(shù),有效去除特征映射中的空間冗余,在特征降維過程中獲得有意義的隱含特征信息,并將這種信息傳遞給學(xué)生網(wǎng)絡(luò)。
2.3.2 注意力轉(zhuǎn)移(AT)
研究動機:FitNet 要求學(xué)生模擬教師的全部特征圖,這樣的要求太嚴格。文獻[24]提出了注意力轉(zhuǎn)移(attention transfer,AT)來放寬FitNet 的假設(shè),注意力圖是對多個通道的特征圖的總結(jié),使用一個注意力圖來代替多通道的特征圖。
注意力機制:注意力是視覺體驗的一個關(guān)鍵因素,并與感知密切相關(guān),注意力的集中程度體現(xiàn)了重視程度,人類需要保持注意力,以建立一個具有細節(jié)和連貫性的視覺表現(xiàn)。受此啟發(fā),人工注意力的核心思想是,通過集中注意力讓系統(tǒng)更關(guān)注一個對象或區(qū)域,以更詳細地檢查它。
方法實現(xiàn):AT 把注意力看作一組空間映射,這些映射可以在網(wǎng)絡(luò)的各個層中定義,以便它們能夠捕獲低、中、高級的表示信息,然后把注意力從教師網(wǎng)絡(luò)轉(zhuǎn)移到學(xué)生網(wǎng)絡(luò),以提高后者的表現(xiàn)。如圖4 所示,AT 定義了基于激活值(神經(jīng)元在預(yù)測過程的輸出)的注意力圖,其基本假設(shè)是隱藏層神經(jīng)元激活的絕對值可以代表這個神經(jīng)元的重要性,通過對同一空間位置不同通道的特征圖的統(tǒng)計,將C個通道的特征圖映射為單通道的注意力圖。通過讓學(xué)生網(wǎng)絡(luò)的注意力圖擬合教師網(wǎng)絡(luò)的注意力圖,并聯(lián)合目標任務(wù)損失對學(xué)生網(wǎng)絡(luò)進行訓(xùn)練。
文獻[25]提出通過匹配注意力圖和它們的雅可比矩陣進行知識蒸餾,該蒸餾方法的教師和學(xué)生網(wǎng)絡(luò)結(jié)構(gòu)可以是任意的。該方法主要利用了神經(jīng)網(wǎng)絡(luò)雅可比矩陣兩個重要的性質(zhì):第一,維度與網(wǎng)絡(luò)結(jié)構(gòu)無關(guān),只與輸入和輸出的維度有關(guān),因此,不同網(wǎng)絡(luò)的雅可比矩陣可以進行比較;第二,對于相同的網(wǎng)絡(luò),不同的權(quán)重配置可能得到相同的雅可比矩陣,這是由于網(wǎng)絡(luò)的冗余性和損失函數(shù)非凸性造成的。
2.3.3 FSP 蒸餾
研究動機:卷積神經(jīng)網(wǎng)絡(luò)是一個層次結(jié)構(gòu),特征從輸入到輸出逐層傳遞,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的知識可以定義為如何構(gòu)建一個從輸入到輸出的映射關(guān)系,進一步可以分解為層與層之間的特征變換關(guān)系,如圖5 所示。FSP(flow of solution procedure)蒸餾[57]將這種層與層之間的特征關(guān)系從教師網(wǎng)絡(luò)傳遞給學(xué)生網(wǎng)絡(luò)。單純地讓學(xué)生網(wǎng)絡(luò)模仿老師網(wǎng)絡(luò)生成的特征圖是硬約束,會讓學(xué)生網(wǎng)絡(luò)變得不靈活,因此更好的辦法是教會學(xué)生學(xué)習(xí)的過程,F(xiàn)SP 蒸餾定義了FSP 矩陣來刻畫層與層之間的特征關(guān)系,其核心思想便是授人以魚不如授人以漁。
方法實現(xiàn):對于具有相同尺寸的特征圖,使用低層和高層不同通道的特征圖兩兩計算內(nèi)積,得到的結(jié)果代表對應(yīng)通道的兩兩特征圖的互相關(guān)值,將互相關(guān)值作為FSP 矩陣的對應(yīng)位置的元素。FSP 矩陣的計算過程如式(4)所示。最后用L2損失去拉近教師和學(xué)生的FPS 矩陣之間的距離,通過構(gòu)建如式(5)所示的FSP 損失聯(lián)合目標任務(wù)損失一起指導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練。FSP 蒸餾的概念圖如圖5[29]所示。
Fig.4 Concept map of knowledge distillation for attention transfer圖4 注意力轉(zhuǎn)移知識蒸餾概念圖
Fig.5 Concept diagram of FSP distillation圖5 FSP 蒸餾的概念圖
其中,F(xiàn)1和F2分別表示低層和高層特征圖;h和w分別表示特征圖的長和寬;i和j分別表示低層和高層特征圖的通道索引;x和W分別表示輸入和參數(shù)。
2.3.4 神經(jīng)元選擇性轉(zhuǎn)移(NST)
研究動機:文獻[58]提出在知識蒸餾過程中,直接對特征圖進行匹配并不是最好的選擇,因為它忽略了樣本密度,并提出采用分布對齊的神經(jīng)元選擇性轉(zhuǎn)移(neuron selectivity transfer,NST)方法。
方法實現(xiàn):NST 的假設(shè)是每個神經(jīng)元都從原始輸入中提取與目標任務(wù)相關(guān)的特定模式,因此,如果一個神經(jīng)元在某些區(qū)域或樣本中被激活,這就意味著這些區(qū)域或樣本可能具有一些與任務(wù)相關(guān)的共同屬性。NST 通過匹配教師和學(xué)生網(wǎng)絡(luò)之間神經(jīng)元選擇性模式的分布進行知識蒸餾,采用最大平均偏差(maximum mean discrepancy,MMD)作為損失函數(shù)來度量師生分布之間的差異,并結(jié)合目標任務(wù)損失對學(xué)生網(wǎng)絡(luò)進行訓(xùn)練。
2.3.5 互信息知識蒸餾
研究動機:基于互信息的知識蒸餾[59,61]使用的手段是最大化教師和學(xué)生網(wǎng)絡(luò)之間的互信息,學(xué)生網(wǎng)絡(luò)通過學(xué)習(xí)教師網(wǎng)絡(luò)中激活值的分布最大化互信息,從而進行知識的傳遞。在學(xué)生網(wǎng)絡(luò)已知的條件下,當教師網(wǎng)絡(luò)的熵很小時,這說明學(xué)生網(wǎng)絡(luò)已經(jīng)獲得了能夠擬合教師網(wǎng)絡(luò)所需要的知識,因此學(xué)生網(wǎng)絡(luò)的性能也已經(jīng)接近教師網(wǎng)絡(luò)。如式(6)所示,在H(t)已知的條件下,H(t/s)的值越小時,互信息I(t;s)越大。
由于互信息的計算較困難,變分信息蒸餾(variational information distillation,VID)[31]采用變分信息最大化方案來最大化變分下界,如式(7)所示,即用一個可變高斯分布q(t/s)來模擬p(t/s),由于蒸餾過程中H(t)和需要學(xué)習(xí)的學(xué)生網(wǎng)絡(luò)參數(shù)無關(guān),最大化互信息就轉(zhuǎn)換為最大化可變高斯分布的問題。
方法實現(xiàn):學(xué)生網(wǎng)絡(luò)通過最小化與真實標簽的交叉熵損失,同時與教師網(wǎng)絡(luò)保持高度的互信息以學(xué)習(xí)教師網(wǎng)絡(luò)的知識。
2.3.6 因子傳輸(FT)
研究動機:當教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)在網(wǎng)絡(luò)結(jié)構(gòu)、通道數(shù)量和初始條件等差距較大時,學(xué)生網(wǎng)絡(luò)不能很好地理解教師網(wǎng)絡(luò)特征圖中復(fù)雜的知識,受此啟發(fā),文獻[60]提出使用通道擴展的方法——因子傳輸(factor transfer,F(xiàn)T)蒸餾去進一步解釋教師的知識,以幫助學(xué)生網(wǎng)絡(luò)學(xué)習(xí)。
Fig.6 Concept diagram of FT distillation圖6 FT 蒸餾的概念圖
方法實現(xiàn):先將教師網(wǎng)絡(luò)特征圖的通道擴展k倍,使m個通道特征圖的知識轉(zhuǎn)化到m×k個通道上,再進行知識傳遞。整體架構(gòu)如圖6[60]所示,在教師網(wǎng)絡(luò)指導(dǎo)層的特征圖后面連接一個額外的釋義器模塊,將特征圖通道數(shù)擴展為m×k。釋義器由卷積模塊組成,為了保證通道擴展后得到的信息可以完整地表示原始特征圖,在釋義器的輸入特征x和輸出特征p(x)間設(shè)置重建損失,對釋義者進行無監(jiān)督訓(xùn)練。相應(yīng)地,在學(xué)生網(wǎng)絡(luò)的被指導(dǎo)層后連接一個適配器,適配器也由卷積模塊構(gòu)成,目的是為了讓學(xué)生網(wǎng)絡(luò)的通道數(shù)與釋義器的輸出相匹配。通過式(8)計算蒸餾損失,其中,F(xiàn)T和FS分別表示釋義特征和適配器特征。
2.3.7 最佳指導(dǎo)路徑
研究動機:對于基于中間層的知識蒸餾,一個重要問題是如何確定最佳指導(dǎo)路徑,即確定教師網(wǎng)絡(luò)中的哪一層作為指導(dǎo)層和學(xué)生網(wǎng)絡(luò)中的哪一層作為被指導(dǎo)層,怎么能使學(xué)生網(wǎng)絡(luò)獲得最好的指導(dǎo)效果。如圖7 所示,文獻[62]提出一個迭代剪枝的優(yōu)化方案來尋找最佳指導(dǎo)路線。
方法實現(xiàn):將所有教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)特征圖尺寸一致的層構(gòu)成的指導(dǎo)路徑作為指導(dǎo)路徑集合,在訓(xùn)練超參數(shù)相同的情況下遍歷所有可能的路徑,動態(tài)確定最佳指導(dǎo)路徑。對學(xué)生網(wǎng)絡(luò)的特征圖使用1×1 的卷積核進行分析,這個操作可以降低特征圖的維度和計算復(fù)雜度,并過濾出獨特的通道特征。經(jīng)過1×1 的卷積核提取的新特征圖用來與教師網(wǎng)絡(luò)的特征圖計算損失,損失函數(shù)如下所示:
Fig.7 Candidate paths of knowledge transfer圖7 知識傳遞的候選路徑
其中,u和v分別表示指導(dǎo)層和被指導(dǎo)層的深度嵌套函數(shù),WT和WS分別表示教師網(wǎng)絡(luò)參數(shù)和學(xué)生網(wǎng)絡(luò)參數(shù)。r是應(yīng)用在u上的知識投影函數(shù),參數(shù)WTP是卷積適配層的參數(shù)。u、v和r必須在空間維度上具有可比性。
2.4.1 相關(guān)性知識蒸餾
(1)關(guān)系知識蒸餾
研究動機:文獻[63]提出了個體知識蒸餾(individual knowledge distillation,IKD)和關(guān)系知識蒸餾(relational knowledge distillation,RKD)的概念,IKD[23-24,51,55,60,64]使用單個輸入樣本在網(wǎng)絡(luò)特征提取過程中生成的特征圖或網(wǎng)絡(luò)的輸出作為知識進行蒸餾,使學(xué)生網(wǎng)絡(luò)的輸出模擬教師網(wǎng)絡(luò)的輸出,以此來模擬大模型的擬合能力。IKD 中每個輸入樣本都是獨立的,學(xué)生網(wǎng)絡(luò)只能學(xué)習(xí)教師網(wǎng)絡(luò)對單個輸入樣本的推理過程和輸出結(jié)果,無法學(xué)習(xí)到多個輸入樣本在教師網(wǎng)絡(luò)特征空間的相關(guān)性,這種相關(guān)性包含了教師網(wǎng)絡(luò)對類內(nèi)樣本的聚合能力和類間樣本的區(qū)分能力,以及教師網(wǎng)絡(luò)的結(jié)構(gòu)信息。
Fig.8 Individual knowledge distillation and relational knowledge distillation圖8 個體知識蒸餾與關(guān)系知識蒸餾
方法實現(xiàn):如圖8[63]所示,RKD 算法的核心是以教師網(wǎng)絡(luò)的輸出為結(jié)構(gòu)單元,取代IKD 中以教師網(wǎng)絡(luò)單個輸出為知識的蒸餾方式,RKD 利用多輸出組合成結(jié)構(gòu)單元,更好地獲取教師網(wǎng)絡(luò)的結(jié)構(gòu)化特征。RKD 學(xué)習(xí)的損失函數(shù)如式(11)所示,其中t1,t2,…,tn表示教師網(wǎng)絡(luò)的多個輸出,s1,s2,…,sn表示學(xué)生網(wǎng)絡(luò)的多個輸出,?是構(gòu)建結(jié)構(gòu)信息的函數(shù),由兩個樣本之間的歐幾里德距離或三元組之間的角距離實現(xiàn),l表示計算二者之間的差距。
(2)樣本關(guān)系圖蒸餾
研究動機:知識蒸餾的主要挑戰(zhàn)是如何從教師網(wǎng)絡(luò)中提取一般的、適度的、充足的知識來指導(dǎo)學(xué)生網(wǎng)絡(luò)。文獻[65]提出了一種用于知識提取的樣本關(guān)系圖(instance relationship graph,IRG),它對樣本特征、樣本關(guān)系和特征空間變換這三種知識進行建模,其概念圖如圖9[58]所示。
Fig.9 Concept diagram of instance relationship graph distillation圖9 樣本關(guān)系圖蒸餾示意圖
方法實現(xiàn):首先,構(gòu)造IRG,其中頂點表示訓(xùn)練樣本,兩個頂點之間的邊權(quán)重表示樣本之間的相似性程度。然后,使用IRG 變換對從低層到更高層的特征空間轉(zhuǎn)換進行建模,盡管輸入樣本的特征在不同的網(wǎng)絡(luò)結(jié)構(gòu)中通常具有不同的維度,但圖的大小總是相同的,因為節(jié)點的數(shù)量等于單次輸入訓(xùn)練樣本的數(shù)量。最后,設(shè)計IRG 損失、IRG 變換損失以及目標任務(wù)損失的聯(lián)合損失函數(shù),使用聯(lián)合損失函數(shù)指導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練。
(3)圖知識蒸餾
使用圖作為網(wǎng)絡(luò)中間層的拓撲表示,可以用來解釋網(wǎng)絡(luò)正在學(xué)習(xí)什么[66-67]或增強其魯棒性[68]。圖知識蒸餾(graph knowledge distillation,GKD)[69]可以看作是RKD 歐幾里德版本的拓展。在RKD 的基礎(chǔ)上,利用圖捕捉隱藏空間的幾何特征,建模多個樣本之間的關(guān)系距離,提取相關(guān)性知識,進行知識蒸餾。GKD 使用余弦距離來度量樣本相似性,余弦距離相對于歐氏距離,更多的是從方向上區(qū)分差異,而對絕對的數(shù)值不敏感,可以更準確地衡量樣本特征之間的相似性。為了避免過分重視離群值,對鄰接矩陣進行了規(guī)范化處理,使用huber損失作為損失函數(shù)。
文獻[70]在此基礎(chǔ)上對損失函數(shù)進行了擴展,提出了三元組蒸餾(triplet distillation),使用三元組損失[71],通過自適應(yīng)地改變正負對之間的距離,將相似信息從教師網(wǎng)絡(luò)轉(zhuǎn)移到學(xué)生網(wǎng)絡(luò)。
(4)相似性保留知識蒸餾(SPKD)
研究動機:語義相似的輸入往往會在一個經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)中產(chǎn)生相似的激活模式,文獻[65]提出了相似性保留知識蒸餾(similarity-preserving knowledge distillation,SPKD),并提出輸入樣本之間的相似性反映了教師網(wǎng)絡(luò)在特征空間中表示特征的規(guī)律,有助于在特征空間中減小類內(nèi)間距和增大類間間距,以提高學(xué)生網(wǎng)絡(luò)的學(xué)習(xí)效果。SPKD 使學(xué)生網(wǎng)絡(luò)不用去模仿教師網(wǎng)絡(luò)提取到的特征,只需要在自己的特征空間中保持樣本之間的相似性與教師一致即可。其概念圖如圖10[72]所示。
Fig.10 Similarity preserving knowledge distillation圖10 相似性保留知識蒸餾
方法實現(xiàn):對于輸入的樣本數(shù)為b個的小批量圖像,選擇某一層特征圖計算形狀為b×b的相關(guān)矩陣,蒸餾損失定義在學(xué)生和教師產(chǎn)生的相關(guān)矩陣上。教師和學(xué)生網(wǎng)絡(luò)生成的相關(guān)矩陣的形狀都是b×b,因此不用刻意保證師生網(wǎng)絡(luò)的特征圖大小和通道數(shù)相等,放寬了教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的選擇范圍,方法實現(xiàn)了更好的泛化。
(5)相關(guān)同余知識蒸餾(CCKD)
文獻[73]提出了相關(guān)同余知識蒸餾(correlation congruence for knowledge distillation,CCKD),將教師網(wǎng)絡(luò)對輸入樣本的預(yù)測輸出和樣本間相似性知識都傳遞給學(xué)生網(wǎng)絡(luò)。此外,為了更好地捕捉樣本之間的相關(guān)性,CCKD 使用高斯徑向基函數(shù)(Gaussian-RBF)去衡量樣本之間的相關(guān)性,該函數(shù)如下所示:
高斯徑向基函數(shù)是一種常用的核函數(shù),其值只依賴于距離原點空間的歐氏距離。相比于雙線性池化[74],高斯徑向基函數(shù)在捕捉樣本之間復(fù)雜的非線性關(guān)系方面更為靈活和強大。
CCKD 的采樣策略:樣本之間的相關(guān)性是在小批量輸入中計算的,因此一個合適的采樣器對于平衡類內(nèi)的一致性和類間的相關(guān)性非常重要。一種簡單的策略是均勻隨機抽樣,但是當類數(shù)較多時,所有樣本都屬于不同的類,這會導(dǎo)致類內(nèi)相關(guān)性梯度的高偏差估計。為了解決這個問題,CCKD 采用兩種小批量采樣器策略:類均勻隨機采樣器和超類單形隨機采樣器。均勻隨機抽樣按類抽樣并隨機為每個抽樣類別選擇固定k個樣本數(shù)(例如,一個批次中包含5個類別,每個類別包含k=8 個樣本,組成一個包含40個樣本的批次)。超類單形隨機采樣器與類均勻隨機采樣器相似,不同之處在于,它通過超類對樣本進行采樣,超類是通過聚類生成的真實類的一種更軟的形式。為了得到訓(xùn)練樣本的超類,首先使用教師網(wǎng)絡(luò)提取特征,然后使用K-均值聚類,樣本的超類被定義為它所屬的集群。由于超類改變了特征空間中樣本的粗糙結(jié)構(gòu),超類單形隨機采樣器比類均勻隨機采樣器更靈活,更能容忍不平衡標記。
(6)多頭圖蒸餾(MHGD)
文獻[75]提出了多頭圖蒸餾(multi-head graph distillation,MHGD)方法獲取輸入樣本的嵌入知識。首先提取網(wǎng)絡(luò)兩個層對應(yīng)的特征映射,使用KD-SVD[56](knowledge distillation using singular value decomposition)通過徑向基函數(shù)將特征映射壓縮為特征向量,然后將小批量樣本輸入教師網(wǎng)絡(luò),生成兩個特征向量集。通過計算兩個特征向量集之間的關(guān)系提取知識,使用傳遞知識的損失聯(lián)合目標任務(wù)損失同時指導(dǎo)學(xué)生網(wǎng)絡(luò)訓(xùn)練。
2.4.2 基于生成對抗網(wǎng)絡(luò)的知識蒸餾
研究動機:基于生成對抗網(wǎng)絡(luò)(GAN)[26]的知識蒸餾,利用生成對抗策略以實現(xiàn)知識從教師網(wǎng)絡(luò)到學(xué)生的傳遞。當學(xué)生網(wǎng)絡(luò)比教師網(wǎng)絡(luò)小很多時,強迫學(xué)生網(wǎng)絡(luò)精確模擬教師網(wǎng)絡(luò)是很困難的,而GAN有助于保持輸出分布的多模態(tài)性質(zhì)[60],并減小手工調(diào)參的誤差,學(xué)生網(wǎng)絡(luò)可以自動學(xué)習(xí)到良好的損失,轉(zhuǎn)移類間的相關(guān)性,提升學(xué)生網(wǎng)絡(luò)的性能。
方法實現(xiàn):對抗知識蒸餾[76-78]將學(xué)生網(wǎng)絡(luò)作為生成器,先分別獲取生成器和教師網(wǎng)絡(luò)生成對輸入樣本的輸出概率分布,再使用判別器來區(qū)分學(xué)生網(wǎng)絡(luò)的輸出與教師網(wǎng)絡(luò)的輸出。學(xué)生網(wǎng)絡(luò)和判別器交替更新參數(shù),其中判別器的更新為了更好地區(qū)分教師網(wǎng)絡(luò)的輸出與學(xué)生網(wǎng)絡(luò)的輸出,學(xué)生網(wǎng)絡(luò)的更新為了更好地欺騙判別器,使判別器無法區(qū)分學(xué)生網(wǎng)絡(luò)的輸出與教師網(wǎng)絡(luò)的輸出。經(jīng)過學(xué)生網(wǎng)絡(luò)和判別器的多次交替更新后,并達到使判別器無法區(qū)分學(xué)生網(wǎng)絡(luò)的輸出與教師網(wǎng)絡(luò)的輸出的效果,最終實現(xiàn)學(xué)生網(wǎng)絡(luò)模擬教師網(wǎng)絡(luò)的目的。圖11 描述了基于生成對抗網(wǎng)絡(luò)的知識蒸餾的一般思想。
Fig.11 Knowledge distillation based on generative adversarial network圖11 基于生成對抗網(wǎng)絡(luò)的知識蒸餾
雖然判別器捕獲了教師和學(xué)生輸出的高級統(tǒng)計數(shù)據(jù),但是缺少低級對齊,并且對抗性訓(xùn)練過程很困難[76]。文獻[79]提出了更嚴格的訓(xùn)練方式,其增加了判別器的預(yù)測目標,判別器除了預(yù)測真、假之外,還預(yù)測類別標簽,使對抗訓(xùn)練變得更加穩(wěn)定,鑒別器還可以在學(xué)生和教師的輸出之間提供類別級的對齊,判別器的輸出是一個C+2 維向量,帶有C個標簽預(yù)測和一個真/假預(yù)測。文獻[77]提出了KDGAN(knowledge distillation with generative adversarial networks)的框架,利用生成對抗網(wǎng)絡(luò)提取知識用于多標簽學(xué)習(xí)。KDGAN 框架定義為一個極大極小博弈,其中學(xué)生網(wǎng)絡(luò)、教師網(wǎng)路和判別器對立地訓(xùn)練,極大極小博弈具有均衡性,有利于學(xué)生網(wǎng)絡(luò)更好地模擬真實數(shù)據(jù)的分布。在對抗性訓(xùn)練中,利用具體的分布來控制梯度的方差,得到低方差的梯度估計以加速訓(xùn)練。
目前知識蒸餾的評價體系尚未完善,本文在展望部分針對知識蒸餾評價標準的規(guī)范化提出一些建議,下面僅介紹目前知識蒸餾普遍使用的評價方法。
目前知識蒸餾的評價是通過圖像分類任務(wù)實現(xiàn)的,使用的數(shù)據(jù)集包括CIFAR-10、CIFAR-100、ImageNet、SVHN、ILSVRC2012、MNIST。其中CIFAR-10、CIFAR-100 為最常用的數(shù)據(jù)集。
CIFAR-10 是一個普適物體的小型彩色圖像數(shù)據(jù)集。一共包含10 個類別的RGB 彩色圖片:飛機、汽車、鳥類、貓、鹿、狗、蛙類、馬、船和卡車。每個圖片的尺寸為32×32,每個類別有6 000 個圖像,數(shù)據(jù)集中一共有50 000 張訓(xùn)練圖片和10 000 張測試圖片。
CIFAR-100 包含100 個類別的RGB 彩色圖片,每個類包含600 個圖像,每類各有500 個訓(xùn)練圖像和100 個測試圖像。CIFAR-100 中的100 個類被分成20個超類。每個圖像都帶有一個“精細”標簽(它所屬的類)和一個“粗糙”標簽(它所屬的超類)。
評價指標包括3 個:(1)學(xué)生網(wǎng)絡(luò)相對于教師網(wǎng)絡(luò)參數(shù)的減少量;(2)通過知識蒸餾后的學(xué)生網(wǎng)絡(luò)相比于教師網(wǎng)絡(luò)準確率的降低量;(3)通過知識蒸餾后的學(xué)生網(wǎng)絡(luò)相比于正常訓(xùn)練的學(xué)生網(wǎng)絡(luò)準確率的提升量。第一個指標體現(xiàn)了算法對網(wǎng)絡(luò)的壓縮程度;第二個指標體現(xiàn)了在第一個指標對應(yīng)的壓縮程度下,算法對準確率的損失程度;第三個指標體現(xiàn)了在第一個指標對應(yīng)的壓縮程度下,該知識蒸餾算法的有效程度。
評價流程:(1)在實驗數(shù)據(jù)集上訓(xùn)練多個教師網(wǎng)絡(luò)(如ResNet152、ResNet101、WRN40-2 等),訓(xùn)練多個教師網(wǎng)絡(luò)的目的是為了后續(xù)測試算法對網(wǎng)絡(luò)結(jié)構(gòu)和復(fù)雜度的泛化性。(2)對每一個教師網(wǎng)絡(luò),都選擇多個不同復(fù)雜度的學(xué)生網(wǎng)絡(luò)(如ResNet50、WRN40-1、WRN16-2、WRN4016-1 等)進行蒸餾訓(xùn)練,學(xué)生網(wǎng)絡(luò)的訓(xùn)練與教師網(wǎng)絡(luò)使用相同的數(shù)據(jù)集,以進行準確率的對比,選擇多個不同復(fù)雜度的學(xué)生網(wǎng)絡(luò)的目的是為了測試算法對壓縮程度的魯棒性。一般情況下,當壓縮程度超出一定范圍時,蒸餾的效果會急劇下降。(3)使用正常的訓(xùn)練方式,對學(xué)生網(wǎng)絡(luò)在相同的數(shù)據(jù)集上進行訓(xùn)練,以測試蒸餾的有效性。
2.6.1 不同知識蒸餾技術(shù)的對比實驗
表4 展示了各種知識蒸餾方法的性能,實驗在CIFAR-100 數(shù)據(jù)集上對WRN40-2 進行兩種程度的壓縮,將WRN40-2 壓縮為WRN16-2 和WRN40-1。在兩種程度的壓縮中,KD 表現(xiàn)均最優(yōu);在WRN40-2 到WRN16-2 的壓縮中,AT 表現(xiàn)第二好;在WRN40-2 到WRN40-1 的壓縮中,VID 表現(xiàn)第二好。
表5 展示了不同知識蒸餾方法與KD 組合表現(xiàn)的性能,實驗在CIFAR-100 數(shù)據(jù)集上進行。將WRN40-2 壓縮為WRN16-2,有6 種知識蒸餾方法與KD 組合表現(xiàn)的性能超越KD 單獨使用的性能,其中AT+KD表現(xiàn)最優(yōu),這表明這6 種方法提取到了KD 缺乏的知識,與KD 存在互補關(guān)系。
2.6.2 對各種知識蒸餾技術(shù)的分析評價
知識蒸餾的發(fā)展關(guān)系如圖12 所示,其中第一部分為基于softmax 輸出層的知識蒸餾方法,第二部分為基于中間層的知識蒸餾方法,第三部分為相關(guān)性知識蒸餾,第四部分為對抗性知識蒸餾。下面對上述四種類型的知識蒸餾方法的優(yōu)缺點進行分析評價,并對其拓展研究提供一些思路:
Table 4 Experiment of different knowledge distillation methods on CIFAR-100表4 不同知識蒸餾方法在CIFAR-100 上的實驗
Table 5 Combination experiment of different knowledge distillation methods and KD表5 不同知識蒸餾方法與KD 組合實驗
(1)基于softmax 輸出層的KD
優(yōu)點:KD 能夠有效地將大型教師網(wǎng)絡(luò)壓縮為小型學(xué)生網(wǎng)絡(luò),實現(xiàn)思路簡單,適用于任意網(wǎng)絡(luò)結(jié)構(gòu),在多分類任務(wù)中表現(xiàn)了優(yōu)秀的性能。
Fig.12 Development of knowledge distillation圖12 知識蒸餾的發(fā)展關(guān)系
缺點:該方法也存在著一定的局限性,由于它是基于softmax 層輸出的概率分布,嚴重依賴類的數(shù)量,因此應(yīng)用場景只能局限于多分類問題,在二分類甚至目標類別較少的情況以及回歸問題的表現(xiàn)并不理想;并且softmax 輸出層位于網(wǎng)絡(luò)的最后,特征經(jīng)過多次池化降維,所包含的信息量較少,提取到的知識語義程度太高,單純地擬合教師網(wǎng)絡(luò)的輸出可能會造成學(xué)生網(wǎng)絡(luò)的過擬合,影響學(xué)生網(wǎng)絡(luò)的學(xué)習(xí)效果。
拓展研究:KD 在知識蒸餾的快速訓(xùn)練方向有著良好的發(fā)展?jié)摿?,由于KD 傳遞的知識位于網(wǎng)絡(luò)的輸出層,KD 可以通過多模型集成的思路,將多個小模型同時訓(xùn)練,把小模型的預(yù)測輸出通過集成產(chǎn)生知識,同時使用知識對其中的小模型進行指導(dǎo),從而實現(xiàn)一階段訓(xùn)練的知識蒸餾,達到快速訓(xùn)練的效果;探索可以與KD 結(jié)合使用的中間層知識蒸餾方法,實現(xiàn)對輸出層知識的補充,從而達到更好的蒸餾性能。
(2)基于中間層的知識蒸餾
優(yōu)點:大量的研究人員提出了各式各樣的知識提取方法,包括AT、FSP、NST、VID、FT 等,基于中間層的知識蒸餾取得了較好的效果,相對于基于softmax 輸出層的知識蒸餾,其擁有更豐富多樣的知識提取和傳遞的手段,同時也擁有更廣闊的發(fā)展?jié)摿脱芯績r值,其應(yīng)用范圍也取得了極大的擴展,不再依賴分類任務(wù)以及類的數(shù)量,可以應(yīng)用在檢測和分割任務(wù)上。通過實驗發(fā)現(xiàn),AT 實現(xiàn)了最好的性能,F(xiàn)SP和FT 可以幫助學(xué)生網(wǎng)絡(luò)提高收斂速度。
缺點:由于中間層的特征維度比輸出層龐大很多,因此加劇了訓(xùn)練難度;并且在學(xué)生網(wǎng)絡(luò)固定的時候,很難確定最優(yōu)的指導(dǎo)路線以及最佳的指導(dǎo)教師,增加了人工調(diào)參的難度,可能需要多次調(diào)參才能獲得訓(xùn)練最佳的學(xué)生網(wǎng)絡(luò);基于中間層特征圖的知識蒸餾方法實現(xiàn)相對復(fù)雜,AT 需要教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)的特征圖適配,實際應(yīng)用中可能會需要額外的適配操作,F(xiàn)T 需要提前對釋義器進行額外的訓(xùn)練,同時釋義器和適配器會增加額外的參數(shù);基于中間層知識蒸餾的研究動機大多從試探的角度出發(fā),該方向的研究缺乏明確的理論知識指導(dǎo),需要較高創(chuàng)新直覺。
拓展研究:基于中間層的知識蒸餾是目前知識蒸餾領(lǐng)域的熱點研究,該方向可以結(jié)合神經(jīng)網(wǎng)絡(luò)最新的研究成果,探索更有效的知識提取和傳遞的手段。在AT 的基礎(chǔ)上可以探索結(jié)合更多類型的注意力機制的蒸餾方法,如空間注意力機制、通道注意力機制、混合型注意力機制以及自注意力機制等;如何選擇教師到學(xué)生的指導(dǎo)路徑也是重要的研究方向。
(3)相關(guān)性知識蒸餾
優(yōu)點:相關(guān)性知識蒸餾有利于減少特征空間中的類內(nèi)間距,擴大類間間距,對不同的網(wǎng)絡(luò)結(jié)構(gòu)具有較強的魯棒性。
缺點:相關(guān)性知識蒸餾傳遞的知識太雜亂,各個損失分量之間的權(quán)重比例缺乏規(guī)律性,需要多次調(diào)參和試錯才能找到較好的訓(xùn)練效果;由于相關(guān)性知識需要從批量數(shù)據(jù)中提取,輸入數(shù)據(jù)的類別分布對蒸餾的效果也有較大的影響。
拓展研究:相關(guān)性知識蒸餾從樣本的角度出發(fā),因此,對輸入樣本進行預(yù)處理和采樣策略可以作為重點研究方向。
(4)基于生成對抗網(wǎng)絡(luò)的知識蒸餾
優(yōu)點:基于生成對抗網(wǎng)絡(luò)的知識蒸餾提供了知識蒸餾的一種全新的思路,通過使用鑒別器和學(xué)生網(wǎng)絡(luò)交叉迭代訓(xùn)練使學(xué)生網(wǎng)絡(luò)不斷向教師網(wǎng)絡(luò)靠近,該方法可以實現(xiàn)端到端的訓(xùn)練,解決了人工調(diào)參帶來的誤差和麻煩,而且訓(xùn)練效果較好。
缺點:由于這種訓(xùn)練方式使學(xué)生網(wǎng)絡(luò)僅僅模擬教師網(wǎng)絡(luò)的輸出端,無法學(xué)習(xí)到教師網(wǎng)絡(luò)內(nèi)部更豐富的知識,并且鑒別器和學(xué)生網(wǎng)絡(luò)的交叉迭代訓(xùn)練造成網(wǎng)絡(luò)收斂速度慢,訓(xùn)練時間長。
拓展研究:基于生成對抗網(wǎng)絡(luò)的知識蒸餾作為知識蒸餾的一個新的領(lǐng)域,以對抗訓(xùn)練作為訓(xùn)練手段,探索可以結(jié)合網(wǎng)絡(luò)中間層知識的方法,以實現(xiàn)更好的蒸餾效果和更快速的訓(xùn)練。
隨著深度神經(jīng)網(wǎng)絡(luò)研究的不斷深入以及對神經(jīng)網(wǎng)絡(luò)網(wǎng)絡(luò)輕量化日益擴大的應(yīng)用需求,知識蒸餾技術(shù)在未來一定會大放異彩,未來的研究工作可參考如下幾方面。
(1)更有效的知識提取
在知識蒸餾中,最重要的一個環(huán)節(jié)就是如何從教師網(wǎng)絡(luò)中提取能夠有效地指導(dǎo)學(xué)生網(wǎng)絡(luò)進步的知識,基于注意力機制和相關(guān)性等提取知識的方法展現(xiàn)了不錯的效果,但提取到的知識還是不夠準確和有效,學(xué)生網(wǎng)絡(luò)需要更精準的教師網(wǎng)絡(luò)知識以獲得更好的指導(dǎo)效果,因此如何改進知識提取的方法有很大的研究意義也是目前研究亟需解決的問題。
(2)知識蒸餾技術(shù)的研究領(lǐng)域擴展
現(xiàn)階段知識蒸餾技術(shù)的研究主要是在分類問題上的,對于檢測、分割等復(fù)雜任務(wù)的應(yīng)用上還存在一定的局限性。對于同樣的知識蒸餾算法,應(yīng)用在分類問題上的壓縮有著很好的效果,而應(yīng)用到目標檢測任務(wù)時性能可能會大幅降低,主要有以下幾點原因:基于輸出層的知識蒸餾方法是針對分類問題提出來的,它的假設(shè)是所有的輸出類別有著相同的重要性,但是目標檢測任務(wù)中,通常背景類所占比例要遠高于目標類;檢測任務(wù)相對于分類任務(wù)更復(fù)雜,需要同時處理目標分類和邊框回歸問題,對網(wǎng)絡(luò)能力有更強的要求;檢測任務(wù)主要關(guān)注物體真實標簽重疊的局部區(qū)域,而分類模型更關(guān)注全局背景,在檢測任務(wù)中,知識蒸餾將整個教師網(wǎng)絡(luò)的知識提取給學(xué)生網(wǎng)絡(luò),其中包含了學(xué)生不需要的知識,冗余的知識會影響蒸餾的效果。因此知識蒸餾技術(shù)在目標檢測的應(yīng)用還存在著許多問題需要克服,這也正是知識蒸餾技術(shù)未來重要的研究方向。
(3)與網(wǎng)絡(luò)剪枝技術(shù)等策略結(jié)合
基于知識蒸餾的網(wǎng)絡(luò)壓縮技術(shù)使小型網(wǎng)絡(luò)超越自己正常的訓(xùn)練極限,達到與大型網(wǎng)絡(luò)相當?shù)臏蚀_率,但是經(jīng)過知識蒸餾訓(xùn)練完成的小型網(wǎng)絡(luò)的參數(shù)仍然存在大量冗余,網(wǎng)絡(luò)剪枝技術(shù)剛好可以很好地解決這個問題,通過知識蒸餾技術(shù)和網(wǎng)絡(luò)剪枝技術(shù)的聯(lián)合使用可以更大程度地壓縮網(wǎng)絡(luò),因此如何將兩種壓縮技術(shù)不沖突地聯(lián)合起來,減少人工調(diào)參的難度,實現(xiàn)端到端的快速訓(xùn)練有進一步的研究價值。
(4)邊緣端AI芯片限制條件下的應(yīng)用
民用方面如在手機、智能監(jiān)控攝像頭以及移動穿戴式設(shè)備對神經(jīng)網(wǎng)絡(luò)能夠部署到邊緣端智能芯片的應(yīng)用日益增多,軍用方面如無人機敵情偵察、衛(wèi)星導(dǎo)彈的智能化也有著同樣迫切的需求。但是在面對邊緣端AI 芯片的算力和功耗等限制條件下,知識蒸餾技術(shù)壓縮得到的小型網(wǎng)絡(luò)參數(shù)的精度仍然很高,會消耗非常多的計算資源,因此知識蒸餾技術(shù)結(jié)合參數(shù)量化技術(shù)對神經(jīng)網(wǎng)絡(luò)從學(xué)術(shù)研究到工業(yè)落地有著巨大的應(yīng)用潛力,需要結(jié)合特定的應(yīng)用場景、計算環(huán)境約束、待分析的目標特性、特殊的知識類型,展開個性化研究。
(5)評價標準規(guī)范化
目前對網(wǎng)絡(luò)壓縮中的知識蒸餾技術(shù)的評價主要側(cè)重于準確率、模型內(nèi)存等方面,但使用更加全面的評價指標對于發(fā)現(xiàn)不同算法的優(yōu)缺點是大有裨益的。
由于在工程上經(jīng)常有快速訓(xùn)練的需求,不同算法訓(xùn)練時消耗的計算資源和訓(xùn)練時間也可以作為一種衡量算法的評價指標;由于簡化后的網(wǎng)絡(luò)模型往往是在資源受限的設(shè)備上運行,乘加運算量、硬件能耗也是重要的評價指標。
由于知識蒸餾壓縮的效果與教師、學(xué)生網(wǎng)絡(luò)的選取以及壓縮的程度有密切的關(guān)系,在超出一定壓縮程度后,某些知識蒸餾方法的壓縮效果會急劇下降。因此,在知識蒸餾的理論研究中,非常有必要建立標準完備的用于壓縮效果評價的網(wǎng)絡(luò)集合。該集合包含多個網(wǎng)絡(luò)壓縮對,每個網(wǎng)絡(luò)壓縮對都單獨對應(yīng)一個教師網(wǎng)絡(luò)和一個學(xué)生網(wǎng)絡(luò)(如網(wǎng)絡(luò)壓縮對ResNet152 與ResNet101,ResNet152 與ResNet50,WRN40-2 與WRN40-1,WRN40-2 與WRN16-2 等),每個網(wǎng)絡(luò)壓縮對也都標志著具體的網(wǎng)絡(luò)結(jié)構(gòu)和壓縮程度。網(wǎng)絡(luò)壓縮中各種知識蒸餾算法都使用這個集合在固定的公開數(shù)據(jù)集上進行蒸餾效果的比較,以呈現(xiàn)該算法在不同網(wǎng)絡(luò)結(jié)構(gòu)、不同壓縮程度下的壓縮效果,以使實驗結(jié)果更加具有說服力,以更清晰地呈現(xiàn)不同算法的優(yōu)劣性和泛化性。
本文簡述了網(wǎng)絡(luò)壓縮方法的發(fā)展淵源,在簡單對比典型網(wǎng)絡(luò)壓縮技術(shù)的基礎(chǔ)上,重點針對近年深度神經(jīng)網(wǎng)絡(luò)壓縮知識蒸餾技術(shù)進行了詳細的梳理,全面介紹了近年知識蒸餾技術(shù)的典型探索,并給出了未來該技術(shù)研究拓展的初步思考,希望對當前及未來知識蒸餾技術(shù)的研究工作有所幫助。