作者‖ Cocoon
编辑‖ 3D视觉开发者社区
3D开发者社区链接:https://mp.weixin.qq.com/s/GWyYcV6wVjxFnDOcU5ZMHg
概述
论文链接: https://arxiv.org/pdf/1702.03044v2.pdf
代码链接: https://github.com/Zhouaojun/IncrementalNetwork-Quantization
谷歌学术被引量: 797
该方法发表于ICLR 2017,由英特尔中国提出,目的是希望能够无损地用低位宽的权重表达神经网络,是量化领域中的经典论文之一。具体地,文章提出了一种渐进量化方式,其主要包含三个相互依赖的操作:权重划分、分组量化与重训练。即,首先通过某种分组规则将权重分为两个互不相干的组,然后对其中一组进行量化,而后将其冻结,再对另外一组以渐进迭代的方式进行重训练,目的是补偿第一组的量化损失。其中,渐进迭代的终止条件是所有的权值都被量化完毕。
下文将对权值量化的方式、渐进量化的策略以及整体的算法步骤进行介绍,并在实验部分贴出INQ相比起其他SOTA的对比效果及部分消融实验结果。
渐进量化
变长编码的权重量化(variable-length encoding scheme)
命名:
假设预训练的全精度的模型为{ Wl:1≤l≤L}\{W_l: 1 \leq l \leq L\}{ Wl:1≤l≤L},其中WlW_lWl表示第lll层的权重,LLL表示在模型中要学习参数的层数。为了对接下来的表达进行简化,我们只考虑对卷积层和全连接层进行量化。举个例子,就像AlexNetAlexNetAlexNet、VGG−16VGG-16VGG−16、GoogleNetGoogleNetGoogleNet以及ResNetsResNetsResNets之类的网络而言,对应于其中的卷积层,WlW_lWl可以是4D的tensor,对应于其中的全连接层,WlW_lWl可以是2D的矩阵。
设低比特版本的权重为Wl^\hat{W_l}Wl^,且其中的每一个元素只能从以下的集合中选取:
Pl={
±2n1,⋯ ,±2n2,0} \mathbf{P}_{l}=\left\{\pm 2^{n_{1}}, \cdots, \pm 2^{n_{2}}, 0\right\} Pl={
±2n1,⋯,±2n2,0}
其中n1n1n1和n2n2n2是两个整数,且n2≤n1n2 \leq n1n2≤n1。
也就是说,量化后的权重数值范围由n2n2n2和n1n1n1决定,在一定范围以外的数值会被直接怼成0。
任务描述:
给定一个预训练的全精度模型,INQ的目的是在尽可能不损失精度的前提下,将该32位的浮点型权重变换到2的整数幂或0上。
此外,还希望能够探索在网络无损量化限定下能支持的最极端的小位宽是多少。
怎么做?
在INQ中,期待的位宽bbb需要我们预先确定好,然后我们只要确定好超参n1n1n1就可以了,因为n2n2n2可以根据位宽bbb以及超参n1n1n1推断而得。
n1n1n1的计算方式为一个经验上有点复杂又实践证明有用的公式:
n1= floor (log2(4s/3)) n_{1}=\text { floor }\left(\log _{2}(4 s / 3)\right) n1

提出一种渐进量化方法,通过权重划分、分组量化与重训练,实现低比特位宽的神经网络量化,有效降低精度损失。
1888

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



