通过训练获得最优量化区间——Quantization Interval Learning

"Learning to Quantize Deep Networks by Optimizing Quantization Intervals with Task Loss" 这篇文章提出了通过训练获得最优量化器的方法(QIL: Quantization Interval Learning),能够为网络权重与**的量化,找到最优的量化区间或量化器参数。针对指定的训练任务,比如ImageNet图像分类任务,首先设计可训练、参数化的量化器;然后在训练过程中(最小化task loss),同时更新网络的浮点权重以及量化器的可训练参数,最终获得能够很好的适应指定任务的量化策略,且量化位宽低至2bits时,仍能维持较高的推理精度。

通过训练获得最优量化区间——Quantization Interval Learning

QIL量化策略如上图所示,量化区间表示执行量化操作的数值范围,其中pruning操作将低于pruning阈值的数值置零,clipping操作将高于clipping阈值的数值置1。显然当量化等级固定时,量化区间越小,量化分辨率(quantization resolution)越好。决定量化区间的参数是可训练的,包括量化区间的中心通过训练获得最优量化区间——Quantization Interval Learning与偏离中心的距离通过训练获得最优量化区间——Quantization Interval Learning。QIL的量化操作分为两个阶段,包括Transformer与Discretizer,如下式:

通过训练获得最优量化区间——Quantization Interval Learning

首先,Transformer将网络权重映射到[-1,1]范围:

通过训练获得最优量化区间——Quantization Interval Learning

通过训练获得最优量化区间——Quantization Interval Learning是量化器中另一个可训练参数,决定了对网络权重的量化操作是线性还是非线性,不同的通过训练获得最优量化区间——Quantization Interval Learning取值导致的量化行为如下:

通过训练获得最优量化区间——Quantization Interval Learning

其次,Transformer将ReLU输出**映射到[0,1]范围,且执行线性映射:

通过训练获得最优量化区间——Quantization Interval Learning

完成网络权重与ReLU**的Transform之后,再执行等间隔或均匀离散化操作,其中qD表示量化等级(如8bits的256):

通过训练获得最优量化区间——Quantization Interval Learning

总体算法流程如下所示,可采取浮点权重与量化器参数联合训练的方式,或者基于预训练模型单独训练量化器的方式,前者通常能获得更高的精度表现:

通过训练获得最优量化区间——Quantization Interval Learning

文章实验部分,对比了现有的参数估计方式或最小化量化误差方式的量化策略,QIL能够获得更好的精度表现。同时也对比了通过训练获得最优量化区间——Quantization Interval Learning训练和固定的实验结果,具体见文章实验部分。值得注意的是,通过训练,网络权重会在pruning与clipping等转换位置处具有更强的响应,原因可能是为了弥补pruning或clipping带来的数值损失:

通过训练获得最优量化区间——Quantization Interval Learning

Paper地址:https://arxiv.org/abs/1808.05779