2017NIPS
大疆
论文地址:https://arxiv.org/abs/1711.11294
代码地址:https://github.com/layog/Accurate-Binary-Convolution-Network

摘要

本文介绍一种新的二进制卷积神经网络(CNNs)训练方案- CNNs的权重和**限制在{-1,+1}。众所周知,使用二进制权值和**可以极大地减少内存大小和访问,并可以用更有效的按位操作代替算术操作,从而获得更快的测试时间和更低的功耗。然而,以往的CNNs二值化工作往往导致预测精度严重下降。在本文中,我们通过两个主要的创新来解决这个问题:

  • (1)用多个二进制权值基的线性组合逼近全精度权值所有的参数被映射到{-1,+1},论文指出要想得到较高的精度,需要3~5个二值矩阵。
  • (2).对输入(activations)做二值化,采用multiple的方式拟合,从而得到比之前更高的精度。输入的二值化要比权重的二值化更难,通过采用5倍的二值输入,Top1和Top5的精度只比原模型损失5%。

简单的说,该论文提出一种ABC-Net,将输入(activations)和权重(weights)都进行二值化处理(1和-1),用多个二值操作加权来拟合实值得卷积操作。

1 二值化方法

这里介绍了ABC(Accurate-Binary-Convolutional)网络,该网络在训练时保留所有浮点数权重,参数更新是更新浮点数权重,在预测时使用其二值化权重。

1.1 加权逼近权值

文章提出了两种不同的二值化方法来计算每一层的权值:

  • 1)整体近似权值
  • 2)通道近似权值

1.1.1 整体近似

CNN的一个滤波器W(w * h * Cin * Cout),用M个二值化的滤波器B1、B2、……BM(w * h * Cin * Cout)来逼近W。
【Paper Reading】Towards Accurate Binary Convolutional Neural
要得到最优的估计,应该有以下的优化的式子:
【Paper Reading】Towards Accurate Binary Convolutional Neural
其中:
【Paper Reading】Towards Accurate Binary Convolutional Neural
若直接计算公式(1),由于B和α都未知,求导求解的化,B和α会相关联,无法求最优解,所以直接给出B的求解。
假设W的均值和标准差为:mean(W)和std(W),B的表达式如下:
【Paper Reading】Towards Accurate Binary Convolutional Neural
其中:
【Paper Reading】Towards Accurate Binary Convolutional Neural
ui是一个偏移系数,例如可以将ui设置为:
【Paper Reading】Towards Accurate Binary Convolutional Neural
让其在[-std(W), std(W)]内移动,也可直接让网络训练它。这是作者实验中,基于全精度权值趋向于对称、非稀疏分布,接近高斯分布的观察。

求出了B,则优化的函数就变为:
【Paper Reading】Towards Accurate Binary Convolutional Neural
B和w都已经已知,变形为一个线性回归问题,就可以方便的求出α。

在反向传播中,由于符号函数的梯度处处为0,所以对B使用STE方法(“straight-through estimator”)做反向传播(STE方法在上一篇文章有讲到)
假设 c 为损失函数,A和O为输入输出,前向和后向传播过程可以如下表示:
【Paper Reading】Towards Accurate Binary Convolutional Neural

1.1.2 通道近似

文章还提出了一种在通道维度的对参数矩阵的二值线性组合拟合方法,提出该方法更加精细,但是由于在训练时需要耗费更多资源,作者只是做了展望。上一节介绍的是对整个权重做出近似,通道近似是每个通道单独进行近似,Wi(w * h * Cin),i是属于{1,2……Cout}
【Paper Reading】Towards Accurate Binary Convolutional Neural

1.2 多重二进制**和移位卷积

上一节中,当权值被二值化时,卷积可以不用乘法来实现。然而,为了利用位操作,**也必须被二值化,因为它们是卷积的输入。
假定上一层输出经过**函数h,变为h(x) ,在[0,1]区间:
【Paper Reading】Towards Accurate Binary Convolutional Neural
x为输入,v是偏移系数;

为了转换实值**R为二值化**,我们使用以下二值化函数:
【Paper Reading】Towards Accurate Binary Convolutional Neural
大于0.5为1,小于0.5为-1。

前向传播和反向传播变为:
【Paper Reading】Towards Accurate Binary Convolutional Neural
那么如何求**量化的比例因子呢?
输入值不像权重是一直不变的,在卷积的计算中,输入值是一直变化着的(输入特征图上),那么就无法每次都去对它做线性回归,论文给出了如下的解决方案:
首先,借助于BN(batch normilization)操作,使得输入相对稳定。
使用N个二值矩阵(A1,A2,A3…)拟合真值输入R
【Paper Reading】Towards Accurate Binary Convolutional Neural
其中:
【Paper Reading】Towards Accurate Binary Convolutional Neural
β和v是通过训练得到的。
前向计算就变成了:
【Paper Reading】Towards Accurate Binary Convolutional Neural
ABC-NET的预测流程如下图所示,其中M=N=3,输入通过H(不同的二值化方法)做了二值化,然后乘以系数β得到加权后的结果。
【Paper Reading】Towards Accurate Binary Convolutional Neural

2 训练算法

CNN通常的层的顺序为:卷积、BN、**、池化,本文子啊实验中,观察到对二进制输入应用最大池会返回一个张量,它的大部分元素都等于+1,导致精度显著下降。类似的现象在Rastegari等人也有报道。因此,我们将最大池化层置于BN和**之前。
训练过程如下图:
【Paper Reading】Towards Accurate Binary Convolutional Neural
值得注意的是,随着M的增大,移位参数越接近,线性组合的基之间的相关性越强,在求解(3)时,有时会出现秩缺失的情况。这可以通过“L2正则化”来解决。

3 实验结果

【Paper Reading】Towards Accurate Binary Convolutional Neural
BWN为标准二值网络,FP为全精度网络,表1展示了当M不同时,ABC-NET在ImageNet数据集上所取得的结果,该结果中所有模型都保留了输入的全精度,只对权重做了量化,所有网络都采用了Resnet-18结构。

【Paper Reading】Towards Accurate Binary Convolutional Neural
表2展示了在不同的网络结构下 M、N取不同值时的结果。

【Paper Reading】Towards Accurate Binary Convolutional Neural
表3展示了与一些二值网络模型的对比结果,W和A表示量化后的权重和输入比特数,所有网络模型都采用RestNet-18网络结构。

4 结论

该文章提供了一种量化的新思路,采用多个和滤波器相同大小的二值滤波器加权来逼近原来的权值,增强了二值网路的表达能力,所以效果要更好,从实验结果来看,当权重和**都用5个二值滤波器代替时,取得效果还可以,和最新的一篇CVPR2020的(LR-Net)取得的精度差不多,但是在模型的压缩率和加速比上,ABC-Net肯定没有传统的二值网络的效果要好。论文没有给出实际模型的压缩比和在嵌入式设备的实现的具体的运算速度。

相关文章:

  • 2021-08-29
  • 2022-12-23
  • 2021-04-02
  • 2021-10-10
  • 2021-08-13
  • 2021-07-14
  • 2021-05-13
  • 2021-04-26
猜你喜欢
  • 2021-09-21
  • 2021-06-22
  • 2021-11-05
  • 2021-12-25
  • 2021-05-08
  • 2021-09-11
相关资源
相似解决方案