深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降

AIBigbull2050發表於2020-01-08


2020-01-07 13:40:28

機器之心報導

參與:思、一鳴

深度學習對算力要求太高,怎麼簡化計算複雜度呢?北大、華為諾亞方舟實驗室等提出完全用加法代替乘法,用 L1 距離代替卷積運算,從而顯著減少計算力消耗。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


和加法運算相比,乘法運算在計算複雜度上要高很多。在深度學習中,被廣泛使用的卷積運算相當於是衡量輸入特徵和卷積濾波器之間相似度的交叉相關計算。在這一過程中需要很大規模的浮點乘法,因此很多研究都在考慮將乘法運算換成等價的加法運算。
近日,北大、華為諾亞方舟實驗室等的研究者提出了一個名為 AdderNets 的網路,用於將深度神經網路中,特別是卷積神經網路中的乘法,轉換為更簡單的加法運算,以便減少計算成本。
在 AdderNets 中,研究者採用了 L1 正則距離,用於計算濾波器和輸入特徵之間的距離,並作為輸出的反饋。為了取得更好的效能,研究者構建了一種特殊的反向傳播方法,並發現這種幾乎完全採用加法的神經網路能夠有效收斂,速度與精度都非常優秀。
從結果來看,AdderNets 在 ResNet-50 上 對 ImageNet 資料集進行訓練後,能夠取得 74.9% 的 top-1 精確度和 91.7% 的 top-5 精確度,而且在卷積層上不使用任何乘法操作。
這一研究引起了深度學習社群的熱議。
一些網友認為這是一個不錯的研究,如果通過簡化計算複雜度,讓 CPU 執行本應當由 GPU 執行的計算,則是一個很好的改進了。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


但是一些人也提出了質疑,比如無法完全展示效能提升和功耗下降的定量表現。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


當然,考慮到一些 CUDA 對某些運算進行了特別的優化,因此即使有計算改進,通過這些硬體可能也無法展示真實的效能提升。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


至於論文是否如聲稱的效能和優勢,機器之心在此對論文進行了節選和解讀,感興趣的讀者們可以在評論區討論。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


論文地址:https://arxiv.org/pdf/1912.13200v2.pdf
為什麼需要替代乘法
有了 GPU 進行加速,即使是有著上億浮點數乘法計算的卷積神經網路也可以得到加速。然而,高階 GPU 顯示卡具有很高的能耗,使得在移動裝置上部署深度學習系統變得很困難。
加法、減法、乘法和除法是四種基本的數學運算。我們都知道,乘法比加法執行速度更慢,但是在前向計算中,深度神經網路中的大部分計算都來自浮點值權重和浮點啟用值的乘法操作,因此許多研究都在探索如何將乘法換成加法。
其中一項開創性的工作便是 BinaryConnect。這一演算法強制網路權重為二值化(如 -1 或 1),因此許多乘積運算被替換為簡單的加法計算。
儘管通過二值化過濾器的深度神經挽留過極大地減少了計算量,但是網路也通常不太可能維持原來的識別精確度。此外,訓練二值網路的過程也不是穩定的,經常會需要更慢的收斂速度和很小的學習率。
但實際上,經典 CNN 中的卷積計算實際上是對兩個輸入(輸入特徵和濾波器)之間進行互相關性的計算。這一點認知非常重要,這也是整篇論文的出發點。
既然卷積操作的實質是輸入特徵和給定濾波器之間進行的相似度度量計算,那麼是否可以使用加法的方式代替乘法進行相似度計算呢?本文的研究者遵循這一思路想到了一種方法。
沒有乘法的神經網路
在這篇論文中,研究者提出了一種名為 AdderNet 的神經網路,他們希望儘可能使用加法,而不像卷積運算那樣大量使用乘法。想象一下,如果給定一系列微小的模式,並將它們作為神經網路中的「濾波器」,那麼 L1 距離能很好地度量輸入資料與模式之間的絕對差異。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降

圖 1:AdderNet 和 CNN 的特徵視覺化。
如上圖 1 所示,對於卷積網路來說,不同的類別可以通過角度來確定。而對於 AdderNet,因為採用 L1 距離度量不同類別的絕對誤差,它的特徵會像聚類那樣聚集在不同的叢集中心。研究者表示,這樣的視覺化旨在說明 L1 距離可以像卷積網路中的「濾波器」一樣,它們都可以作為一種度量輸入特徵與特定模式之間距離的方法。
因為減法可以通過加法的補碼(補碼:用二進位制進行正負變號的方法)來實現,因此 L1 距離同樣對硬體非常友好,相當於它只會用了加法。這樣只包含加法的運算,是替代卷積運算的一種好方法。當然,採用了 L1 距離,反向傳播也需要修正,研究者設計了一種帶正則梯度的方法以確保不同的「模式」能夠有充足的更新,並構建更好的網路收斂行為。
研究者表示,他們設計的 AdderNet 已經在多種基準上做了充足的實驗,令人驚喜的是,AdderNet 不僅能收斂到與傳統 CNN 相近的準確率,同時推斷速度還快得多。
從乘法到加法的卷積計算
原始的卷積計算如下所示,假設有一組濾波器

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降

,它會對輸入

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降

執行卷積運算。其中 c_in、c_out 為輸入和輸出的通道數,H、W 分別為特徵的高和寬。輸出特徵 Y 便是濾波器和輸入特徵的相似度度量,如下所示:


深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


在這裡,S(·,·) 表示為兩者之間的相似度度量函式。如果我們採用互相關作為度量標準,那麼 S() 就是乘法運算,常規的卷積運算就是採用這種方法。
論文中,研究者將互相關性換成了 L1 距離,L1 距離是一種加法操作——用於計算兩個向量表示之間所有點的絕對距離之和。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


根據這一定義,如上所示公式 1 可以被改寫為 X 和 F 之間的減法計算,而減法的補碼直接是加法,因此也相當於只有加法運算。
這樣一來,卷積計算中最消耗算力的部分被代替,因此極大地加快了運算速度。
反向傳播如何設計
原始的反向傳播公式如下所示,其中 i ∈ [m,m+d],j ∈ [n,n+d]。要更新「濾波器」F,就要計算距離 Y 對 F 的偏導數,因為相似性是靠乘法 X*F 來計算的,因此偏導就為 X。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


由於在 AdderNet 中,距離 Y 是由 X 和 F 之間的 L1 距離獲得的,即通過 |X-F|完成運算,那麼最直觀的梯度運算應該是採用符號函式 Sgn():

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


也就是說,但 X-F 距離為正,那麼梯度為 1,反之梯度為 0 或-1。這樣看起來收斂就不會穩定,因為即使距離再大,它的梯度也恆為 1 或-1。現在我們需要改造這樣的傳播公式,研究者提出了以下反向傳播公式:

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


可以看出來,這樣的梯度是由 L2 範數推匯出來的,因為 L1 範數與 L2 範數都能度量兩者的距離,所以採用 L2 範數的梯度更新 L1 範數的表示式,直觀上應該是可行的。
研究者將這種方法被稱為全精度梯度(full-precision gradient),但是在沒有符號函式整流的情況下,梯度可能會隨著層積累而導致梯度爆炸的情況。因此,研究者加上了一個梯度裁剪操作,使對 X 的梯度限定在 [-1,1] 的範圍內。最終的公式如下所示,其中 HT 是裁剪梯度的一個運算。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降


除了反向傳播之外,研究者還在學習率等方面進行了改進,加強了模型的訓練能力。
沒有乘法的模型真的能收斂?
為了證明 AdderNet 的有效性,研究者在 MNIST、CIFAR 和 ImageNet 上測試了模型效果,同時也做了一系列對照實驗來確定 L1 距離等不同模組的重要性。所有實驗都是在英偉達 Tesla V100 GPU 和 PyTorch 上完成的。
首先對於 MNIST,研究者的方案是採用本文提出的 adder 濾波器替代 LeNet-5-BN 的卷積核,同時因為全連線層可視為特殊的卷積層,因此研究者採用減法代替了全連線層中的乘法。對於常規的卷積網路來說,最終約有 435K 乘法運算、435K 加法運算,而 AdderNet 只有 870K 加法,基本沒有乘法。
在 MNIST 上,卷積與 Adder 都能獲得 99.4% 的準確率。但從 CPU 的角度來說,加法的延遲要遠遠低於乘法,採用 Adder 運算的 LeNet-5 在 CPU 上能有∼1.7M 的延遲,而原版 LeNet-5 有∼2.6M 的延遲。研究者並沒有繼續對比 GPU 上的延遲,畢竟卷積經過了 CUDA 與 CuDNN 的高度優化,而 Adder 運算並沒有。
隨後研究者進一步在 CIFAR 和 ImageNet 上對比了不同方法的效果。這一次還是像 MNIST 那樣用 Adder 運算替代卷積運算,只不過新加了二值神經網路(BNN),因為它可以通過 XNOR 運算代替乘法運算,整個實驗保證其它條件都一致。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降

圖 2:二值網路、加法網路和卷積網路在 CIFAR-10 與 CIFAR-100 資料集上的效果。
我們可以看到共有 1.3G 的總運算,CNN 會將其分配給乘法與加法,BNN 會分配給加法與 XNOR 運算,而 AddNN 完全採用加法。值得注意的是,在 CIFAR 資料集上,完全加法的神經網路在效能上也能媲美常規卷積神經網路。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降

圖 3:ImageNet 上的分類結果。
與 CIFAR 資料集一一致,Adder 運算效果能媲美卷積運算,同時完全採用加法。最後,研究者還做了一系列對照試驗,主要探討到底什麼樣的梯度訊號才能保證收斂的速度與準確性。如下圖 3 所示,研究者提出的適應性學習率縮放與全精度梯度方法最終能達到最好的效果。

深度學習可以不要乘法,北大,華為諾亞:加法替代效果不變,延遲大降

圖 3:AdderNet 採用不同最優化策略所獲得的學習曲線,其中 FP 表示全精度梯度,Sgn 表示符號函式梯度。
看了實驗效果,先不管它的實際應用怎麼樣,就這樣完全採用加法運算,還能收斂得如此優秀,足以說明用加法替代乘法是可行的、採用 L1 距離替代卷積運算也是可行的。之前機器之心挺少看到類似的研究,這樣的方向說不定非常值得更多研究者去探索。



https://www.toutiao.com/i6779068981266350595/




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2672397/,如需轉載,請註明出處,否則將追究法律責任。

相關文章