你能想象没有乘法的神经网络吗?无论是单个神经元运算还是卷积运算,都免不了乘法。但是,乘法比加法消耗更多的硬件资源。如果你不使用乘法,你应该可以通过改用加法来大大提高运算速度。去年底,北京大学、华为诺亚方舟实验室、鹏城实验室的研究人员将这一想法付诸实践。他们提出了一个只使用加法的神经网络AdderNet(加法器网络)。一个是华为的诺亚方舟实习生,正在攻读博士学位。3北京大学。今天,这篇文章已经被CVPR2020(Oral)收录,官方源码也在GitHub上开放。有兴趣的同学不妨去试一试。加法器网络简介加法器网络的核心是用L1距离代替欧式距离。L1距离是两点坐标差的绝对值之和,所以整个过程没有乘法。在这个新定义下,反向传播中使用的偏导数运算也变成了减法。梯度下降的优化过程也称为符号随机梯度下降(signSGD)。在加法器网络的新定义下,特征向量的空间分布也与CNN有很大不同。那么AdderNet的实际效果如何呢?在CIFAR-10的图像分类任务中,AdderNet相比Bengio等人提出的加法神经网络BNN的性能有了很大的提升,接近于传统CNN的结果。开源官方AdderNet基于Python3和PyTorch。首先根据PyTorch官方文档准备ImageNet数据集,运行程序评估其在验证集上的效果:pythontest.py—data_dir'path/to/imagenet_root/'AdderNet在ImageNet数据集上可以达到74.9%的Top-1精度度和91.7%的Top-5准确率。或者在本地下载CIFAR-10数据集,在CIFAR-10上测试效果pythontest.py—datasetcifar10—model_dirmodels/ResNet20-AdderNet.pth—data_dir'path/to/cifar10_root/'但是AdderNet还是需要自己训练,官方说预训练模型即将发布。现阶段的AdderNet并非没有缺陷。作者在项目主页上说,因为AdderNet是用加法滤波器实现的,推理速度慢,需要用CUDA写来提速。这距离作者提高神经网络运算速度的初衷还有很大差距。但这篇论文的作者表示,未来他会继续在加法器神经网络上进行研究,并发表更多的成果。让我们共同期待这项研究的新进展。华为诺亚实验室实习生,主导创建AdderNet。本文作者陈汉庭,毕业于同济大学数学系。现在北京大学信息科学与技术学院攻读博士学位,同时也是华为诺亚方舟实验室实习生。硕士博士前三年,以第一作者发表论文5篇,其中《Data-Free Learning of Student Networks》1篇被ICCV2019收录,参与的多篇论文也被NeurIPS等顶级会议收录,IJCAI和ICML。传送门源码:https://github.com/huawei-noah/AdderNet论文地址:https://arxiv.org/abs/1912.13200
