孟憲法,劉 方,李 廣,黃萌萌
國防科技大學 自動目標識別重點實驗室,長沙 410000
近些年來,隨著數據集的豐富完善,計算單元性能的快速提升,卷積神經網絡(convolutional neural network,CNN)憑借著強大的特征提取和表達能力,在圖像分類[1]、目標檢測[2]和語義分割[3]等計算機視覺領域,都獲得了顯著的應用成效。得益于網絡模型的加深加巨,CNN 的眾多拓展模型在眾多任務中超越了很多傳統技術方法,甚至堪比人類的識別能力,可適用于廣泛的行業應用,如智能駕駛[4-5]、智能機器人[6]、人臉識別[7]、疾病檢測[8]等。
但是注意到:通常網絡的性能與網絡的結構復雜度成正比,網絡結構越復雜模型越深越寬,網絡性能就越好。如表1 所示,He 等提出的ResNet-152[9]模型深度達到了152 層,參數量達到了0.6 億個,需要花費241 MB 內存存儲,分類一幅分辨率為224×224 的彩色圖像需要115 億次浮點型計算。深度神經網絡會占用大量的內存存儲,帶來繁多的計算量,造成巨大的電量消耗,這些問題使網絡很難在資源受限的嵌入式設備和對實時性要求較高的移動端部署。如果能把深度神經網絡進行壓縮,讓網絡減少對內存存儲的消耗,就可以使網絡在內存資源受限的設備上進行部署,并且輕量化的神經網絡還可以實現運算加速,這樣在軍民應用中都有著廣泛的拓展潛力。

Table 1 Basic information of classical convolutional neural network表1 經典卷積神經網絡的基本信息
通常情況下,深度神經網絡存在著大量的參數冗余。根據LeCun 等[10]實驗表明,深度神經網絡有近一半的權重對網絡性能影響甚微,由此可見,深度神經網絡有著很大的壓縮空間,而且過量的參數還會導致過擬合,使模型的泛化能力下降。研究者們已經探索了網絡剪枝(network pruning)[11-13]、參數量化(parameter quantification)[14-17]、低秩分解(low-rank decomposition)[18-19]、輕量化網絡設計(compact structure design)[20-22]、知識蒸餾(knowledge distillation)[23-26]等方法。自AI 教父Hinton 提出了知識蒸餾技術后[23],知識蒸餾受到了研究者們的廣泛關注,并在網絡壓縮中展現了巨大的研究價值。目前網絡壓縮領域的綜述性文章[27-31]缺乏專門對知識蒸餾技術的詳細介紹,因此本文對卷積神經網絡壓縮中的知識蒸餾技術進行詳細說明。
卷積神經網絡是目前廣泛應用的深度學習架構,它是一種層次模型,由用于特征提取的卷積層和用于特征處理的池化層交叉堆疊而成。卷積神經網絡的輸入為一般原始數據(如RGB 圖像、原始音頻數據等),通過前饋運算來進行預測和推理,通過反饋運算來進行網絡參數的訓練和學習。
VGG[32]是一種經典的卷積神經網絡,它采用卷積層和池化層交叉堆疊,最后連接全連接層的層次結構,其網絡結構非常具有代表性。VGG 一共有6個不同的版本,最常用的是VGG16,其網絡結構如圖1所示。VGG 的核心思想是通過加深網絡深度來提高網絡性能,在2014 年的ILSVRC 挑戰賽中表現優異,在定位比賽上取得了第一名的成績,在分類比賽上以7.3%的top5 錯誤率取得了第二名的成績。

Fig.1 Stucture of VGG16 network圖1 VGG16 網絡結構
6 個不同版本的VGG 網絡結構如表2 所示。模型A-LRN 在模型A 的基礎上多一個局部響應歸一化層(local response normalization,LRN),但是實驗表明,LRN 對性能提升收效甚微,并且增加模型的內存占用和運行時間,因此后續模型都沒有加入LRN。模型C 在模型B 的基礎上增加了1×1 卷積層,增加了網絡的非線性表達能力。模型D 用3×3 卷積核代替了模型C 的1×1 卷積核,因為大感受野可以學習到更多的空間特征,增加了網絡的學習能力。模型D 對應VGG16,模型E 對應VGG19。

Table 2 Structure of VGGNet network表2 VGGNet網絡結構組成
卷積神經網絡起源于20 世紀60 年代左右的神經科學領域中。LeCun 在1998 年提出基于梯度學習的改良版CNN 模型LeNet-5[33]。在這之后,大量研究人員提出了很多方法去優化深層結構和克服深度神經網絡在訓練過程的困難,深度卷積神經網絡的性能也因此得到了大幅提升。2012 年卷積神經網絡在ILSVRC2012 挑戰賽圖像分類任務大放異彩,Krizhevsky 提出的AlexNet[34]模型一舉奪下2012 年ILSVRC 挑戰賽冠軍。繼AlexNet 之后,卷積神經網絡迅速發展,陸續出現了很多性能優異的卷積神經網絡模型,其中比較有代表性的有ZF-Net[35]、VGG[32]、GoogLeNet[36]、ResNet[9]、DenseNet[37]、DPN[38]、SENet[39]、MobileNetV1[40]、MobileNetV2[41]、SqueezeNet[42]和ShuffleNet[43]。
如圖2 所示,卷積神經網絡的發展是由簡到繁,不斷發展的應用亟需網絡在保持性能的前提下可高效適用于計算資源受限的平臺上,探索可行的網絡簡化技術具有理論和應用雙重意義。

