AdderNet: Do we really need multiplications in deep learning——准研究生论文周报

原文:CVPR2020
开源地址:Github

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的特征可视化。
    特征可视化

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

    加法器神经网络用L1距离度量替代卷积,输出特征 Y Y Y为: Y ( m , n , t ) = − ∑ i = 0 d ∑ j = 0 d ∑ k = 0 c i n ∣ 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}}|X(m+i,n+j,k)-F(i,j,k,t)| Y(m,n,t)=i=0dj=0dk=0cinX(m+i,n+j,k)F(i,j,k,t)
    L1距离是每一维度差的绝对值之和,所以计算全程只涉及加减法。

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

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

4.2 实验

  • CIFAR-10和CIFAR-100上的准确率
    CIFAR
  • ImageNet上的准确率
    ImageNet
  • 总得来说,同CNN、BNN对比,AddNN节省计算量的同时也保证了精度。

5 收获与心得

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

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方的河岸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值