论文地址:https://arxiv.org/pdf/1702.03044.pdf
主要内容
作者提出了一种新的神经网络量化方法——INQ,可以将训练好的全精度的CNN模型转换为权重为2的幂次方或0的低精度模型。INQ引入了三个操作:权重划分、分组量化和再训练。大致步骤为通过某种策略(随机划分或剪枝启发)将权重分为不相交的两组,先将第一组量化作为低精度模型的基,而第二组用于补偿量化带来的精度损失,所以要通过再训练,一直重复上述步骤直至全部量化。最后通过几组实验验证了该算法的有效性。
三个操作
CNN的量化存在两个关键问题:一是量化会带来一定的精度损失,二是为保证收敛需要增加迭代次数。
基于这两个问题,作者采用了包含权重划分,分组量化和再训练的INQ方法。
1. 权重划分
权重划分一般有随机划分和剪枝启发(pruning-inspired)两种策略,作者基于实验结果,选择了准确率更高的剪枝启发。

随机划分即随机将权重分为不相交的两组;而剪枝启发则是通过将权重的绝对值与分层阈值比较划分为两组(分层阈值则是由给定的分割比确定),该策略认为绝对值大的权重更重要,即将绝对值大的一组作为低精度模型的基。
2. 分组量化
全精度的CNN模型最终需要量化为权重为2的幂次方或0的低精度的模型,即量化后的权重W^l\widehat W_lWl中的每个数都对应于PlP_lPl:

其中,n2≤n1n_2 \leq n_1n2≤n1,且均为整数。n1n_1n1的取值如下:


由于位宽bbb是给定的,所以由n1n_1n1和bbb就能确定n2n_2n2:n2=n1+1−2b−12n_2=n_1+1-\frac{2^{b-1}}{2}n2=n1+1−22b−1。
最终的权重由下式确定:

其中,α\alphaα和β\betaβ是PlP_lPl中的相邻元素。
3. 再训练
两组权重其中一组先量化作为低精度模型的基,另一组则需要通过训练再分组量化,直至权重全部量化完成。需要注意的是,已量化的组在训练过程保持不变。

如上图所示,(1)先进行权重划分为量化组和训练组,黑色部分为量化组;(2)然后分组量化,将量化组量化;(3)接着训练组进行再训练;(4)重复权重划分、量化;(5)继续迭代;(6)量化完成。
INQ算法
将优化问题表示如下:

其中,Tl(i,j)=0T_l(i,j)=0Tl(i,j)=0表示权重属于量化组,Tl(i,j)=1T_l(i,j)=1Tl(i,j)=1表示权重属于训练组。
参数更新公式:

具体算法如下:

实验
- 在ImageNet上的实验结果如下:

显然,对于常用的AlexNet等网络,INQ量化损失的精度可以忽略不记,甚至比未量化的准确率略高。 - 量化为不同位宽:

量化的位宽越低,准确率会小幅降低。 - 基于ResNet与其他二元、三元模型比较:

由实验结果可知INQ算法准确率更高。
总结
INQ量化方法最大贡献在于能够在很大程度上减少量化带来的精度损失,对于其他量化方法有一定的优势。不过具体效果还是要亲自实验才能知道,在此不加赘述。
介绍了一种名为INQ的神经网络量化方法,该方法通过权重划分、分组量化和再训练,将全精度CNN模型转换为低精度模型,显著减少了量化带来的精度损失。
2702

被折叠的 条评论
为什么被折叠?



