论文、代码和ppt地址:LSQ+。代码地址: LSQplus
本文通过paper解读和代码的分析,来说明LSQ+算法。
Abstract
与ReLU不同,在流行的高效架构中经常使用的较新的激活函数(如Swish、H-swish、Mish)也可能产生负激活值,其正负取值范围是不对称的。典型的可学习量化方案[5, 7]对激活值采用无符号量化,并将所有负激活值量化为零,这会导致性能的重大损失。简单地使用有符号量化来容纳这些负激活值需要额外的符号位,对于低位(2位、3位、4位)量化来说成本很高。为解决这一问题,我们提出了LSQ+,它是LSQ[7]的自然扩展,在其中我们引入了一种通用的非对称量化方案,该方案带有可训练的缩放和偏移参数,能够学习适应负激活值。基于梯度的可学习量化方案通常还存在最终训练性能高度不稳定或差异较大的问题,因此需要大量的超参数调整才能达到令人满意的性能。LSQ+通过对量化参数采用基于均方误差(MSE)的初始化方案缓解了这一问题。我们表明,这种初始化方式使得多次训练运行中最终性能的差异显著降低。总体而言,LSQ+在EfficientNet和MixNet上展现出了最先进的结果,并且对于带有Swish激活函数的神经网络的低位量化(例如:在ImageNet数据集上对EfficientNet-B0进行W4A4量化时性能提升1.8%,进行W2A2量化时性能提升高达5.6%),LSQ+的表现也显著优于LSQ。据我们所知,我们的工作是首个将此类架构量化到极低比特宽度的研究。
1. Introduction
随着深度神经网络在各种应用场景中的广泛应用,如今人们对能让深度网络在资源受限的边缘设备上高效运行的方法的需求日益增长。这些方法包括模型剪枝、神经架构搜索(NAS)以及由新颖架构模块(例如深度可分离卷积、分组卷积、squeezeexcite blocks等)构建的手工打造的高效网络。最后,我们还可以进行模型量化,即将权重和激活值量化到更低的位宽,从而实现高效的定点推理并减少内存带宽的使用。
由于通过神经架构搜索发现了更多高效架构,更新、更通用的激活函数(如Swish [22]、H-swish [11]、Leaky-ReLU)正在取代传统的ReLU。与ReLU不同,这些激活函数也会取到零以下的值。当前诸如PACT [5]和LSQ [7]这样的最先进的量化方案在对激活值进行量化时假定采用无符号量化范围,所有小于零的激活值都会通过量化为零而被舍弃。这对于像ResNet [10]这样基于传统ReLU的架构效果很好,但当应用于采用Swish激活函数的现代架构(如EfficientNet [26]和MixNet [27])时,会导致大量信息丢失。例如,LSQ对预激活的ResNet50进行W4A4量化时能保证准确率无损失,但在将EfficientNet-B0量化到W4A4时,准确率会下降4.1%。简单地采用有符号量化范围来容纳这些负值同样会导致性能下降。
为了缓解在极低位(2位、3位、4位)量化中常见的这些性能下降问题,我们提议采用一种通用的非对称量化方案,该方案带有可学习的偏移参数以及可学习的缩放参数。我们表明,所提出的量化方案能针对不同层以不同方式学习适应负激活值,并恢复LSQ所造成的准确率损失,例如,在对EfficientNet - B0进行W4A4量化时,比LSQ的准确率提高了1.8%,在进行W2A2量化时,准确率提高多达5.6%。据我们所知,我们的工作是首个将诸如EfficientNet和MixNet这样的现代架构量化到极低位宽的研究。
任何基于梯度的可学习量化方案尤其面临的另一个问题是其对初始化的敏感性,这意味着不佳的初始化可能导致在多次训练运行中最终性能存在较大差异。这个问题在min-max初始化([1]中使用的方法)中尤为明显。我们表明,对偏移和缩放参数采用基于均方误差(MSE)最小化[24, 25]的初始化方案,相较于min-max量化,能使最终性能的稳定性显著提高。我们还将这种初始化方案与[7]中提出的方案进行了对比。
总之,我们提出的名为LSQ+的方法扩展了LSQ [7],通过为激活值量化添加一个简单却有效的可学习偏移参数,来恢复在采用类Swish激活函数的架构上损失的准确率。此外,我们的另一贡献在于揭示了适当初始化对于稳定训练的重要性,尤其是在低位量化的情况下。
2. 相关工作
文献[16]对量化基础知识进行了很好的概述,其中解释了非对称量化和对称量化之间的差异。一般来说,我们可以将量化方法分为无需微调即可工作的训练