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的特征可视化。
    AdderNet: Do we really need multiplications in deep learning——准研究生论文周报

  • 加法器网络
    传统地,神经网络卷积核为: FRd×d×cin×coutF\in\mathbb{R}^{d\times{d}\times{c_{in}}\times{c_{out}}};输入特征为:XRH×W×cinX\in\mathbb{R}^{H\times{W}\times{c_{in}}}
    则输出特征YY为:Y(m,n,t)=i=0dj=0dk=0cinS(X(m+i,n+j,k),F(i,j,k,t))Y(m,n,t)=-\sum_{i=0}^d\sum_{j=0}^d\sum_{k=0}^{c_{in}}S(X(m+i,n+j,k),F(i,j,k,t))
    其中SS是特征度量,如果是CNN,那么S(x,y)S(x,y)就是xxyy的卷积,d=1d=1的时候,上述公式还可以用于全连接层。

    加法器神经网络用L1距离度量替代卷积,输出特征YY为:Y(m,n,t)=i=0dj=0dk=0cinX(m+i,n+j,k)F(i,j,k,t)Y(m,n,t)=-\sum_{i=0}^d\sum_{j=0}^d\sum_{k=0}^{c_{in}}|X(m+i,n+j,k)-F(i,j,k,t)|
    L1距离是每一维度差的绝对值之和,所以计算全程只涉及加减法。

  • 优化
    ①AdderNets中,原来输出特征YY对滤波器FF的偏导使用阶跃函数sgnsgn,这使得结果仅有1,-1,0,这并不利于保留特征,也就是说无法保证加法器网络的精度和CNNs一样。
    δY(m,n,t)δF(i,j,k,t)=sgn(X(m+i,n+j,k)F(i,j,k,t))\frac{\delta{}Y(m,n,t)}{\delta{} F(i,j,k,t)}=sgn(X(m+i,n+j,k)-F(i,j,k,t))
    ②于是考虑用L2范数的偏导:
    δY(m,n,t)δF(i,j,k,t)=X(m+i,n+j,k)F(i,j,k,t)\frac{\delta{}Y(m,n,t)}{\delta{} F(i,j,k,t)}=X(m+i,n+j,k)-F(i,j,k,t)
    ③去掉了sgnsgn更利于特征保留与后续梯度优化,但是由于偏导可能大于1或小于-1,反向传播可能会导致梯度爆炸,为此加入了HardTanh函数:
    δY(m,n,t)δF(i,j,k,t)=HT(F(i,j,k,t)X(m+i,n+j,k))\frac{\delta{}Y(m,n,t)}{\delta{} F(i,j,k,t)}=HT(F(i,j,k,t)-X(m+i,n+j,k))其中:HT(x)={x,1<x<11,x>11,x<1HT(x)=\begin{cases}x,&-1<x<1\\1,&x>1\\-1,&x<-1\end{cases}

  • 自适应学习率
    下图给出第1次迭代,部分层L2范数梯度大小,可以看出AdderNet梯度明显较小,这样反向传播也容易出现梯度消失现象。
    AdderNet: Do we really need multiplications in deep learning——准研究生论文周报
    为此,每个adder层:ΔFl=γ×αl×ΔL(Fl)\Delta{}F_l=\gamma{}\times{\alpha_l}\times{\Delta{L(F_l)}},其中γ\gamma是全局学习率,ΔL(Fl)\Delta{L(F_l)}是第ll层的梯度,α\alpha是局部学习率。
    局部学习率可以定义为:αl=ηkΔL(Fl)2\alpha_l=\frac{\eta{}\sqrt{k}}{||\Delta{L(F_l)}||_2}其中η\eta为超参,kkFlF_l中元素个数。

4.2 实验

  • CIFAR-10和CIFAR-100上的准确率
    AdderNet: Do we really need multiplications in deep learning——准研究生论文周报
  • ImageNet上的准确率
    AdderNet: Do we really need multiplications in deep learning——准研究生论文周报
  • 总得来说,同CNN、BNN对比,AddNN节省计算量的同时也保证了精度。

5 收获与心得

  现在一提到特征提取,首先想到的就是利用卷积网络,这是本能反应还是思维定式呢?特征的提取不仅仅局限于卷积网络方法,PCA和LDA也是值得尝试的方法。
  本文的创新动机就很新颖,实现方法也极其简单,仅将神经网络的卷积操作摒弃,以L1距离度量替代之。随着各种深度神经网络的出现,训练网络的硬件成本越来越高,作者从网络本身切入,变乘法为加法,确实值得敬佩,用L1距离代替卷积操作,实际是模仿特征提取——即保留图像中的有用信息(**值大的保留,小的摒弃)。今后遇到神经网络或其他算法,值得借鉴这种“模仿”的思想,尝试对其进行修改。

相关文章: