论文地址:https://arxiv.org/pdf/1702.03044.pdf

主要内容

作者提出了一种新的神经网络量化方法——INQ,可以将训练好的全精度的CNN模型转换为权重为2的幂次方或0的低精度模型。INQ引入了三个操作:权重划分、分组量化和再训练。大致步骤为通过某种策略(随机划分或剪枝启发)将权重分为不相交的两组,先将第一组量化作为低精度模型的基,而第二组用于补偿量化带来的精度损失,所以要通过再训练,一直重复上述步骤直至全部量化。最后通过几组实验验证了该算法的有效性。

三个操作

CNN的量化存在两个关键问题:一是量化会带来一定的精度损失,二是为保证收敛需要增加迭代次数。
基于这两个问题,作者采用了包含权重划分,分组量化和再训练的INQ方法。
1. 权重划分
权重划分一般有随机划分和剪枝启发(pruning-inspired)两种策略,作者基于实验结果,选择了准确率更高的剪枝启发。
论文总结:Incremental Network Quantization
随机划分即随机将权重分为不相交的两组;而剪枝启发则是通过将权重的绝对值与分层阈值比较划分为两组(分层阈值则是由给定的分割比确定),该策略认为绝对值大的权重更重要,即将绝对值大的一组作为低精度模型的基。

2. 分组量化
全精度的CNN模型最终需要量化为权重为2的幂次方或0的低精度的模型,即量化后的权重W^l\widehat W_l中的每个数都对应于PlP_l
论文总结:Incremental Network Quantization
其中,n2n1n_2 \leq n_1,且均为整数。n1n_1的取值如下:
论文总结:Incremental Network Quantization论文总结:Incremental Network Quantization
由于位宽bb是给定的,所以由n1n_1bb就能确定n2n_2n2=n1+12b12n_2=n_1+1-\frac{2^{b-1}}{2}

最终的权重由下式确定:
论文总结:Incremental Network Quantization
其中,α\alphaβ\betaPlP_l中的相邻元素。
3. 再训练
两组权重其中一组先量化作为低精度模型的基,另一组则需要通过训练再分组量化,直至权重全部量化完成。需要注意的是,已量化的组在训练过程保持不变。
论文总结:Incremental Network Quantization
如上图所示,(1)先进行权重划分为量化组和训练组,黑色部分为量化组;(2)然后分组量化,将量化组量化;(3)接着训练组进行再训练;(4)重复权重划分、量化;(5)继续迭代;(6)量化完成。

INQ算法

将优化问题表示如下:
论文总结:Incremental Network Quantization
其中,Tl(i,j)=0T_l(i,j)=0表示权重属于量化组,Tl(i,j)=1T_l(i,j)=1表示权重属于训练组。
参数更新公式:
论文总结:Incremental Network Quantization
具体算法如下:
论文总结:Incremental Network Quantization

实验

  1. 在ImageNet上的实验结果如下:
    论文总结:Incremental Network Quantization
    显然,对于常用的AlexNet等网络,INQ量化损失的精度可以忽略不记,甚至比未量化的准确率略高。
  2. 量化为不同位宽:
    论文总结:Incremental Network Quantization
    量化的位宽越低,准确率会小幅降低。
  3. 基于ResNet与其他二元、三元模型比较:
    论文总结:Incremental Network Quantization
    由实验结果可知INQ算法准确率更高。

总结

INQ量化方法最大贡献在于能够在很大程度上减少量化带来的精度损失,对于其他量化方法有一定的优势。不过具体效果还是要亲自实验才能知道,在此不加赘述。

相关文章: