NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

作者:竇中鑫(中國傳媒大學)
編輯:王萌

論文

Kernel Based Progressive Distillation for Adder Neural Networks:基於核的漸進式蒸餾的加法神經網絡

一.簡介

加法器神經網絡(ANN)提供了一種低能耗深層神經網絡的新方法。但是,當用加法替換所有卷積時,精度會下降。作者認爲這主要是由於使用L1範數前向傳播的ANN優化比較困難帶來的問題。在訓練原始ANN時,反向傳播的梯度使用的是L2範數來近似,因此梯度方向是不準確的。在本文中,作者提出了一種新的方法,通過基於核的漸進式知識蒸餾(PKKD)方法,進一步提高了人工神經網絡的性能,而又不增加可訓練的參數。

方法爲:具有相同架構的卷積神經網絡(CNN)被初始化和訓練爲T-net,ANN和CNN的特徵和權重將被轉換到一個新的空間,即使用基於核的方法在更高維的空間中進行處理,消除它們的分佈差異,應用知識蒸餾的方法進行學習。最後,根據ground-truth和T-net的信息逐步學習所需的信息。

二.問題解決

作者想用具有相同架構和可學習參數數量的卷積網絡來幫助訓練S-net。此時困難就出現了,作者分別分析ANN和CNN中的權重分佈,發現ANN中的權重服從拉普拉斯分佈,而CNN中權重參數通常是高斯分佈,因此想要直接匹配兩者的特徵信息是十分的困難的,正是基於此,作者開發了一種基於核的方法來將這兩種神經網絡的特徵和權重映射到同一個空間去尋求一致性。

CNN使用高斯核,ANN使用拉普拉斯核,來轉換特徵和權重到一個新的空間,然後再利用知識蒸餾的方法將有用的T-net信息傳遞到S-net,此外,作者採用漸進式蒸餾方法來指導ANN的訓練,進一步提升精度。

2.1問題


提出

首先我們來回顧CNN與ANN前向傳播操作:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

但是相同結構的CNN和ANN還是有比較大的精度差別,本文就是爲了解決這個問題。

2.2初步解決方案


作者想通過知識蒸餾的方法來提升ANN的精度:

我們來回顧一下KD loss function:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

也就是交叉熵損失,也就是S-net網絡的輸出,也就是T-net的輸出。

傳統的KD loss使用軟標籤融合ground-truth和T-net的輸出,因此有:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

(有關知識蒸餾的具體細節可以在網上查閱)作者提到,由於CNN和ANN使用相同的神經網絡結構,因此更容易學到一些每層間的知識。從此處開始探索如何應用知識蒸餾的方法進行學習。

2.3具體分析


兩者前向傳播函數大不相同,而ANN輸出分佈函數和CNN輸出分佈函數也有很大的不同:

CNN:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡
ANN:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

通過比較以上兩個輸出分佈函數可以看出,除非巧妙設計輸入的分佈,否則ANN與CNN的分佈幾乎不可能相同。因此很難通過MSEloss來匹配輸出特徵。因此不能套用原來的蒸餾方法。

2.4問題解決——用核方法來解決這個問題


首先我們先來看一下本文中用到的兩個核函數:高斯核:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

拉普拉斯核:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

基於以上兩個函數更改前後輸出特徵對比:

CNN:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

ANN:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

這便將輸入和權重映射到更高維度的空間。在新的空間輸出特徵圖。我們可以看到此處新的公式高斯核的形式有所改變,但是效果是不變的,作者在原文中給出了證明:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

除了使用核函數,作者還提到進一步用線性變換來匹配新輸出的兩個分佈。總結就是選取合適的核函數的參數——平滑輸出分佈,並使用線性變換,減小輸出特徵分佈差異,更好的匹配兩者的特徵。因此,作者將用於計算KD loss的中間層輸出定義爲:

CNN:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

ANN:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

2.5漸進式學習


總體算法流程如下:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

作者首先分析了目前某些情況下,知識蒸餾不能很好發揮作用的原因。

1.T-net和S-net的結構差異較大

2.T-net和S-net的訓練階段差別較大

作者經過分析,認爲問題主要出現在第二個原因上

因此設計此處具體步驟爲:給定一批輸入數據,首先用交叉熵損失更新CNN參數,之後ANN使用當前的CNN權重通過KD loss進行學習:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

b爲當前的步數。更新ANN的參數,在進行反向傳播時,KD損失僅通過ANN進行反向傳播,CNN的學習不受干擾。

三.實驗結果分析

實驗設置:400epochs,batch size=256,cosine learning rate decay,

3.1基於MNIST數據集將分類結果可視化


NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

可以看出PKKD ANN兼具了ANN與CNN的特性,既能將不同的類別按照不同的角度分開,又可以把不同的類別分成不同的聚類中心。

3.2不同實驗設置對比


NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

經過實驗對比,證明漸進式的學習CNN,以及核方法的有效性。

3.3作者在CIFAR-10,CIFAR-100,ImageNet上分別進行了實驗


CIFAR-10,CIFAR-100:
NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

下面是ResNet-20,ANN-20,PKKD ANN-20的訓練和測試epoch與accuracy曲線圖:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

可以看出PKKD ANN效果完全超過了CNN,尤其可以看出PKKD ANN訓練時精度最低,但是測試時的精度卻是最高的,這驗證了KD方法有助於防止S-net的過擬合。採用不同的參數設置的時候的實驗效果:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

ImageNet:

NIPS2020 | 基於核的漸進式蒸餾的加法神經網絡

在ImageNet的數據集上,效果也是非常的好,我們可以看出採用ResNet-50的結構的時候PKKD ANN的效果是非常不錯的。但是在ResNet-18的網絡中PKKD ANN效果卻要差於CNN,其原因還有待考究。

四.總結

問題:ANN與CNN精度有差距

提出解決:用知識蒸餾方法解決

問題:CNN與ANN輸出特徵分佈差別較大

提出解決:用核函數的方法映射到高維空間,並用一些tricks縮小CNN與ANN輸出特徵分佈差異

提高:漸進式蒸餾方法同時更新CNN和ANN參數提升精度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章