CVPR2020論文點評: AdderNet(加法網絡)


CVPR2020論文點評: AdderNet(加法網絡)

論文原文鏈接:https://arxiv.org/pdf/1912.13200.pdf

源碼鏈接:https://github.com/huawei-noah/AdderNet

 

 

 

簡要

與簡單的加法運算相比,乘法運算具有更高的計算復雜度。深度神經網絡中廣泛使用的卷積正好是來度量輸入特征和卷積濾波器之間的相似性,這涉及浮點值之間的大量乘法。現在作者提出了加法網絡(AdderNets)來交換深度神經網絡中的這些大規模乘法,特別是卷積神經網絡(CNNs),以獲得更簡易的加法以降低計算成本。

 

 

 加法器網絡簡介

只有加法也能做深度學習,性能不輸傳統CNN。

在深度學習里,乘積是個避免不了的運算,比如做圖像識別的卷積層,就需要做大量的乘法。

但是,與加法運算相比,乘法運算的計算復雜度高得多。

現在的深度學習在很大程度上依賴於GPU硬件,做大量的乘法運算,限制了它在移動設備上的應用,需要一種更高效的方法。

加法器網絡的核心在於: L1距離代替歐氏距離。L1距離是求兩點之間坐標差值的絕對值之和,因此全程不涉及乘法。

 

在加法器網中,作者以濾波器與輸入特征之間的L1范數距離作為輸出響應。分析了這種新的相似性度量對神經網絡優化的影響。為了獲得更好的性能,通過研究全精度梯度開發了一種特殊的反向傳播方法。然后,作者還提出了一種自適應學習率策略,根據每個神經元梯度的大小來增強加法網絡的訓練過程。

 

 

 

 

 

上圖就是加法網絡的特征可視化結果。

不同BIT乘法和加法的運算代價對比。

 

 

 


研究背景

雖然深度神經網絡的二值化濾波器大大降低了計算成本,但原始識別精度往往無法保持。此外,二進制網絡的訓練過程不穩定,通常要求較慢的收斂速度和較小的學習速率。經典CNN中的卷積實際上是測量兩個輸入的相似性。研究人員和開發人員習慣於將卷積作為默認操作,從視覺數據中提取特征,並引入各種方法來加速卷積,即使存在犧牲網絡能力的風險。但幾乎沒有人試圖用另一種更有效的相似性度量來取代卷積。事實上,加法的計算復雜度要比乘法低得多。因此,作者有動機研究用卷積神經網絡中的加法代替乘法的可行性。

 


相關工作

Network Pruning

網絡剪枝主要通過移除冗余的權重來實現網絡的壓縮和加速。比如用奇異值分解(SVD)全連接層的權重矩陣、去除預訓練中的部分權重、將filter變換到頻域避免浮點計算。還有的通過去除冗余的filter、或者對channel進行選擇這樣冗余filter/channel后續的計算就無需考慮了。

 

 

 

 Efficient Blocks Design

Knowledge Distillation

除了去除網絡中的冗余連接,Hinton還提出了knowledge distillation的概念,借助teacher網絡的學習能力來指導student網絡完成復雜任務的學習,變種有多個teacher網絡、對中間隱層的學習以及對不同teacher網絡學到的特征整合成新的知識來幫助student網絡的訓練。

 Adder Network

 

 

不同類別的CNN特征按其角度來划分。由於AdderNet使用L1范數來區分不同的類,因此AdderNet的特征傾向於聚集到不同的類中心。

對於CNN中的卷積運算,假定輸入X,filter表示為F,卷積后輸出的是二者的相似性度量,表述如下面公式:

 

 

 

實際上二者的相似性度量可以有多種途徑,但都涉及到大量的乘法運算,這就增加了計算開銷。因此作者通過計算L1距離完成輸入和filter之間的相似性度量。而L1距離僅涉及到兩個向量差的絕對值,這樣輸出就變成了如下:

 

 

 

