16 Quantized Convolutional Neural Networks for Mobile Devices论文翻译笔记

1.本文的主要贡献:

提出了一种量化CNN的方法(Q-CNN),量化卷积层中的滤波器全连接层中的加权矩阵,通过量化网络参数,用近似内积计算有效地估计卷积和全连接层的响应,最小化参数量化期间每层响应的估计误差,更好地保持模型性能。在ILSVRC-12实验4-6倍的加速和15-20倍的压缩,只有一个百分点的分类精度损失。

 

2.步骤:首先,全连接的层保持不变,用纠错量化所有卷积层。其次,利用ILSVRC-12训练集对量化网络的全连接层进行微调,恢复分类精度。最后,纠错量化微调的层网络的全连接。

 

3.相关知识

(1)量化全连接层

其加权矩阵表示为W∈,其中和分别是层输入和响应的维数。加权矢量W中第列向量。将Cs维空间(所在的位置)均匀分割成M个子空间每个子空间的维度为然后将每个分解为M个子向量,表示为可以为每个子空间学习子码本。

对于第m个子空间,优化:

 

其中由所有加权向量的第m个子向量组成。子代码簿包含K个子代码字,中的每列是指示向量(仅一个非零条目),指定哪个子代码用于量化相应的子向量。优化可以通过k-means聚类求解。

层响应大致计算为:

 

其中是中的第列向量是层输入的第m个子向量 是用于量子化子矢量的子码字的索引

对于每个子空间,计算和中的每个子码字之间的内积,并将结果存储在查找表中。之后,只需要M个加法运算来计算每个响应。结果,总体时间复杂度可以从降低到。另一方面,只需要存储子码本和量化指标,这可以显著降低存储消耗。

 

(2)量化卷积层

与全连接层中的1-D加权矢量不同,每个卷积核是3维张量:∈ 在量化之前,需要确定如何将其分割为子向量即将子空间分割应用于哪个维度。在测试阶段,输入特征映射由空间域中的滑动窗口由每个卷积核遍历。由于这些滑动窗口部分重叠,因此可以沿着特征图通道的维度分割每个卷积核从而可以在多个空间位置重新使用预先计算的内积。具体地,通过以下方式学习每个子空间中的量化:

 

其中包含位置处的所有卷积内核的第m个子向量。 在每个子空间中优化也可通过k-means聚类解决。

在卷积核量化时,通过以下方式近似计算响应特征图:

 

其中是输入特征图中位置处的第m个子向量,而是用于量化第卷积核中位置处的第m个子向量的子码字的索引。

与全连接的层类似,使用输入特征图预先计算内部乘积的查找表。然后,利用(7)近似地计算响应特征图,可以大大减少时间和存储复杂度。

 

缺点:(1)最小化模型参数的量化误差不一定给出用于分类精度的最佳量化网络。相比之下,最小化每层响应的估计误差与网络的分类性能更为密切相关。

 (2)一层的量化独立于其他层次,可能导致多层次量化时的错误累积。网络最终响应的估计误差很有可能被快速累积,因为先前量化层引入的误差也会影响以下层次。

 

3.解决办法:

将纠错的思想引入到网络参数的量化中。这种改进的量化方法直接使每层的响应的估计误差最小化,并且可以补偿先前层引入的误差。

1)全连接层的错误纠正

假设有N个图像来学习全连接层的量化,并且图像In的层输入和响应被表示为Sn和Tn。为了最小化层响应的估计误差,优化:

 

其中Frobenius范数中的第一项是期望的层响应,并且第二项是通过量化参数计算的近似层响应。

可以应用块坐标下降法来最小化该目标函数。对于第m个子空间,其残差定义为:

 

然后尝试最小化该子空间的残差,即:

 

并且可以通过交替本和子码字地更新子码分配来解决上述优化。

更新。固定子码字分配,并定义。(10)中的优化可以重新形式如下:

 

这意味着在一个子码字上的优化不影响其他子码字。因此,对于每个子代码,从(11)构造一个最小二乘的问题来更新它。

更新 通过子码本固定,很容易发现中每列的优化是相互独立的。 代码簿包含K个子代码字,中的每列是指示向量(仅一个非零条目),指定哪个子代码用于量化相应的子向量)对于第列,其最佳子码字分配由下式给出:

 

 

2)卷积层错误纠正

采用类似的想法来最小化卷积层响应特征图的估计误差,即:

 

优化也可以通过块坐标下降来解决。关于解决这个优化的更多细节可以在论文的附录中。

3)多层纠错

上述量化方法可以顺序地应用于CNN模型中的每个层。问题是由先前的层引起的层响应的估计误差将被累积并影响以下层的量化。 

解决办法:假设其以前的层已经被量化,考虑特定层的量化参数量化的优化基于一组训练图像的层输入和响应。为量化该层,将量化网络中的层输入作为{Sn},并将原始网络中的层响应(未量化)设为方程(8)和(13)中的{Tn}。

以这种方式,优化由量化网络中的实际输入和原始网络中的期望响应指导。在优化过程中明确考虑了以前各层引入的累积误差。因此,该训练方案可以有效地抑制多层量化的累积误差。

②另一种可能的解决方案是采用反向传播来共同更新所有量化层中的子码本和子码字分配。但由于子代码分配是离散的,所以基于梯度的优化如果有可能实现的话将会非常困难。

 

4.实验

  ImageNet数据集上的实验结果如下

 

(注:精度和效率之间的权衡由M(子空间数)和K(每个子空间中的子码字数)控制。 由于一旦被给出,M = 就被确定,所以通过调整来调整量化精度,上表中的Para中的参数表示的是)


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值