華為諾亞方舟實驗室聯合悉尼大學發布論文《Kernel Based Progressive Distillation for Adder Neural Networks》,提出了針對加法神經網絡的蒸餾技術,ResNet-34和ResNet-50網絡在ImageNet上分別達到了68.8%和76.8%的準確率,效果與相同結構的CNN相比持平或超越,該論文已被NeurIPS2020接收。
開源鏈接:
huawei-noah/AdderNet?github.com
論文鏈接:
https://arxiv.org/pdf/2009.13044.pdf?arxiv.org
研究背景
深度卷積神經網絡(CNN)被廣泛應用于諸多計算機視覺領域的實際任務中(例如,圖片分類、物體檢測、語義分割等)。然而,為了保證性能,神經網絡通常是過參數化的,因此會存在大量的冗余參數。近期提出的加法神經網絡(ANN),通過將卷積操作中的距離度量函數替換為L1距離,極大減少了神經網絡中的乘法操作,從而減少了網絡運行所需的功耗和芯片面積。
然而,ANN在準確率方面和同結構的CNN相比仍然有一定差距,在某種程度上限制了ANN在實際應用中對CNN的替換。為了提高ANN的性能,我們提出了一種基于核的漸進蒸餾方法。具體的,我們發現一個訓練好的ANN網絡其參數通常服從拉普拉斯分布,而一個訓練好的CNN網絡其參數通常服從高斯分布。因此,我們對網絡中間層的特征圖輸出進行核變換后,使用距離度量函數估計教師網絡(CNN)和學生網絡(ANN)之間的損失。對于最后一層,我們使用傳統的KL散度估計兩個網絡之間的損失。同時,在訓練中我們使用隨機初始化的教師網絡,與學生網絡同時訓練,以減少兩個網絡之間參數分布的差異性。
實驗表明,我們的算法得到的ANN能夠在CIFAR-10,CIFAR-100,ImageNet等標準圖片分類數據集上達到或超越同結構CNN的準確率。
對網絡中間層特征圖輸出進行核變換
ANN本身精度不好的原因是原始ANN在反向傳播時,使用的是近似的梯度,導致目標函數無法向著最小的方向移動。傳統KD方法應用到ANN上效果不佳的原因,在于ANN的權重分布是拉普拉斯分布,而CNN的權重分布為高斯分布,因此分布不同導致無法直接對中間層的feature map使用KD方法。本方法首先將核變換作用于教師網絡和學生網絡的中間層輸出,并使用1x1卷積對新的輸出進行配準。之后,結合最后一層的蒸餾損失與分類損失,得到整體的損失函數。
漸進式蒸餾算法
傳統的蒸餾方法使用固定的,訓練好的教師網絡來教學生網絡。這樣做會帶來問題。由于教師網絡和學生網絡處于不同的訓練階段,因此他們的分布會因為訓練階段的不同而不同,所以會導致KD方法效果不好。因此我們采用漸進式蒸餾方法,讓教師網絡和學生網絡共同學習,有助于KD方法得到好的結果。即目標函數變為:
其中b為當前的step。
實驗結果
我們在CIFAR-10、CIFAR-100、ImageNet三個數據集上分別進行了實驗。
下表是在CIFAR-10和CIFAR-100數據集上的結果,我們使用了VGG-small、ResNet-20與ResNet-32作為教師網絡,同結構的ANN作為學生網絡。可以看到,使用了本方法得到的ANN在分類準確率上相比原始的ANN有大幅度的提升,并且能夠超過同結構的CNN模型。表格中#Mul表示網絡中乘法操作的次數。#Add表示加法操作次數,#XNOR表示同或操作的次數。
下表展示了在ImageNet數據集上的結果,我們使用ResNet-18與ResNet-50網絡作為教師網絡,同結構的ANN作為學生網絡。結果顯示我們的方法得到的ANN在分類準確率上相比同結構CNN基本相同或能夠超越。
最后,我們展示了ResNet-20,ANN-20與通過本方法得到的PKKD ANN-20模型在CIFAR-10與CIFAR-100數據集上的訓練精度曲線與測試精度曲線。
圖中的實線表示訓練精度,虛線表示測試精度。在兩個數據集中,CNN的訓練和測試準確率都超過了原始的ANN模型。這是因為在訓練原始ANN時,反向傳播的梯度使用的是L2 norm來近似,因此梯度方向是不準確的。當使用本方法后,CNN的訓練過程可以指導ANN的訓練,因此可以得到更好的結果。同時,知識蒸餾方法能夠幫助學生網絡防止過擬合,這也是我們的方法有最低的訓練精度和最高的測試精度的原因。
推薦閱讀
文章首發知乎,更多深度模型壓縮相關的文章請關注深度學習壓縮模型論文專欄。
審核編輯:符乾江
-
計算機視覺
+關注
關注
8文章
1698瀏覽量
46032 -
深度學習
+關注
關注
73文章
5507瀏覽量
121294
發布評論請先 登錄
相關推薦
評論