最近北大和華為諾亞實驗室等聯合提出了一種新的神經網路架構,只用加法在ImageNet中達到了91.7%的精度。

AdderNet只用加法做卷積的神經網路

在深度學習中,我們真的可以不需要乘法嗎?

左側是加法的特徵分佈 右側是乘法的特徵分佈

論文地址

AdderNet: Do We Really Need Multiplications in Deep Learning??

arxiv.org

Reddit熱議貼:

https://www.reddit.com/r/MachineLearning/comments/ekw2s1/r_addernet_do_we_really_need_multiplications_in/?

www.reddit.com

感覺可以和這篇DeepShift: Towards Multiplication-Less Neural Networks對比.

https://www.reddit.com/r/MachineLearning/comments/el76wi/r_deepshift_towards_multiplicationless_neural/?utm_source=shareutm_medium=web2x?

www.reddit.com

https://arxiv.org/pdf/1905.13298.pdf?

arxiv.org


謝邀~ 最新更新:AdderNet已經被CVPR 2020接收,並選為Oral,感謝審稿人和AC們的認可!

感謝量子位和機器之心等對我們的工作進行了多次報道:

華為開源只用加法的神經網路:實習生領銜打造,效果不輸傳統CNN | CVPR 2020 Oral?

mp.weixin.qq.com圖標

同時,最新版的AdderNet已經開源,歡迎大家試用,如果有實現細節上的問題和新的研究思路,歡迎大家來github頁面與陳漢亭同學進行探討:

https://github.com/huawei-noah/AdderNet?

github.com

其實這確實是很早以前的一個idea了,以前我們做很多模型壓縮的研究,通過去掉一些這樣那樣的冗餘,通過對模型的架構進行五花八門的精簡,對卷積核也有各種各樣的設計,但是從更底層來說我們希望有一個更簡單的計算方式,那麼motivation就從下面這張圖來:

在MNIST數據集上的特徵可視化結果,不同的顏色代表不同類別的圖像在網路中的特徵。

也就是說如果我們把卷積計算看作成為一種距離度量的方式,我們用加法同樣可以把圖像分類這個任務做好。那麼進一步,我們再看下面這張圖:

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

https://github.com/huawei-noah/AdderNet

加法的能耗和晶元面積的代價遠遠小於乘法!這張圖出現在兩次NeurIPS的tutorial上面(20152019),把這個加法神經網路的動機講完之後,就是我們如何只用加法構建神經網路,如何訓練深度神經網路了:

華為開源加法神經網路 | CVPR 2020 Oral?

zhuanlan.zhihu.com圖標

最後提一下,我們現在已經支持int8的結果,也已經初步在圖像處理等任務上具有一定的結果,歡迎大家對Addernet後續工作繼續關注!同時也感謝大家對我們其它工作的關註:

如何評價 CVPR 2020的論文接收結果?有哪些亮點論文??

www.zhihu.com圖標

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

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

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

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

如果能夠拋棄乘法運算,是不是會讓代碼運行速度更快呢?

來自北京大學、華為諾亞方舟實驗室、鵬城實驗室的研究人員提出了一種加法器網路AdderNet,去掉卷積乘法,並設計一種新的反向傳播演算法,結果也能訓練神經網路。

而且實驗結果證明瞭,這種方法在MNIST、CIFAR-10、SVHN上已經接近傳統CNN的SOTA結果。

加法網路早已有之

早在2015年,Bengio等人就提出了二元權重(1或-1)神經網路,用簡單的累加運算來代替乘法,提高深度學習硬體的運行效率。

緊接著在2016年,Bengio等人進一步提出了二元神經網路(BNN),不僅是權重,連激活函數也被設定為二元形式。

儘管將深度神經網路二元化可以極大地降低了計算成本,但是原始識別精度經常無法保持。另外,二元網路的訓練過程不穩定,並且通常收斂速度較慢。

卷積通常作為默認操作從圖像數據中提取特徵,若引入各種方法來加速卷積,則存在犧牲網路性能的風險。

如何讓避免CNN中的乘法呢?研究人員使用L1了距離。L1距離是兩點坐標差值的絕對值之和,不涉及乘法。

加法運算是L1距離中的主要操作,使用補碼可以輕鬆地將求差值的運算轉化為加法。

研究人員在此基礎上提出了加法器網路AdderNet,下圖展示了AdderNet和CNN的不同之處:

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

可視化的結果表明,L1距離可用作深度神經網路中濾波器與輸入特徵之間距離的相似性度量。濾波器和輸入特徵的距離可以表述為:

在傳統的CNN中,計算偏導數的公式為:

