Incremental network quantization: towards lossless CNNs with low-precision weights

 

Intel 中国研究院出品,论文链接:https://arxiv.org/abs/1702.03044

1、本文概述

本文提出了一种新的用于压缩神经网络的量化方法—— INQ (Incremental network quantization)。该方法可以将全精度 CNN 转化为低精度网络,在不损失甚至提高精度的情况下,使得权重均为 0 或 2 的幂次(在 FPGA 等嵌入式设备上可以进行移位操作)。

文章中主要涉及三种操作:权重分组,分组量化以及重训练。首先利用一定准则(后面会提到,随机的或者基于剪枝的)将每一层的权重分成互补的两部分(图 1 (b)),其中一部分直接量化为低精度(图 1 (b) 绿色),另一部分用于重训练(图 1 (b) 蓝色)以弥补量化带来的精度损失。如此操作一次后,将未量化的部分分组,依次重复三种操作,一直迭代,直到所有的权重均为 0 或 2 的幂次为止。图 1 中的数字表示量化部分的比例。

      

另外,在本文中还有一个需要注意的地方是,文中提到的位宽(bit-width),其中一位为 0 值(zero value)。因此,这里的 k-bit 实际为 (k-1)-bit。

2、INQ

2.1 量化规则

设全精度 CNN 的权重为

其中 W_l 为第 l 层的权重,L 为层数。量化的目标是将转换为,并且中每个元素都在集合中,其中 n_1 和 n_2 是两个整数,并且 n_2 <= n_1。绝对值小于 的权重均被量化为 0。设位宽为 b,则 n_2 可以由 n_1 和 b 来确定。具体的公式如下:

(有个小问题:这里的 4/3 是否可以换成其他比 1 大一点的数字?)

 量化规则为

其中 alpha 和 beta 是 P_l 中相邻的两个元素。

文中提到,前面的 4/3 与这里的 3/2 是对应的,这样可以保证 s 可以对应到 。那么,将 4/3 换成其他满足条件的数字,应该都可以。

2.2 增量量化策略

前面提到,需要先将权重分成互补的两部分,用公式表达为

其中,A_l^(1) 为需要量化的部分,A_l^(2) 为需要重训练的部分。

这里分组的依据参考文献“Dynamic network surgery for efficient dnns”,从中挑选了两种方法:随机分组和剪枝分组(pruning-inspired partition)。随机分组,顾名思义,就是随机的进行划分。剪枝分组,通过比较权重的绝对值,利用给定的分割率(splitting ratio)进行划分。实验发现,剪枝分组效果好于随机分组,故本文中均采用剪枝分组。

另外,构造一个二值矩阵 T_l,代表代表

2.3 INQ 算法

以第 l 层为例,优化函数为

其中,L(W_l)为网络损失(network loss),R 为正则项,lambda 为一个正系数。但是这个优化问题不太好求,因此转化为下面的优化问题,然后利用 SGD (随机梯度下降)进行优化。

整个 INQ 算法如下:

下面的图 2 展示了算法的过程,其中上面三个图展示了第一次迭代的情景,黑色为待量化部分,绿色为量化后的部分,淡蓝色为重训练后的部分。下面三个图展示了后面三步迭代的结果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值