Fig.2 Development of convolutional neural network圖2 卷積神經網絡的發展
目前卷積神經網絡壓縮和加速的方法主要有以下五種:網絡剪枝、參數量化、低秩分解、輕量化網絡設計、知識蒸餾。為了綜合示意以上方法特色,如表3所示,從方法的設計思想、作用位置、是否改動網絡架構等方面進行對比,列舉了以上方法的代表性研究工作,并對比分析了以上方法的優缺點。
知識蒸餾從充分發掘神經網絡的性能潛力出發進行研究,旨在實現使用層級淺、結構簡單的神經網絡發揮良好的性能,相比于其他方法壓縮出來的雜亂的結構,知識蒸餾可以選擇任何一種網絡結構整齊簡潔的小型網絡作為目標網絡,并且不會改變小型網絡的結構,知識蒸餾通過大型網絡(即教師網絡)輔助小型網絡(即學生網絡)訓練的方式,提高學生網絡性能,達到學生網絡性能接近教師網絡的效果,實現將教師網絡壓縮為學生網絡的目的。通過知識蒸餾獲得了層數更淺性能更好的小模型,小模型更適合部署因為它就是為了快而設計的,并且小模型并不需要花很多時間去調參,不需要特定的硬件就能直接實現模型加速。因此知識蒸餾逐漸發展為網絡輕量化方法的一個熱點分支。

Table 3 Comparison of network compression methods表3 網絡壓縮方法對比
2014 年,Hinton 等人[23]首次提出了知識蒸餾(knowledge distillation,KD)的概念,并通過實驗驗證了其在卷積神經網絡壓縮上的有效性和可行性。知識蒸餾策略已在目標檢測[44-46]、語義分割[47]、目標識別[48]、視頻分類[49]、圖像去霧[50]等很多計算機視覺應用中發揮了作用。
下文先給出基本分析原理,然后根據蒸餾位置的不同,把知識蒸餾劃分為基于softmax 輸出層的知識蒸餾與基于中間層的知識蒸餾,其他代表性的方法還包括基于相關性知識的知識蒸餾以及結合生成對抗網絡(generative adversarial networks,GAN)的知識蒸餾。
知識蒸餾的本質體現在:老師會把自己的思考過程和總結作為一種知識精華傳授給學生,學生通過理解學習,獲得抽象、提煉后的知識,以達到和老師接近的水平。
知識蒸餾的基本思想正是讓卷積神經網絡模仿人類的學習行為,將大型網絡(教師網)學習到的知識提煉傳授給小型網絡(學生網),并指導小型網絡的訓練,從而實現了從大型網絡壓縮成小型網絡的目的。其一般實現思路如圖3 所示。

Fig.3 Realization of knowledge distillation圖3 知識蒸餾一般的實現思路
基于softmax輸出層的知識蒸餾(KD)[23]是由Hinton提出的知識蒸餾領域的開山之作。在一個訓練成熟的網絡模型輸出的概率分布中,錯誤類別的概率一般比較小,但是其中可能會存在一些概率相對較高的類別,例如,一輛公交車可能只有很小的機會被誤認為小汽車,但這個錯誤概率仍然比誤認為一棵樹的可能性高很多倍,Hinton 等人認為這些錯誤類別的相對概率中隱藏著網絡學習到的知識,這種知識是概率分布只有0 和1 的真實標簽不具備的。
因此,Hinton 提出KD,在softmax 輸出層中加入超參數T(如式(1)所示)用來平滑網絡輸出的概率分布,以強化輸出的概率分布中網絡學習到的知識。通過溫度系數T平滑過后的網絡輸出被稱為軟目標,軟目標和真實標簽一起指導學生網絡訓練,損失函數的組成JKD一般如式(2)所示。

神經網絡通常通過使用softmax 輸出層來產生類別概率,該輸出層通過將zi歸一化轉化成概率qi。JCE(ytrue,p)表示學生網絡的預測輸出與真實標簽的交叉熵,表示學生網絡平滑后的預測輸出與教師網絡平滑后的預測輸出的交叉熵,λ為調節兩個損失函數比例的超參數,因為經過超參數T平滑后的交叉熵,在反向傳播時其梯度會變為原來的為了保持其梯度的尺度和真實標簽對應的交叉熵的尺度一致,需要把平滑后的交叉熵乘以T2。
下面介紹基于softmax 輸出層的知識蒸餾的拓展方法。
2.2.1 最高分差(TSD)知識蒸餾
研究動機:深度網絡能夠自動地為每幅圖像學習語義相似的類,置信度越高的類在語義上更可能與輸入圖像相似。利用這些信息,可以讓學生網絡避免對不必要的嚴格分布進行擬合,從而獲得更好的泛化能力。
方法實現:最高分差(top score difference,TSD)[51]在標簽平滑正則化(label smoothing regularization,LSR)[52]和置信懲罰(confidence penalty,CP)[53]的基礎上進行改進,TSD 只使用教師網絡預測輸出置信度最高的k個類別計算損失,超參數k代表每個圖像語義上最相似的類的數量,其中包含真實類別在內。然后,計算最高置信度類別與其之下得分最高的k-1 類之間的置信度差距,將結果作為教師網絡提供的損失,聯合目標任務損失對學生網絡進行訓練。
2.2.2 提前停止知識蒸餾(ESKD)
研究動機:將神經網絡部署在移動平臺上一般需要較大的壓縮率,學生網絡和教師網絡之間的規模差距也隨之提升。雖然大模型的準確率更高,但是它往往并不能更好地指導學生網絡訓練,原因是容量不匹配。由于網絡規模差距過大,學生無法模仿老師,反而會帶偏了目標任務損失。這類問題的解決辦法一般是采用分步蒸餾,從大模型提取到中模型,然后從中模型提取到小模型,但是這種分步的方法需要多次訓練,造成訓練時間也數倍地增長。
方法實現:文獻[54]詳盡地探索了影響知識蒸餾的因素,提出了另外一種思路——提前停止知識蒸餾(early-stopped knowledge distillation,ESKD),在學生網絡訓練結束之前停止教師的知識指導以提高學生網絡學習效果,通過使教師網絡知識對應的損失權重逐漸衰減,以獲得一個更適合學生訓練的方案。
基于中間層的知識蒸餾是目前研究最多的方法[55-60],主要是從網絡的中間隱藏層中通過各種手段提取可以表示網絡學習過程的知識,或者能夠蘊藏網絡如何對輸入數據進行推理的知識,將提取到的這些知識傳遞給學生網絡以實現知識蒸餾,達到提高學生網絡性能的目的。下面介紹一些典型的方法。
2.3.1 FitNet
研究動機:增加網絡深度可以重復使用特征,獲得在更高層次上更抽象和不變的特征表示。受此啟發,FitNet[55]使用更深更窄的學生網絡和更淺更寬的教師網絡以實現更好的蒸餾效果,并且同時使用教師網絡的軟目標和教師網絡的中間層特征圖作為知識。
方法實現:使用教師網絡的特征圖作為指導層,選擇學生網絡的特征圖作為被指導層,FitNet 是一個二階知識蒸餾,第一步使用指導層指導被指導層訓練,損失函數如式(3)所示,第二步使用KD[23]繼續訓練學生網絡。

其中,uh、vg和r分別代表教師網絡、學生網絡和適配器的嵌套函數,X是輸入特征圖,WHint、WGuided和Wr分別代表教師網絡的權重、學生網絡的權重和適配器的權重。
直接由卷積層生成的特征圖通常尺寸較大,計算成本高,而且學生網絡很難學習。為了解決這個問題,Lee 等人[56]提出結合奇異值分解(singular value decomposition,SVD)的知識蒸餾,通過減少特征地圖的空間維數,有效去除特征映射中的空間冗余,在特征降維過程中獲得有意義的隱含特征信息,并將這種信息傳遞給學生網絡。
2.3.2 注意力轉移(AT)
研究動機:FitNet 要求學生模擬教師的全部特征圖,這樣的要求太嚴格。文獻[24]提出了注意力轉移(attention transfer,AT)來放寬FitNet 的假設,注意力圖是對多個通道的特征圖的總結,使用一個注意力圖來代替多通道的特征圖。
注意力機制:注意力是視覺體驗的一個關鍵因素,并與感知密切相關,注意力的集中程度體現了重視程度,人類需要保持注意力,以建立一個具有細節和連貫性的視覺表現。受此啟發,人工注意力的核心思想是,通過集中注意力讓系統更關注一個對象或區域,以更詳細地檢查它。
方法實現:AT 把注意力看作一組空間映射,這些映射可以在網絡的各個層中定義,以便它們能夠捕獲低、中、高級的表示信息,然后把注意力從教師網絡轉移到學生網絡,以提高后者的表現。如圖4 所示,AT 定義了基于激活值(神經元在預測過程的輸出)的注意力圖,其基本假設是隱藏層神經元激活的絕對值可以代表這個神經元的重要性,通過對同一空間位置不同通道的特征圖的統計,將C個通道的特征圖映射為單通道的注意力圖。通過讓學生網絡的注意力圖擬合教師網絡的注意力圖,并聯合目標任務損失對學生網絡進行訓練。
文獻[25]提出通過匹配注意力圖和它們的雅可比矩陣進行知識蒸餾,該蒸餾方法的教師和學生網絡結構可以是任意的。該方法主要利用了神經網絡雅可比矩陣兩個重要的性質:第一,維度與網絡結構無關,只與輸入和輸出的維度有關,因此,不同網絡的雅可比矩陣可以進行比較;第二,對于相同的網絡,不同的權重配置可能得到相同的雅可比矩陣,這是由于網絡的冗余性和損失函數非凸性造成的。
2.3.3 FSP 蒸餾
研究動機:卷積神經網絡是一個層次結構,特征從輸入到輸出逐層傳遞,神經網絡學習到的知識可以定義為如何構建一個從輸入到輸出的映射關系,進一步可以分解為層與層之間的特征變換關系,如圖5 所示。FSP(flow of solution procedure)蒸餾[57]將這種層與層之間的特征關系從教師網絡傳遞給學生網絡。單純地讓學生網絡模仿老師網絡生成的特征圖是硬約束,會讓學生網絡變得不靈活,因此更好的辦法是教會學生學習的過程,FSP 蒸餾定義了FSP 矩陣來刻畫層與層之間的特征關系,其核心思想便是授人以魚不如授人以漁。
方法實現:對于具有相同尺寸的特征圖,使用低層和高層不同通道的特征圖兩兩計算內積,得到的結果代表對應通道的兩兩特征圖的互相關值,將互相關值作為FSP 矩陣的對應位置的元素。FSP 矩陣的計算過程如式(4)所示。最后用L2損失去拉近教師和學生的FPS 矩陣之間的距離,通過構建如式(5)所示的FSP 損失聯合目標任務損失一起指導學生網絡訓練。FSP 蒸餾的概念圖如圖5[29]所示。


Fig.4 Concept map of knowledge distillation for attention transfer圖4 注意力轉移知識蒸餾概念圖

Fig.5 Concept diagram of FSP distillation圖5 FSP 蒸餾的概念圖

其中,F1和F2分別表示低層和高層特征圖;h和w分別表示特征圖的長和寬;i和j分別表示低層和高層特征圖的通道索引;x和W分別表示輸入和參數。
2.3.4 神經元選擇性轉移(NST)
研究動機:文獻[58]提出在知識蒸餾過程中,直接對特征圖進行匹配并不是最好的選擇,因為它忽略了樣本密度,并提出采用分布對齊的神經元選擇性轉移(neuron selectivity transfer,NST)方法。
方法實現:NST 的假設是每個神經元都從原始輸入中提取與目標任務相關的特定模式,因此,如果一個神經元在某些區域或樣本中被激活,這就意味著這些區域或樣本可能具有一些與任務相關的共同屬性。NST 通過匹配教師和學生網絡之間神經元選擇性模式的分布進行知識蒸餾,采用最大平均偏差(maximum mean discrepancy,MMD)作為損失函數來度量師生分布之間的差異,并結合目標任務損失對學生網絡進行訓練。
2.3.5 互信息知識蒸餾
研究動機:基于互信息的知識蒸餾[59,61]使用的手段是最大化教師和學生網絡之間的互信息,學生網絡通過學習教師網絡中激活值的分布最大化互信息,從而進行知識的傳遞。在學生網絡已知的條件下,當教師網絡的熵很小時,這說明學生網絡已經獲得了能夠擬合教師網絡所需要的知識,因此學生網絡的性能也已經接近教師網絡。如式(6)所示,在H(t)已知的條件下,H(t/s)的值越小時,互信息I(t;s)越大。

由于互信息的計算較困難,變分信息蒸餾(variational information distillation,VID)[31]采用變分信息最大化方案來最大化變分下界,如式(7)所示,即用一個可變高斯分布q(t/s)來模擬p(t/s),由于蒸餾過程中H(t)和需要學習的學生網絡參數無關,最大化互信息就轉換為最大化可變高斯分布的問題。

方法實現:學生網絡通過最小化與真實標簽的交叉熵損失,同時與教師網絡保持高度的互信息以學習教師網絡的知識。
2.3.6 因子傳輸(FT)
研究動機:當教師網絡和學生網絡在網絡結構、通道數量和初始條件等差距較大時,學生網絡不能很好地理解教師網絡特征圖中復雜的知識,受此啟發,文獻[60]提出使用通道擴展的方法——因子傳輸(factor transfer,FT)蒸餾去進一步解釋教師的知識,以幫助學生網絡學習。

Fig.6 Concept diagram of FT distillation圖6 FT 蒸餾的概念圖
方法實現:先將教師網絡特征圖的通道擴展k倍,使m個通道特征圖的知識轉化到m×k個通道上,再進行知識傳遞。整體架構如圖6[60]所示,在教師網絡指導層的特征圖后面連接一個額外的釋義器模塊,將特征圖通道數擴展為m×k。釋義器由卷積模塊組成,為了保證通道擴展后得到的信息可以完整地表示原始特征圖,在釋義器的輸入特征x和輸出特征p(x)間設置重建損失,對釋義者進行無監督訓練。相應地,在學生網絡的被指導層后連接一個適配器,適配器也由卷積模塊構成,目的是為了讓學生網絡的通道數與釋義器的輸出相匹配。通過式(8)計算蒸餾損失,其中,FT和FS分別表示釋義特征和適配器特征。

2.3.7 最佳指導路徑
研究動機:對于基于中間層的知識蒸餾,一個重要問題是如何確定最佳指導路徑,即確定教師網絡中的哪一層作為指導層和學生網絡中的哪一層作為被指導層,怎么能使學生網絡獲得最好的指導效果。如圖7 所示,文獻[62]提出一個迭代剪枝的優化方案來尋找最佳指導路線。
方法實現:將所有教師網絡和學生網絡特征圖尺寸一致的層構成的指導路徑作為指導路徑集合,在訓練超參數相同的情況下遍歷所有可能的路徑,動態確定最佳指導路徑。對學生網絡的特征圖使用1×1 的卷積核進行分析,這個操作可以降低特征圖的維度和計算復雜度,并過濾出獨特的通道特征。經過1×1 的卷積核提取的新特征圖用來與教師網絡的特征圖計算損失,損失函數如下所示:


Fig.7 Candidate paths of knowledge transfer圖7 知識傳遞的候選路徑

其中,u和v分別表示指導層和被指導層的深度嵌套函數,WT和WS分別表示教師網絡參數和學生網絡參數。r是應用在u上的知識投影函數,參數WTP是卷積適配層的參數。u、v和r必須在空間維度上具有可比性。
2.4.1 相關性知識蒸餾
(1)關系知識蒸餾
研究動機:文獻[63]提出了個體知識蒸餾(individual knowledge distillation,IKD)和關系知識蒸餾(relational knowledge distillation,RKD)的概念,IKD[23-24,51,55,60,64]使用單個輸入樣本在網絡特征提取過程中生成的特征圖或網絡的輸出作為知識進行蒸餾,使學生網絡的輸出模擬教師網絡的輸出,以此來模擬大模型的擬合能力。IKD 中每個輸入樣本都是獨立的,學生網絡只能學習教師網絡對單個輸入樣本的推理過程和輸出結果,無法學習到多個輸入樣本在教師網絡特征空間的相關性,這種相關性包含了教師網絡對類內樣本的聚合能力和類間樣本的區分能力,以及教師網絡的結構信息。

