1 标题
AdderNet: Do we really need multiplications in deep learning 来源:CVPR 2020 日期:06月26日 周五
2 概述
在计算机运算中,乘法耗费时间和硬件资源,而加法又快又省,CNNs中的卷积等操作都涉及大量的浮点相乘,神经网络真的需要乘法吗?为此,文中提出了加法器网络adder networks(AdderNets),用L1距离作为filter和feature的相似度量,摒弃原来的乘法运算,以减少神经网络运算的代价。此外,作者使用了特殊的BP方法,并使用自适应学习率策略来优化AdderNets。
如果能用加法替代乘法计算,那么神经网络在手机、平板等轻量移动设备上训练将成为可能。
3 创新点
- 提出AdderNets,摒弃了卷积计算,用filter和input feature的L1距离作为输出响应,深度神经网络(特别是CNNs)中的乘法被替换为加法——因为L1距离的计算只包含加减法。
- 使用了特殊的反向传播算法,使用自适应学习率进行梯度下降。
4 详细内容
4.1 算法
-
乘法变加法理解
卷积操作其实可以视为filter和feature的相似度量,相似性高的地方**值高,而加法器网络则是使用L1-norm作为两者的相似度量,相似性高的地方**值也高。下图为AdderNets和CNNs的特征可视化。 -
加法器网络
传统地,神经网络卷积核为: ;输入特征为:;
则输出特征为:
其中是特征度量,如果是CNN,那么就是和的卷积,的时候,上述公式还可以用于全连接层。
加法器神经网络用L1距离度量替代卷积,输出特征为:
L1距离是每一维度差的绝对值之和,所以计算全程只涉及加减法。 -
优化
①AdderNets中,原来输出特征对滤波器的偏导使用阶跃函数,这使得结果仅有1,-1,0,这并不利于保留特征,也就是说无法保证加法器网络的精度和CNNs一样。
②于是考虑用L2范数的偏导:
③去掉了更利于特征保留与后续梯度优化,但是由于偏导可能大于1或小于-1,反向传播可能会导致梯度爆炸,为此加入了HardTanh函数:
其中: -
自适应学习率
下图给出第1次迭代,部分层L2范数梯度大小,可以看出AdderNet梯度明显较小,这样反向传播也容易出现梯度消失现象。
为此,每个adder层:,其中是全局学习率,是第层的梯度,是局部学习率。
局部学习率可以定义为:其中为超参,为中元素个数。
4.2 实验
- CIFAR-10和CIFAR-100上的准确率
- ImageNet上的准确率
- 总得来说,同CNN、BNN对比,AddNN节省计算量的同时也保证了精度。
5 收获与心得
现在一提到特征提取,首先想到的就是利用卷积网络,这是本能反应还是思维定式呢?特征的提取不仅仅局限于卷积网络方法,PCA和LDA也是值得尝试的方法。
本文的创新动机就很新颖,实现方法也极其简单,仅将神经网络的卷积操作摒弃,以L1距离度量替代之。随着各种深度神经网络的出现,训练网络的硬件成本越来越高,作者从网络本身切入,变乘法为加法,确实值得敬佩,用L1距离代替卷积操作,实际是模仿特征提取——即保留图像中的有用信息(**值大的保留,小的摒弃)。今后遇到神经网络或其他算法,值得借鉴这种“模仿”的思想,尝试对其进行修改。