沒有乘法的神經(jīng)網(wǎng)絡(luò),你敢想象嗎?無論是單個神經(jīng)元的運算還是卷積運算,都不可避免地要使用乘法。
然而乘法對硬件資源的消耗遠大于加法。如果不用乘法,全部改用加法應(yīng)該可以讓運算速度大大提升。
去年年底,來自北京大學、華為諾亞方舟實驗室、鵬城實驗室的研究人員將這一想法付諸實踐,他們提出了一種只用加法的神經(jīng)網(wǎng)絡(luò)AdderNet(加法器網(wǎng)絡(luò))。一作是華為諾亞方舟實習生,正在北大讀博三。
如今,這篇文章已經(jīng)被CVPR 2020收錄(Oral),官方也在GitHub上開放了源代碼。有興趣的同學不妨前往一試究竟。
加法器網(wǎng)絡(luò)簡介
加法器網(wǎng)絡(luò)的核心在于:用L1距離代替歐氏距離。
L1距離是求兩點之間坐標差值的絕對值之和,因此全程不涉及乘法。
在這種新的定義下,反向傳播中用到的求偏導數(shù)運算也變成了求減法。梯度下降的優(yōu)化過程也被叫做符號SGD(signSGD)。
在加法器網(wǎng)絡(luò)的新定義下,特征向量的空間分布也和CNN有很大的不同。
那么AdderNet的實際效果如何呢?
在CIFAR-10的圖像分類任務(wù)中,AdderNet相比當初Bengio等人提出的加法神經(jīng)網(wǎng)絡(luò)BNN性能有大幅提升,并且已經(jīng)接近了傳統(tǒng)CNN的結(jié)果。
開源代碼
官方的AdderNet基于Python3和PyTorch。
先按照PyTorch的官方文檔準備ImageNet數(shù)據(jù)集,運行程序評估它在驗證集上的效果:
python test.py —data_dir ‘path/to/imagenet_root/’
AdderNet可以在ImageNet數(shù)據(jù)集上達到74.9%的Top-1準確度和91.7%的Top-5準確度。
或者將CIFAR-10數(shù)據(jù)集下載到本地,測試一下它在CIFAR-10上的效果
python test.py —dataset cifar10 —model_dir models/ResNet20-AdderNet.pth —data_dir ‘path/to/cifar10_root/’
不過AdderNet仍需自己訓練,官方表示將很快發(fā)布預訓練模型。
現(xiàn)階段的AdderNet并非沒有缺陷,作者在項目主頁中說,由于AdderNet是用加法過濾器實現(xiàn)的,因此推理速度較慢,需要用CUDA編寫才能提高速度。
這與作者希望提高神經(jīng)網(wǎng)絡(luò)運算速度的初衷還有一段距離。
但這篇論文的作者表示,今后還會繼續(xù)加法器神經(jīng)網(wǎng)絡(luò)的研究,發(fā)表更多的成果,讓我們一起期待這項研究取得新的進展吧。
華為諾亞實驗室實習生領(lǐng)銜打造
AdderNet這篇文章的一作名叫陳漢亭,畢業(yè)于同濟大學數(shù)學系,現(xiàn)在在北京大學信息科學技術(shù)學院攻讀博士學位,同時在華為諾亞方舟實驗室實習。
在碩博連讀的前三年中,他已經(jīng)以一作身份發(fā)表了5篇論文,其中一篇《Data-Free Learning of Student Networks》被ICCV 2019收錄,另外它參與多篇論文還被NeurIPS、IJCAI、ICML等頂會收錄。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4797瀏覽量
102416 -
加法器
+關(guān)注
關(guān)注
6文章
183瀏覽量
30538
發(fā)布評論請先 登錄
BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的比較
人工神經(jīng)網(wǎng)絡(luò)的原理和多種神經(jīng)網(wǎng)絡(luò)架構(gòu)方法

評論