IncrementalNetwork-Quantization: INQ渐进量化方法详解

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

作者‖ 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:1lL},其中WlW_lWl表示第lll层的权重,LLL表示在模型中要学习参数的层数。为了对接下来的表达进行简化,我们只考虑对卷积层和全连接层进行量化。举个例子,就像AlexNetAlexNetAlexNetVGG−16VGG-16VGG16GoogleNetGoogleNetGoogleNet以及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}
其中n1n1n1n2n2n2是两个整数,且n2≤n1n2 \leq n1n2n1

也就是说,量化后的权重数值范围由n2n2n2n1n1n1决定,在一定范围以外的数值会被直接怼成0。

任务描述

给定一个预训练的全精度模型,INQ的目的是在尽可能不损失精度的前提下,将该32位的浮点型权重变换到2的整数幂或0上。

此外,还希望能够探索在网络无损量化限定下能支持的最极端的小位宽是多少。

怎么做?

在INQ中,期待的位宽bbb需要我们预先确定好,然后我们只要确定好超参n1n1n1就可以了,因为n2n2n2可以根据位宽bbb以及超参n1n1n1推断而得。

n1n1n1的计算方式为一个经验上有点复杂又实践证明有用的公式:
n1= floor (log⁡2(4s/3)) n_{1}=\text { floor }\left(\log _{2}(4 s / 3)\right) n1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLOWVERSE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值