而在L1範數的定義中,偏導數變成了:

其中sgn代表符號函數,它讓我們求得的梯度只能取三種值:-1,0,1。

由此進行優化的方法叫做符號SGD(signSGD)。但是,signSGD幾乎永遠不會沿著最陡的下降方向,並且方向性只會隨著維數的增長而變差。因此要使用另一種形式的梯度:

在優化過程中,不僅需要求出對濾波器的梯度,還要求對輸入特徵的偏導數:

其中HT是HardTanh函數:

最後,得到了AdderNet的優化方法:

學習率的公式是:

其中k是Fl中元素的數量,ΔL(Fl)是第l層的濾波器梯度。

最後,在CIFAR-10的圖像分類任務中,AdderNet相比原始的二元神經網路BNN性能有大幅的提升,並且性能已經接近了傳統CNN的結果。

這種方法訓練的得到的權重分佈也和CNN有很大的不同,AdderNet的權重服從拉普拉斯分佈,而CNN的權重服從高斯分佈。

作者表示,在未來的工作中,他們將研究AdderNet的量化結果,以實現更高的速度和更低的能耗,以及AdderNet的通用性,不僅用於圖像分類,還將用到目標檢測和語義分割等任務中。

遭網友diss

這篇文章發布到網上後,引發了Reddit論壇機器學習板塊的熱議。

有網友認為,文章以提高運算性能為目的,但在結尾只提到了圖像分類認為的正確率,不免讓人感到文不對題。

文章不是在深度學習任務中更常見的GPU硬體上部署模型,而是選擇在CPU上部署,可能無法體現出加法運算的優勢。

而且現在各種專用AI晶元、FPGA都對深度學習任務做了優化,算浮點乘法並不一定與加法消耗資源相差太大。

—完—

@量子位 · 追蹤AI技術和產品新動態

深有感觸的朋友,歡迎贊同、關注、分享三連?? ? ?


兩個小時前,AdderNet代碼剛剛開源:https://github.com/huawei-noah/AdderNet

恭喜喜提CVPR 2020!


奇奇怪怪方法能上ImageNet(雖然掉點),就已經代表著很厲害了。

AdderNet的idea很激進,不用乘法真的閃了我的腰。

工作可以說是非常頂級的工作,在韓松等人的吊打下為數不多的能狗住的工作。


感覺上是二值網路的另外一種形式,因為對比的是比較早的結果,很難說好壞。然後gpu估計速度是差不多的,neon上蟲叔 @圈圈蟲 說流水線拍好ADD與MLA的Latency一樣,似乎幫助也不大。

還有一個問題的話,在推理時,我們一般會把bn fusion進去,改造之後,bn似乎是沒法fusion了,也會帶來額外的時間開銷。

按照論文內容來看的話,intel的低端工控機裏可能會有一定幫助,畢竟有很多項目不讓用gpu,計算棒這玩意也不是太成熟。

不過考慮到華為出品,沒準下一代npu裏會有額外的硬體配合,這個就不好說了。


AdderNet (在深度學習中我們真的需要乘法?)

這篇論文是北大、諾亞、鵬城、悉大的論文,觀點比較有趣,在喜提CVPR2020之前也比較火了,下面我可以介紹一下。

論文指出我們可以定義如下公式,首先我們定義核大小為d,輸入通道為[公式],輸出通道為[公式]的濾波器[公式],長寬為H, W 的輸入特徵為[公式]

[公式]

其中 [公式] 為相似度計算方法,如果設 [公式] ,這就是卷積的一種定義方法了。 那麼論文就引出加法網路的基本運算元如何定義的:

[公式]

如上定義只用了加法的[公式]距離,可以有效地計算濾波器和特徵之間的相似度。

在CIFAR-10和CIFAR-100以及ImageNet的實驗結果:

可以看到在把卷積替換成加法之後好像也沒有太多精度的丟失,正如標題說的,我們真的需要這麼多乘法嗎?


就是把匹配濾波器的基於乘法的匹配度計算變成基於加法的,對於圖像處理任務,這又不是什麼新想法,匹配濾波啊,圖像相似度可以用卷積也可以用減法,經典圖像處理中經常這樣用啊。 當然,如果可以用加法來計算相似度,使用加法的好處是顯然的,明顯的改變了網路構造的擬合函數的空間,函數更平滑,理論上是減少了訓練難度。而且我們知道,使用加法來計算的圖像相似度可能不如卷積可靠。

但是這種運算的侷限性太大,不容易推廣到一般的應用問題上。這是個有趣的嘗試,但是感覺不會有大的影響力。


推薦閱讀:
相關文章