XNOR-Net

论文地址:https://arxiv.org/abs/1603.05279
code:http://allenai.org/plato/xnornet

这篇论文的动机是解决DNN在移动端的部署困难的问题,其实这也是量化的主要目的之一。作者提出了两种二值化网络:Binary-Weight-Networks(BWN)和XNOR-Network。其中BWN是将权重量化为1bit(+1,-1),而XNOR-Net则是进一步对权重和激活值都量化为1bit。(激活值就是卷积层的输入)
下图是这两种网络和普通网络的实验结果比较(Alex-Net):在这里插入图片描述

Binary-Weight-Networks

BWN思想和BNN一样,不过只量化权重,更新参数是也是使用实数值(精度高)。
设输入为 I I I,权重为 W W W,维度为 c ∗ w ∗ h c*w*h cwh,二值化后的权重为 B ∈ { + 1 , − 1 } B \in \{+1,-1 \} B{+1,1},放缩系数为 α \alpha α,即 W ≈ α B W \approx \alpha B WαB,则卷积操作可转转换为只有加减的卷积操作:
在这里插入图片描述
对于权重 W W W的近似,肯定越接近越好,于是就转化为优化问题:
在这里插入图片描述
展开得:
在这里插入图片描述
n = c ∗ w ∗ h n=c*w*h n=cwh,显然, B T B B^TB BTB W T W W^TW WTW均为正的常数,且 B T B = n B^TB= n BTB=n。设 W T W = c W^TW=c WTW=c,则目标函数为:
在这里插入图片描述
要使目标函数最小,只要 W T B W^TB WTB最大即可。于是优化问题就转化为:
在这里插入图片描述
即B的最优值为:
在这里插入图片描述
对于 α \alpha α的最优值,直接对目标函数进行求导即可得到:
在这里插入图片描述

在这里插入图片描述
具体的算法为:
在这里插入图片描述

XNOR-Network

XNOR-Net是对权重和激活值都二值化(XNOR即同或门),主要利用XNOR和bitcount操作。卷积运算可以看作是由移位操作和点积操作组成,而对于二值化的权重和激活值,点积操作可由XNOR和bitcount来近似代替。

对于输入X,权重W,有:
在这里插入图片描述
和BWN相同,求最优近似值,故有优化问题:
在这里插入图片描述
然后和BWN一样的做法,
在这里插入图片描述
在这里插入图片描述
因为 ∣ X i ∣ |X_i| Xi ∣ W i ∣ |W_i| Wi相互独立,所以有:
在这里插入图片描述
具体的二值化的卷积操作如下图:
在这里插入图片描述
第一、二行就是上面的最优化过程,但是对于输入的二值化存在重复计算(stride=1),效率不高,所以采用第三行的方法。因为原算法是对每个位置的X都算出 β \beta β和H,但是H就是对X进行sign操作,因此只需要对整个输入矩阵I进行sign操作就可以。第三行就是这样,对输入矩阵的绝对值在channel维度上取平均:
在这里插入图片描述
然后用k滤波器均值滤波:
在这里插入图片描述
得到的K就是各个位置上的 β \beta β。因此得到最终的公式(第四行):
在这里插入图片描述
需要注意的是,还要对网络结构进行调整:
在这里插入图片描述

实验

在ImageNet数据集上与其他量化方法进行对比:
在这里插入图片描述
在不同网络上对比:
在这里插入图片描述

注:作者在实验中发现, β \beta β似乎对准确率的影响很小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值