Fig.8 Individual knowledge distillation and relational knowledge distillation圖8 個體知識蒸餾與關系知識蒸餾
方法實現:如圖8[63]所示,RKD 算法的核心是以教師網絡的輸出為結構單元,取代IKD 中以教師網絡單個輸出為知識的蒸餾方式,RKD 利用多輸出組合成結構單元,更好地獲取教師網絡的結構化特征。RKD 學習的損失函數如式(11)所示,其中t1,t2,…,tn表示教師網絡的多個輸出,s1,s2,…,sn表示學生網絡的多個輸出,?是構建結構信息的函數,由兩個樣本之間的歐幾里德距離或三元組之間的角距離實現,l表示計算二者之間的差距。

(2)樣本關系圖蒸餾
研究動機:知識蒸餾的主要挑戰是如何從教師網絡中提取一般的、適度的、充足的知識來指導學生網絡。文獻[65]提出了一種用于知識提取的樣本關系圖(instance relationship graph,IRG),它對樣本特征、樣本關系和特征空間變換這三種知識進行建模,其概念圖如圖9[58]所示。

Fig.9 Concept diagram of instance relationship graph distillation圖9 樣本關系圖蒸餾示意圖
方法實現:首先,構造IRG,其中頂點表示訓練樣本,兩個頂點之間的邊權重表示樣本之間的相似性程度。然后,使用IRG 變換對從低層到更高層的特征空間轉換進行建模,盡管輸入樣本的特征在不同的網絡結構中通常具有不同的維度,但圖的大小總是相同的,因為節點的數量等于單次輸入訓練樣本的數量。最后,設計IRG 損失、IRG 變換損失以及目標任務損失的聯合損失函數,使用聯合損失函數指導學生網絡訓練。
(3)圖知識蒸餾
使用圖作為網絡中間層的拓撲表示,可以用來解釋網絡正在學習什么[66-67]或增強其魯棒性[68]。圖知識蒸餾(graph knowledge distillation,GKD)[69]可以看作是RKD 歐幾里德版本的拓展。在RKD 的基礎上,利用圖捕捉隱藏空間的幾何特征,建模多個樣本之間的關系距離,提取相關性知識,進行知識蒸餾。GKD 使用余弦距離來度量樣本相似性,余弦距離相對于歐氏距離,更多的是從方向上區分差異,而對絕對的數值不敏感,可以更準確地衡量樣本特征之間的相似性。為了避免過分重視離群值,對鄰接矩陣進行了規范化處理,使用huber損失作為損失函數。
文獻[70]在此基礎上對損失函數進行了擴展,提出了三元組蒸餾(triplet distillation),使用三元組損失[71],通過自適應地改變正負對之間的距離,將相似信息從教師網絡轉移到學生網絡。
(4)相似性保留知識蒸餾(SPKD)
研究動機:語義相似的輸入往往會在一個經過訓練的神經網絡中產生相似的激活模式,文獻[65]提出了相似性保留知識蒸餾(similarity-preserving knowledge distillation,SPKD),并提出輸入樣本之間的相似性反映了教師網絡在特征空間中表示特征的規律,有助于在特征空間中減小類內間距和增大類間間距,以提高學生網絡的學習效果。SPKD 使學生網絡不用去模仿教師網絡提取到的特征,只需要在自己的特征空間中保持樣本之間的相似性與教師一致即可。其概念圖如圖10[72]所示。

Fig.10 Similarity preserving knowledge distillation圖10 相似性保留知識蒸餾
方法實現:對于輸入的樣本數為b個的小批量圖像,選擇某一層特征圖計算形狀為b×b的相關矩陣,蒸餾損失定義在學生和教師產生的相關矩陣上。教師和學生網絡生成的相關矩陣的形狀都是b×b,因此不用刻意保證師生網絡的特征圖大小和通道數相等,放寬了教師網絡和學生網絡的選擇范圍,方法實現了更好的泛化。
(5)相關同余知識蒸餾(CCKD)
文獻[73]提出了相關同余知識蒸餾(correlation congruence for knowledge distillation,CCKD),將教師網絡對輸入樣本的預測輸出和樣本間相似性知識都傳遞給學生網絡。此外,為了更好地捕捉樣本之間的相關性,CCKD 使用高斯徑向基函數(Gaussian-RBF)去衡量樣本之間的相關性,該函數如下所示:

高斯徑向基函數是一種常用的核函數,其值只依賴于距離原點空間的歐氏距離。相比于雙線性池化[74],高斯徑向基函數在捕捉樣本之間復雜的非線性關系方面更為靈活和強大。
CCKD 的采樣策略:樣本之間的相關性是在小批量輸入中計算的,因此一個合適的采樣器對于平衡類內的一致性和類間的相關性非常重要。一種簡單的策略是均勻隨機抽樣,但是當類數較多時,所有樣本都屬于不同的類,這會導致類內相關性梯度的高偏差估計。為了解決這個問題,CCKD 采用兩種小批量采樣器策略:類均勻隨機采樣器和超類單形隨機采樣器。均勻隨機抽樣按類抽樣并隨機為每個抽樣類別選擇固定k個樣本數(例如,一個批次中包含5個類別,每個類別包含k=8 個樣本,組成一個包含40個樣本的批次)。超類單形隨機采樣器與類均勻隨機采樣器相似,不同之處在于,它通過超類對樣本進行采樣,超類是通過聚類生成的真實類的一種更軟的形式。為了得到訓練樣本的超類,首先使用教師網絡提取特征,然后使用K-均值聚類,樣本的超類被定義為它所屬的集群。由于超類改變了特征空間中樣本的粗糙結構,超類單形隨機采樣器比類均勻隨機采樣器更靈活,更能容忍不平衡標記。
(6)多頭圖蒸餾(MHGD)
文獻[75]提出了多頭圖蒸餾(multi-head graph distillation,MHGD)方法獲取輸入樣本的嵌入知識。首先提取網絡兩個層對應的特征映射,使用KD-SVD[56](knowledge distillation using singular value decomposition)通過徑向基函數將特征映射壓縮為特征向量,然后將小批量樣本輸入教師網絡,生成兩個特征向量集。通過計算兩個特征向量集之間的關系提取知識,使用傳遞知識的損失聯合目標任務損失同時指導學生網絡訓練。
2.4.2 基于生成對抗網絡的知識蒸餾
研究動機:基于生成對抗網絡(GAN)[26]的知識蒸餾,利用生成對抗策略以實現知識從教師網絡到學生的傳遞。當學生網絡比教師網絡小很多時,強迫學生網絡精確模擬教師網絡是很困難的,而GAN有助于保持輸出分布的多模態性質[60],并減小手工調參的誤差,學生網絡可以自動學習到良好的損失,轉移類間的相關性,提升學生網絡的性能。
方法實現:對抗知識蒸餾[76-78]將學生網絡作為生成器,先分別獲取生成器和教師網絡生成對輸入樣本的輸出概率分布,再使用判別器來區分學生網絡的輸出與教師網絡的輸出。學生網絡和判別器交替更新參數,其中判別器的更新為了更好地區分教師網絡的輸出與學生網絡的輸出,學生網絡的更新為了更好地欺騙判別器,使判別器無法區分學生網絡的輸出與教師網絡的輸出。經過學生網絡和判別器的多次交替更新后,并達到使判別器無法區分學生網絡的輸出與教師網絡的輸出的效果,最終實現學生網絡模擬教師網絡的目的。圖11 描述了基于生成對抗網絡的知識蒸餾的一般思想。

Fig.11 Knowledge distillation based on generative adversarial network圖11 基于生成對抗網絡的知識蒸餾
雖然判別器捕獲了教師和學生輸出的高級統計數據,但是缺少低級對齊,并且對抗性訓練過程很困難[76]。文獻[79]提出了更嚴格的訓練方式,其增加了判別器的預測目標,判別器除了預測真、假之外,還預測類別標簽,使對抗訓練變得更加穩定,鑒別器還可以在學生和教師的輸出之間提供類別級的對齊,判別器的輸出是一個C+2 維向量,帶有C個標簽預測和一個真/假預測。文獻[77]提出了KDGAN(knowledge distillation with generative adversarial networks)的框架,利用生成對抗網絡提取知識用于多標簽學習。KDGAN 框架定義為一個極大極小博弈,其中學生網絡、教師網路和判別器對立地訓練,極大極小博弈具有均衡性,有利于學生網絡更好地模擬真實數據的分布。在對抗性訓練中,利用具體的分布來控制梯度的方差,得到低方差的梯度估計以加速訓練。
目前知識蒸餾的評價體系尚未完善,本文在展望部分針對知識蒸餾評價標準的規范化提出一些建議,下面僅介紹目前知識蒸餾普遍使用的評價方法。
目前知識蒸餾的評價是通過圖像分類任務實現的,使用的數據集包括CIFAR-10、CIFAR-100、ImageNet、SVHN、ILSVRC2012、MNIST。其中CIFAR-10、CIFAR-100 為最常用的數據集。
CIFAR-10 是一個普適物體的小型彩色圖像數據集。一共包含10 個類別的RGB 彩色圖片:飛機、汽車、鳥類、貓、鹿、狗、蛙類、馬、船和卡車。每個圖片的尺寸為32×32,每個類別有6 000 個圖像,數據集中一共有50 000 張訓練圖片和10 000 張測試圖片。
CIFAR-100 包含100 個類別的RGB 彩色圖片,每個類包含600 個圖像,每類各有500 個訓練圖像和100 個測試圖像。CIFAR-100 中的100 個類被分成20個超類。每個圖像都帶有一個“精細”標簽(它所屬的類)和一個“粗糙”標簽(它所屬的超類)。
評價指標包括3 個:(1)學生網絡相對于教師網絡參數的減少量;(2)通過知識蒸餾后的學生網絡相比于教師網絡準確率的降低量;(3)通過知識蒸餾后的學生網絡相比于正常訓練的學生網絡準確率的提升量。第一個指標體現了算法對網絡的壓縮程度;第二個指標體現了在第一個指標對應的壓縮程度下,算法對準確率的損失程度;第三個指標體現了在第一個指標對應的壓縮程度下,該知識蒸餾算法的有效程度。
評價流程:(1)在實驗數據集上訓練多個教師網絡(如ResNet152、ResNet101、WRN40-2 等),訓練多個教師網絡的目的是為了后續測試算法對網絡結構和復雜度的泛化性。(2)對每一個教師網絡,都選擇多個不同復雜度的學生網絡(如ResNet50、WRN40-1、WRN16-2、WRN4016-1 等)進行蒸餾訓練,學生網絡的訓練與教師網絡使用相同的數據集,以進行準確率的對比,選擇多個不同復雜度的學生網絡的目的是為了測試算法對壓縮程度的魯棒性。一般情況下,當壓縮程度超出一定范圍時,蒸餾的效果會急劇下降。(3)使用正常的訓練方式,對學生網絡在相同的數據集上進行訓練,以測試蒸餾的有效性。
2.6.1 不同知識蒸餾技術的對比實驗
表4 展示了各種知識蒸餾方法的性能,實驗在CIFAR-100 數據集上對WRN40-2 進行兩種程度的壓縮,將WRN40-2 壓縮為WRN16-2 和WRN40-1。在兩種程度的壓縮中,KD 表現均最優;在WRN40-2 到WRN16-2 的壓縮中,AT 表現第二好;在WRN40-2 到WRN40-1 的壓縮中,VID 表現第二好。
表5 展示了不同知識蒸餾方法與KD 組合表現的性能,實驗在CIFAR-100 數據集上進行。將WRN40-2 壓縮為WRN16-2,有6 種知識蒸餾方法與KD 組合表現的性能超越KD 單獨使用的性能,其中AT+KD表現最優,這表明這6 種方法提取到了KD 缺乏的知識,與KD 存在互補關系。
2.6.2 對各種知識蒸餾技術的分析評價
知識蒸餾的發展關系如圖12 所示,其中第一部分為基于softmax 輸出層的知識蒸餾方法,第二部分為基于中間層的知識蒸餾方法,第三部分為相關性知識蒸餾,第四部分為對抗性知識蒸餾。下面對上述四種類型的知識蒸餾方法的優缺點進行分析評價,并對其拓展研究提供一些思路:

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
優點:KD 能夠有效地將大型教師網絡壓縮為小型學生網絡,實現思路簡單,適用于任意網絡結構,在多分類任務中表現了優秀的性能。

Fig.12 Development of knowledge distillation圖12 知識蒸餾的發展關系
缺點:該方法也存在著一定的局限性,由于它是基于softmax 層輸出的概率分布,嚴重依賴類的數量,因此應用場景只能局限于多分類問題,在二分類甚至目標類別較少的情況以及回歸問題的表現并不理想;并且softmax 輸出層位于網絡的最后,特征經過多次池化降維,所包含的信息量較少,提取到的知識語義程度太高,單純地擬合教師網絡的輸出可能會造成學生網絡的過擬合,影響學生網絡的學習效果。
拓展研究:KD 在知識蒸餾的快速訓練方向有著良好的發展潛力,由于KD 傳遞的知識位于網絡的輸出層,KD 可以通過多模型集成的思路,將多個小模型同時訓練,把小模型的預測輸出通過集成產生知識,同時使用知識對其中的小模型進行指導,從而實現一階段訓練的知識蒸餾,達到快速訓練的效果;探索可以與KD 結合使用的中間層知識蒸餾方法,實現對輸出層知識的補充,從而達到更好的蒸餾性能。
(2)基于中間層的知識蒸餾
優點:大量的研究人員提出了各式各樣的知識提取方法,包括AT、FSP、NST、VID、FT 等,基于中間層的知識蒸餾取得了較好的效果,相對于基于softmax 輸出層的知識蒸餾,其擁有更豐富多樣的知識提取和傳遞的手段,同時也擁有更廣闊的發展潛力和研究價值,其應用范圍也取得了極大的擴展,不再依賴分類任務以及類的數量,可以應用在檢測和分割任務上。通過實驗發現,AT 實現了最好的性能,FSP和FT 可以幫助學生網絡提高收斂速度。
缺點:由于中間層的特征維度比輸出層龐大很多,因此加劇了訓練難度;并且在學生網絡固定的時候,很難確定最優的指導路線以及最佳的指導教師,增加了人工調參的難度,可能需要多次調參才能獲得訓練最佳的學生網絡;基于中間層特征圖的知識蒸餾方法實現相對復雜,AT 需要教師網絡和學生網絡的特征圖適配,實際應用中可能會需要額外的適配操作,FT 需要提前對釋義器進行額外的訓練,同時釋義器和適配器會增加額外的參數;基于中間層知識蒸餾的研究動機大多從試探的角度出發,該方向的研究缺乏明確的理論知識指導,需要較高創新直覺。
拓展研究:基于中間層的知識蒸餾是目前知識蒸餾領域的熱點研究,該方向可以結合神經網絡最新的研究成果,探索更有效的知識提取和傳遞的手段。在AT 的基礎上可以探索結合更多類型的注意力機制的蒸餾方法,如空間注意力機制、通道注意力機制、混合型注意力機制以及自注意力機制等;如何選擇教師到學生的指導路徑也是重要的研究方向。
(3)相關性知識蒸餾
優點:相關性知識蒸餾有利于減少特征空間中的類內間距,擴大類間間距,對不同的網絡結構具有較強的魯棒性。
缺點:相關性知識蒸餾傳遞的知識太雜亂,各個損失分量之間的權重比例缺乏規律性,需要多次調參和試錯才能找到較好的訓練效果;由于相關性知識需要從批量數據中提取,輸入數據的類別分布對蒸餾的效果也有較大的影響。
拓展研究:相關性知識蒸餾從樣本的角度出發,因此,對輸入樣本進行預處理和采樣策略可以作為重點研究方向。
(4)基于生成對抗網絡的知識蒸餾
優點:基于生成對抗網絡的知識蒸餾提供了知識蒸餾的一種全新的思路,通過使用鑒別器和學生網絡交叉迭代訓練使學生網絡不斷向教師網絡靠近,該方法可以實現端到端的訓練,解決了人工調參帶來的誤差和麻煩,而且訓練效果較好。
缺點:由于這種訓練方式使學生網絡僅僅模擬教師網絡的輸出端,無法學習到教師網絡內部更豐富的知識,并且鑒別器和學生網絡的交叉迭代訓練造成網絡收斂速度慢,訓練時間長。
拓展研究:基于生成對抗網絡的知識蒸餾作為知識蒸餾的一個新的領域,以對抗訓練作為訓練手段,探索可以結合網絡中間層知識的方法,以實現更好的蒸餾效果和更快速的訓練。
隨著深度神經網絡研究的不斷深入以及對神經網絡網絡輕量化日益擴大的應用需求,知識蒸餾技術在未來一定會大放異彩,未來的研究工作可參考如下幾方面。
(1)更有效的知識提取
在知識蒸餾中,最重要的一個環節就是如何從教師網絡中提取能夠有效地指導學生網絡進步的知識,基于注意力機制和相關性等提取知識的方法展現了不錯的效果,但提取到的知識還是不夠準確和有效,學生網絡需要更精準的教師網絡知識以獲得更好的指導效果,因此如何改進知識提取的方法有很大的研究意義也是目前研究亟需解決的問題。
(2)知識蒸餾技術的研究領域擴展
現階段知識蒸餾技術的研究主要是在分類問題上的,對于檢測、分割等復雜任務的應用上還存在一定的局限性。對于同樣的知識蒸餾算法,應用在分類問題上的壓縮有著很好的效果,而應用到目標檢測任務時性能可能會大幅降低,主要有以下幾點原因:基于輸出層的知識蒸餾方法是針對分類問題提出來的,它的假設是所有的輸出類別有著相同的重要性,但是目標檢測任務中,通常背景類所占比例要遠高于目標類;檢測任務相對于分類任務更復雜,需要同時處理目標分類和邊框回歸問題,對網絡能力有更強的要求;檢測任務主要關注物體真實標簽重疊的局部區域,而分類模型更關注全局背景,在檢測任務中,知識蒸餾將整個教師網絡的知識提取給學生網絡,其中包含了學生不需要的知識,冗余的知識會影響蒸餾的效果。因此知識蒸餾技術在目標檢測的應用還存在著許多問題需要克服,這也正是知識蒸餾技術未來重要的研究方向。
(3)與網絡剪枝技術等策略結合
基于知識蒸餾的網絡壓縮技術使小型網絡超越自己正常的訓練極限,達到與大型網絡相當的準確率,但是經過知識蒸餾訓練完成的小型網絡的參數仍然存在大量冗余,網絡剪枝技術剛好可以很好地解決這個問題,通過知識蒸餾技術和網絡剪枝技術的聯合使用可以更大程度地壓縮網絡,因此如何將兩種壓縮技術不沖突地聯合起來,減少人工調參的難度,實現端到端的快速訓練有進一步的研究價值。
(4)邊緣端AI芯片限制條件下的應用
民用方面如在手機、智能監控攝像頭以及移動穿戴式設備對神經網絡能夠部署到邊緣端智能芯片的應用日益增多,軍用方面如無人機敵情偵察、衛星導彈的智能化也有著同樣迫切的需求。但是在面對邊緣端AI 芯片的算力和功耗等限制條件下,知識蒸餾技術壓縮得到的小型網絡參數的精度仍然很高,會消耗非常多的計算資源,因此知識蒸餾技術結合參數量化技術對神經網絡從學術研究到工業落地有著巨大的應用潛力,需要結合特定的應用場景、計算環境約束、待分析的目標特性、特殊的知識類型,展開個性化研究。
(5)評價標準規范化
目前對網絡壓縮中的知識蒸餾技術的評價主要側重于準確率、模型內存等方面,但使用更加全面的評價指標對于發現不同算法的優缺點是大有裨益的。
由于在工程上經常有快速訓練的需求,不同算法訓練時消耗的計算資源和訓練時間也可以作為一種衡量算法的評價指標;由于簡化后的網絡模型往往是在資源受限的設備上運行,乘加運算量、硬件能耗也是重要的評價指標。
由于知識蒸餾壓縮的效果與教師、學生網絡的選取以及壓縮的程度有密切的關系,在超出一定壓縮程度后,某些知識蒸餾方法的壓縮效果會急劇下降。因此,在知識蒸餾的理論研究中,非常有必要建立標準完備的用于壓縮效果評價的網絡集合。該集合包含多個網絡壓縮對,每個網絡壓縮對都單獨對應一個教師網絡和一個學生網絡(如網絡壓縮對ResNet152 與ResNet101,ResNet152 與ResNet50,WRN40-2 與WRN40-1,WRN40-2 與WRN16-2 等),每個網絡壓縮對也都標志著具體的網絡結構和壓縮程度。網絡壓縮中各種知識蒸餾算法都使用這個集合在固定的公開數據集上進行蒸餾效果的比較,以呈現該算法在不同網絡結構、不同壓縮程度下的壓縮效果,以使實驗結果更加具有說服力,以更清晰地呈現不同算法的優劣性和泛化性。
本文簡述了網絡壓縮方法的發展淵源,在簡單對比典型網絡壓縮技術的基礎上,重點針對近年深度神經網絡壓縮知識蒸餾技術進行了詳細的梳理,全面介紹了近年知識蒸餾技術的典型探索,并給出了未來該技術研究拓展的初步思考,希望對當前及未來知識蒸餾技術的研究工作有所幫助。