量化论文笔记

1. EasyQuant: Post-training Quantization via Scale Optimization

        本文通过优化缩放参数(scale)提出了一种更为简单高效的后量化方法,称为EasyQuant(EQ),可以达到与训练中量化相近的精度。

        EasyQuant优化了每一层权重和激活值的量化因子的取值,使得卷积后达到更高的量化精度;随后将权重和激活值的位宽降至7bit,中间值以int16形式存储,来加速推理。实验结果显示在不同计算机视觉任务中EQ比TensorRT效果更佳,7bit位宽后量化达到了接近int8的精度。

        本文从优化S的角度出发,很简单就是使得量化前后的值更加相似,量化+反量化后的浮点数与原本的浮点数越相似,证明量化的误差越小。

量化论文笔记_第1张图片

                Q为量化后的整型int8,而O为反量化后的浮点型。

                 O尖为伪量化后的输出,O为正常浮点输出。

量化论文笔记_第2张图片

         因此,最大化两者的相似性即可。

量化论文笔记_第3张图片

         同时,本文还采取贪心算法,逐层逐步量化优化,缩减优化搜索空间。量化的基本流程

量化论文笔记_第4张图片

         本文的scale优化步骤分两步走:

(1)首先固定激活值的缩放因子Sa,调整权重的缩放因子Sw;

(2)随后固定Sw优化Sa。
Sw和Sa交替优化直至cosing相似度收敛或者达到预设的值。

最开始Sw和Sa分别初始化为权重和激活的最大值;随后将搜索空间分为n段进行搜索[aSl,bSl]

 量化论文笔记_第5张图片

        具体还有什么量化到7bit的好处之类的,不太懂,没仔细看。

2 .Data-Free Quantization Through Weight Equalization and Bias Correction

        文章核心点:Data-Free, Weight Equalization, Bias Correction

跨层均衡:per channel一般不需要,主要就是针对于per_tensor,像深度可分离卷积,这种每个通道是分开计算的,权重的分布差异性很大,而per_tensor这种,整层一个scale的,就会产生非常大的损失(谷歌白皮书),为了解决这个问题。

量化论文笔记_第6张图片

        详情关注AI小男孩,量化高阶。 这里把公式列上

量化论文笔记_第7张图片

量化论文笔记_第8张图片

量化论文笔记_第9张图片

  Data free quantization(DFQ)Through Weight Equalization and Bias Correction 论文解析 - 知乎 (zhihu.com)参考知乎解析

跨层均衡会带来一个问题,即在si<1的时候,会导致b那层的bias变大,从而可能导致激活变大,对量化产生负面影响。为了避免不同channel的激活值范围差异过大,文章采取策略是:吸收高偏差到下一层。主要也是利用Relu的特性。

量化论文笔记_第10张图片

Bias Correction:量化偏差修正

涨点杀器:

        就是说量化会带来整体偏差,为了修正这个整体偏差,我们可以采取一些数据,分别推理一次量化后的模型和全精度的模型。

量化论文笔记_第11张图片

 量化论文笔记_第12张图片

量化论文笔记_第13张图片

3. Up or Down? Adaptive Rounding for Post-Training Quantization

        本文就是针对于round函数,一般情况下我们是采用四舍五入的做法,作者尝试了,全部舍去和全部进一步的方法,均不如四舍五入,但是如果随机舍入就会出现比四舍五入好的情况。

量化论文笔记_第14张图片

         因此想要探究round对于损失函数的影响

量化论文笔记_第15张图片

         一脸懵逼,其实是用了泰勒展开来逼近,这里可以参考AI小男孩公众号的推导

量化论文笔记_第16张图片

量化论文笔记_第17张图片

         具体就是将损失函数在W处展开,2阶展开就够用了。

带入到公式中

量化论文笔记_第18张图片

量化论文笔记_第19张图片

         也就是g是一阶导数,h是二阶导数。当函数收敛,就意味着一阶导数一定趋近于0.故只用考虑H这一项。

量化论文笔记_第20张图片

        所以想要将这一项最小,可以分别小这三项,对于前两项来说,一定是四舍五入最好的,因为这样的误差最低嘛,但是对后一项就不一定了,符号不同的话是负数,就会更小,因此不一定是四舍五入为最优。

        现在已经从公式上证明了嗯对,不一定是四舍五入最好,那该如何优化呢?

        本文将该优化问题定义为一个二元无约束的优化问题 (QUBO,Quadratic Unconstrained Binary Optimization)。因为对于w的取值,只能是向上取整或向下取整两种。

量化论文笔记_第21张图片

量化论文笔记_第22张图片

         由于深度神经网络的结构通常很复杂,为了避免问题复杂化,论文就限制这个优化函数只针对网络中的每一层单独进行。

        后面的推导有一丢丢复杂,对于我这个数学渣渣就有点困难了,谁爱看谁看吧()

最终得出就是优化结果

量化论文笔记_第23张图片

         但问题是w是离散的,不好优化,那就把它松驰成连续空间

 

你可能感兴趣的:(人工智能)