注意到使用互相關運算還是L1距離都可以完成相似性度量,但二者的輸出結果還是有一些差別的。通過卷積核完成輸入特征圖譜的加權和計算,結果可正可負;但adder filter輸出的結果恆為負,為此作者引入了batch normalization將結果歸一化到一定范圍區間內從而保證傳統CNN使用的激活函數在此依舊可以正常使用。雖然BN的引入也有乘法操作但計算復雜度已遠低於常規卷積層。conv和BN的計算復雜度分別如下:

 

 

 Optimization

神經網絡利用反向傳播來計算濾波器的梯度和隨機梯度下降來更新參數。在CNN中,輸出特征Y相對於濾波器F的偏導數被計算為:

 

 

 但是在AdderNets中,Y相對於濾波器F的偏導數是:

 

 

 但signSGD優化方法幾乎不會選擇到最陡的方向,而且隨着維度增加效果會更差,因此本文使用如下公式進行梯度更新:

 

 

 此外,如果使用full-precision gradient的更新方法,由於涉及到前層的梯度值很容易導致梯度爆炸,因此本文還通過使用HardTanh將輸出限定在[-1,1]范圍內。

 

 

 

輸出特征Y相對於輸入特征X的偏導數計算為:

 

 

 Adaptive Learning Rate Scaling

在傳統的CNN中,假設權值和輸入特征是獨立的,服從正態分布,輸出的方差大致可以估計為:

 

 

 相反,對於AdderNets,輸出的方差可以近似為:

 

 

 AdderNets的輸出具有較大方差,在更新時根據常規的鏈式法則會導致梯度比常規CNN更小,從而導致參數更新過慢。因此自然而然想到通過引入自適應學習率調整參數的更新learningrate組成:

 

 

 包括神經網絡的全局學習率和本地學習率,其中本地學習率表示為:

 

 

 這樣可以保證每層更新的幅度一致,最終AdderNet的訓練過程表述為:


 

 

 

實驗

在MNIST、CIFAR及ImageNet數據集山驗證了AdderNet的有效性,隨后進行了消融實驗以及對提取的特征進行可視化。實驗平台和框架:V100 Pytorch。

CIFAR-10和CIFAR-100 datasets分類結果

 

 

 ImageNet datasets分類結果

 

 

 

AdderNet使用L1距離來度量輸入與filter之間的關系,而不是使用卷積的互相關。因此需要探究一些AdderNet與CNN特征空間上的差異。因此就在MNIST數據集上搭建了LeNet++:6conv+1fc,每層神經元數目依次為:32,32,64,64,128,128,2。同樣其中的conv層用add filter替換可視化結果如圖1所示,CNN的可視化結果為右側,相似度通過cosin計算得到的,因此分類通過角度進行的分類。左側是AdderNet的可視化結果,可以看到不同種類的聚類中心不同,這也驗證了AdderNet具有同CNN相似的辨別能力。

 

 

 

對filter的可視化結果如上圖所示,雖然AdderNet和CNN用的度量矩陣不同,但都具有特征提取的能力。

Learning curve of AdderNets using different optimization schemes 

 

 

 

權重分布的可視化

對LeNet-5-BN的第三層進行可視化,AdderNet權重更接近Laplace分布,CNN的權重近似高斯分布,分別對應L1-norm和L2-norm。

 

 

 

注:左邊是AdderNet,右邊是CNNs

不過AdderNet仍需自己訓練,官方表示將很快發布預訓練模型。

現階段的AdderNet並非沒有缺陷,作者在項目主頁中說,由於AdderNet是用加法過濾器實現的,因此推理速度較慢,需要用CUDA編寫才能提高速度。這與作者希望提高神經網絡運算速度的初衷還有一段距離。但這篇論文的作者表示,今后還會繼續加法器神經網絡的研究,發表更多的成果,讓我們一起期待這項研究取得新的進展吧。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM