![cover](https://devpress.csdnimg.cn/a40e673982a44bd2ab4055923934dfea.png)
非均匀到均匀量化:通过广义直通估计实现精确量化
本文引入了一种广义直通估计器(a generalized straight-through estimator,G-STE),用于难处理的对阈值参数的后向导数计算。
摘要
由于其优越的表示能力,用于压缩神经网络的非均匀量化策略通常比均匀策略实现更好的性能。然而,许多非均匀量化方法在实现非均匀量化权重/激活时忽略了复杂的映射过程,这在硬件部署中产生了不可忽略的时间和空间开销。本文提出了非均匀到均匀量化(Nonuniform-to-Uniform Quantization,N2UQ),这种方法可以保持非均匀方法的强大表示能力,同时可以作为模型推理的均匀量化具有硬件友好性和高效性。我们通过学习灵活的不等距输入阈值来实现这一点,以更好地拟合底层分布,同时将这些实值输入量化为等距输出。为了训练具有可学习输入阈值的量化网络,本文引入了一种广义直通估计器(a generalized straight-through estimator,G-STE),用于难处理的对阈值参数的后向导数计算。此外,本文考虑熵保持正则化,以进一步减少权重量化中的信息损失。即使在施加均匀量化权重和激活的不利约束下,我们的N2UQ在ImageNet上的性能也比最先进的非均匀量化方法高0.5~ 1.7%。
1 背景
深度神经网络(DNN)在各种实际应用中取得了巨大成功。尽管DNN取得了显著的效果,但其模型尺寸大和计算成本高阻碍了DNN的广泛部署,尤其是在资源受限的设备上。当前已经提出了许多压缩和加速DNN的方法,包括通道修剪、量化、神经结构搜索等。
在这些方法中,基于量化的方法通过用更少的位表示权重来压缩模型大小,并通过用高效的逐位运算取代计算量大的卷积运算来加快推理速度。尽管有这些优点,量化DNN与全精度DNN相比仍有不可忽视的性能差距,尤其是在极低比特量化的情况下。例如,2位经典均匀量化ResNet-50在ImageNet数据集上实现了67.1%的Top-1精度[1],与实值ResNet-50相比下降了9.9%。这种性能差距主要源于量化误差,即在有限数量的量化级别上表示实值权重和激活,以及平均量化器无法适应输入值的不同分布。
为了更好地拟合底层分布并减少量化误差,之前的几项研究提出了非均匀量化,方法是根据实值分布的密度调整量化分辨率。然而,非均匀量化的精度提高通常以牺牲硬件实现效率为代价。由于非均匀量化的输出是浮点权重和激活,因此二进制文件之间的位运算无法直接加速其乘法。解决这个问题的一个常见解决方案是建立查找表(LUT),将浮点值映射到二进制数字,如图1(a)所示。与均匀量化相比,非均匀量化产生的这种后处理需要更多的硬件面积,并消耗额外的能量。
Fig.1 (a)以前的非均匀量化函数以等距级别输出权重和激活,这需要将浮点级别映射到二进制数字的后处理,以获得量化的加速效果。(b)提出的N2UQ学习输入阈值以允许更大的灵活性,同时输出均匀量化的值,实现硬件上的线性映射和高效的位操作。使用提出的广义直通估计器(G-STE)解决了难以处理的对于输入阈值的梯度计算。
本研究的目标是开发一种新的量化方法,让硬件映射和均匀量化一样简单,同时提供灵活性,以实现非均匀量化的性能优点。尽管希望强制量化器的输出(即量化权重/激活)具有统一的量化级别,以便不产生额外的后处理任务,但每个输出级别不一定需要表示实值输入的相等范围。如图1(b)所示,我们在学习输入值上的阈值时,将输出量化级别强制为等距,以在拟合量化的底层实值分布时具有更大的灵活性。我们将这种量化器设计称为非均匀到均匀量化器(Nonuniform-to-Uniform Quantizer,N2UQ)。
N2UQ可以通过网络训练自动学习适应输入阈值以获得更高的精度,然而,优化这种非均匀到均匀量化器是一个挑战。因为对于阈值参数的梯度计算很难处理,并且无法通过现有的量化梯度估计方法,即直通估计器(STE[2])来解决。STE简单地估计阈值操作的输入梯度等于输出梯度,根据定义,输出梯度不能在训练中包含阈值差,也不能用梯度更新阈值。
为了应对这一挑战,我们重新研究了随机二值化[3]中STE的最早推导,并推导了一种新的更灵活的量化后向近似方法。我们将其命名为广义直通估计(G-STE)。当所有输入间隔大小相等时,它退化为STE,而对于需要非均匀输入阈值的场景,它通过梯度学习自动调整阈值,并为量化函数提供更细粒度的近似。具体来说,G-STE将随机量化的期望编码为前向确定性量化函数的后向近似,这自然会将难以处理的对于输入阈值参数梯度计算转换为斜率,并在后向梯度计算中对输入阈值差对剩余网络的影响进行编码。
此外,我们提出了权重正则化,该正则化考虑了权重的整体熵,以进一步减少权重量化引起的信息损失。我们广泛评估了提出的N2UQ的有效性,通过G-STE的阈值学习量化器的集体贡献,以及在具有不同架构和不同比特宽度约束的ImageNet上的权重正则化。在所有部署场景下,与最先进的方法(包括均匀和非均匀量化)相比,N2UQ始终显著提高了精度。
本文的贡献包括四个方面:
- 我们提出了非均匀到均匀量化器(N2UQ),通过学习输入阈值来提高量化精度,同时在实现中保持与均匀量化类似的硬件友好性。
- 我们提出了广义直通估计器(G-STE)来处理N2UQ中难以处理的对于输入阈值参数梯度计算。G-STE计算随机量化的期望值,作为前向确定性量化的后向近似。
- 基于熵分析,我们提出了一种考虑整体权重分布的新权重正则化,以进一步保留权重量化中的信息。
- 我们证明,即使在将量化权重和激活固定为均匀且仅学习输入阈值的严格约束下,N2UQ 在ImageNet上比现有的非均匀量化方法在准确度上高0.5 ~ 1.7% 。具体来说,2位ResNet-50模型在ImageNet上实现了76.4%的top-1精度,将与实值对应模型的差距减少到仅0.6%,证明了N2UQ设计的有效性。
2 相关工作
模型压缩是一种有用的技术,用于将神经网络模型部署到存储和计算能力有限的移动设备,并引起了越来越多的关注。模型压缩方法可以分为几大类,包括量化、剪枝、知识蒸馏、紧凑网络设计等。本文主要侧重于量化。
量化可以进一步分类为均匀量化和非均匀量化。与均匀方法相比,非均匀量化可能实现更高的精度,因为它可以通过学习将更多量化级别分配给重要值区域来更好地捕获底层分布。例如,PoT[4]使用二次幂,ApoT[5]进一步提出了加法二次幂量化。然而,通常很难在通用硬件(譬如CPU和GPU)上有效地部署非均匀量化。由于要使用逐位运算加速非均匀量化,需要额外的操作或设计,如查找表(LUT),用于浮点量化输出与其二进制数字表示之间的映射,这与均匀量化相比效率较低。我们提出的N2UQ旨在通过输出均匀量化标准来达到硬件友好的目的,同时允许有效的输入阈值学习以适应更高精度的基础分布,从而将均匀量化和非均匀量化的优点结合起来。
此外,量化函数本质上是一个不连续的阶跃函数,几乎总是对于输入具有零梯度。为了避免这个问题,早期的工作提出了用于梯度估计的直通估计(STE[3]),这在随后的量化方法中被广泛采用。然而,STE只是通过硬阈值函数反向传播,就像它是单位函数(identity function)一样,无法将非线性纳入量化器的输入和输出以适应各种分布。为了解决这个限制,以前的工作在基于STE的量化器之前和/或之后手动添加非线性函数。例如,LCQ[6]向基于STE的量化器添加压缩和扩展功能,以实现非均匀量化。QIL[7]建议在基于STE的量化器之前学习幂函数,以控制量化间隔大小。然而,这些依赖STE的方法存在量化器阈值和非线性函数转折点之间的差异,或者使用人为定义的平滑函数用单个幂超参数控制所有量化间隔的不灵活性。为了克服这一局限性,我们提出了广义直通估计器(G-STE),以将灵活的非线性学习纳入量化器中,详见第3节。
3 方法
在本节中,我们首先在第3.1节中简要介绍量化的目标。然后,我们在第3.2节中介绍了我们的非均匀到均匀量化(N2UQ),包括三个部分:第3.2.1节中前向传递的阈值学习量化器,第3.2.2节中使用广义直通估计器(G-STE)的后向近似,以及第3.3.3节中的附加权重正则化方法。
3.1 预备知识
矩阵乘法是深度神经网络中计算成本最高的操作。 通过将卷积层和全连接层中的权重和激活量化为固定位,可以通过按位运算来加速矩阵乘法[1][8]:
这里a和w是量化激活aq和量化权重 wq的二进制向量。M和K分别表示aq和 wq的位数,popcnt返回比特位为1的数量。然而等式1通常适用于均匀量化,当考虑非均匀量化时,情况变得复杂了。
3.2 非均匀到均匀量化
为了梳理量化的内在机制,我们总结了量化器的两个属性:
属性1(量化器的输出)。 量化网络能用等式1加速的前提是量化器的输出(即量化权重wq和激活aq)可以用OR[1]表示,映射到固定位内的二进制数字:。
由于等式1发生在二进制向量之间,因此该属性很简单。均匀量化的aq和wq可以通过线性映射轻松转换为二进制,但非均匀量化通常需要额外的操作[5]或查找表(LUT[6])来将“n位”非均匀量化的aq和$wq编码为n位二进制数字,因为n位非均匀量化器的输出实际上是2n个不等距浮点值,如图1所示。研究[9][10]表明,该后处理步骤会产生更大的硬件面积和更多的能耗。
属性2(量化器的输入):量化函数 的输入和输出步长的均匀性可以通过适当的量化器设计分离,即输出xq中的量化是均匀的,输入 xr量化不一定需要均匀 。
这一性质源于观察到量化器表示具有多个量化级别xq的实值变量 xr,而量化级别是固定的,实值分布是多样的。因此,在将xr划分为固定量化水平xq时允许可学习的阈值理论上可以结合更多的表示灵活性以实现更高的精度。
3.2.1 前向传递:阈值学习量化
基于这两个属性,我们开发了用于激活量化的非均匀到均匀量化器(N2UQ),其前向传递公式为:
其中n是比特数,T表示可学习阈值, xr ,xq分别表示输入实值变量和输出量化变量。N2UQ的目标是在量化器中对阈值学习进行编码以提供更大的灵活性,同时输出均匀量化的权重和激活以适应快速按位运算,而无需量化和矩阵乘法之间的后处理步骤。
3.2.2 后向传递:广义直通估计器(G-STE)
然而,通过等式2反向传播是困难的,因为:(I)等式2 对于输入 xr的导数几乎处处为零。(II)对于阈值参数的梯度计算很难处理。
对于挑战(I),以前的量化工作采用直通估计器(STE)来近似量化函数中的后向梯度[1][2][6][11]。STE只是将传入梯度分配给阈值操作,作为传出梯度:
和
分别表示第l层中的第i个量化/实值变量。 这个简单的近似函数适用于均匀量化器。 然而,STE 隐含地在量化器的输入和输出间隔中强制执行等轴纵横比,因为它将量化函数视为后向传递中的恒等函数。 这阻碍了量化器设计在固定输出量化值的同时允许可学习的输入阈值。 此外,STE 无法处理挑战(II),即对可学习阈值的梯度计算,因为 STE 基本上只是绕过梯度,就好像量化函数不存在一样。 因此,要提出一个更细粒度和更灵活的反向近似,可以处理输入阈值的梯度计算。 我们在随机二值化中重新审视 STE,并推导出提出的广义直通估计器 (G-STE)。
引理1 在二值化中,可以根据随机二值化函数的期望推导出用于梯度近似到前向确定性二值化函数的直通估计(STE[2])。论文[3]首次提出了随机二值化和确定性二值化的概念。在随机二值化中,实值变量根据它们与 -1/1 的距离随机二值化为-1/1:
其中表示随机二值变量。为了更新
(将层l-1 中的神经元j连接到层l中的神经元i的层l中的权重),通过随机二值化函数计算预期梯度:
其中和
分别是对整个网络的期望,只有随机二值变量和除随机二值变量之外的其他部分。 具体来说,
这得到了二值化函数的通用直通估计器,它在阈值附近相同地传输梯度,并在实值输入离阈值太远时忽略梯度(即xr>1或 xr<-1)。 同时,在前向传递中广泛采用的确定性二值化函数可以通过在方程1中设置概率硬阈值(即 p = 0.5)来实现:
到此,我们展示了STE在前向确定性二值化函数的后向近似中编码了随机二值化的期望。
引理2 量化函数 xq可以被视为具有不同阈值的二值化函数 xb的总和:
Fig.2 (a) 确定性二值化函数和直通估计 (STE) 作为后向近似。 (b) 量化可以看作是二值化函数段的总和,它得出了所提出的广义直通估计器 (G-STE)。
这个引理是不言而喻的,如图2(b)所示。在此基础上,我们将随机二值化的概念扩展到量化以推导G-STE,以解决非均匀到均匀量化器中的阈值学习问题。
我们从第一个量化部分开始。 我们将初始点表示为 s,将其长度表示为 a1。 为简单起见,我们省略了这里的下标。 遵循随机二值化的概念,在 [s, s+a1]范围内,实值变量可以随机量化为 0/1,其概率与它们到 s/s+a1 的距离成正比:
是该段内的随机量化输出。类似于方程式6所示,这个量化段的推导可以从等式8的期望中计算出来:
这样,通过改变斜率,阈值参数a1对网络的影响被适当地编码在后向近似函数等式9中。此外,在前向传递中,不是使用需要随机种子生成过程的随机量化,而是通过将概率阈值设置为p=0.5来采用确定性量化,
同样,可以从这种概率意义上获得剩余片段的前向确定性量化函数和相应的后向近似函数。 然后,通过对 2n -1段求和,可以自然地推导出具有 n 位量化后向近似的非均匀到均匀量化器,如图2所示。 我们将这种提出的反向梯度近似方法命名为广义直通估计器(G-STE),并获得以下定理。
定理1 广义直通估计:
作为nbit非均匀到均匀量化器的后向梯度逼近函数:
通过使用Nonuniform-to-Uniform量化器的随机版本的期望作为其反向近似来解决阈值学习问题。 这里d0=s, di=s+。
Fig.3 权重和激活分布直方图
具有G-STE反向逼近的非均匀到均匀量化器的本质是在反向逼近函数中编码随机量化的平均值,同时在前向传递中具有硬阈值的确定性量化函数。 这有助于将在前向传递中强制输出为特定值的阈值参数的影响同化为在后向传递中逼近压缩或扩展的量化概率,其中阈值参数ai对剩余神经网络的影响反映在 后向函数的斜率。 反过来, 对阈值参数梯度可以很容易地计算为,
我们可以看到,当所有区间大小相等时,G-STE 退化为 STE,而在训练期间,它学会了使用从网络计算的梯度自动调整输入阈值。 具体来说,输出级别被缩放到 。 我们另外应用两个可学习的缩放参数β1、β2来缩放量化前的输入
和量化后的输出
。β1、β2初始化为 1,ai初始化为
并强制为正。 与经典的均匀量化器相比,所提出的 nonuniform-to-uniform 量化器每层仅引入
个额外参数,考虑到大量网络权重,这可以忽略不计。
3.2.3 熵保权重正则化
此外,我们提出了权重正则化,以鼓励量化权重具有更多的信息承载能力。一个重要的观察结果是,实值网络中的权重通常很小,例如, 对于预训练的ResNet-18网络中的权重约为10-2,但量化权重通常在以下范围内扩展:[−1, 1]。 这种幅度失配将导致量化权重塌陷到接近零的几个量化级别。经典的解决方案是使用tanh函数并除以最大绝对权重值,将权重重新缩放为[−1, 1] [1]。 然而,这些重新缩放的权重可能由几个极值主导,并且仍然没有完全占据[−1,1],如图3所示,这会导致巨大的信息损失。
Fig.3 权重和激活分布直方图
从信息论的角度来看,当量化权重包含更高的熵时,会保留更多的信息。 因此,我们有动力在量化器之前对实值权重进行正则化,以获得量化权重的最大熵:, 满足
。 这里pi是量化到第i个量化级别的实值权重的比例,N 是量化级别的总数。 基于拉格朗日乘子,很容易得到最优的
,表示当实值权重被量化到多个量化级别的比例相等时,量化后的权重中的信息熵达到最大值。
给定量化函数FQ = round((clip(wr’)+1)*((2n-1)/2))*((2/(2n-1))-1),我们凭经验解决了当实值权重归一化为 ,对应的量化权重
近似均匀分布在所有量化级别。这里,Wr是实值权重过滤器,|Wr |表示Wr中的条目数。与从图像生成并随批次变化的激活不同,权重是静态参数,可以高度灵活地调整每个值。因此,我们不是通过学习阈值参数来确定所有量化的权重值,而是采用等距阈值进行权重量化,让每个权重单独学习其值并根据整体统计数据缩放权重。
4 实验
为了验证提出的非均匀到均匀量化(N2UQ)的有效性,我们在ImageNet数据集上进行了实验。我们首先在第4.1节中介绍了数据集和训练策略,然后在第4.2节中与最先进的量化方法进行了比较。然后,我们在第4.3节中分析了N2UQ的每个组成的影响。N2UQ如何捕捉细粒度底层分布的可视化结果见第4.4节。
4.1 实验设置
数据集 实验是在ImageNet2012分类数据集上进行的,在1000个类中有120万个训练图像和50000个验证图像。
训练策略 我们遵循论文[1][6][7][12]中的训练方案,使用实值PyTorch预训练模型初始化量化网络,使用Adam优化器和线性学习率衰减调度器,权重参数初始学习速率设置为2.5e-3,批量大小设置为512。根据论文[13],我们将权重衰减设置为0。使用与LSQ[12]相同的知识蒸馏方案,对模型进行128个epoch的训练。我们采用ResNet基本数据增强,训练图像随机调整大小,裁剪为224×224像素,并随机水平翻转,测试图像中心裁剪为224×224像素。为了公平比较,使用与量化模型相同的设置对表1中报告的浮点模型进行初始化和微调。
可学习参数 对于可学习参数,s初始化为0,ai初始化为 2/(2n-1)并强制大于1e-3、可学习的缩放参数 β1 、β2 初始化为1。所有这些可学习参数使用权重参数学习率的1/10。
网络结构 我们采用预激活结构(即非线性Conv-BN结构),并使用RPReLU[13]作为非线性函数。除第一层和最后一层外,所有卷积层和全连接层都用N2UQ量化。
4.2 与最先进方法的比较
表1总结了ResNet上N2UQ方法的精度。与均匀量化相比,N2UQ在学习输入阈值方面具有更大的灵活性,结果表明,N2UQ大大优于均匀方法[1][11][12][14]。此外,随着比特宽度的增加,准确度的提高变得更加显著,因为阈值学习具有更大的灵活性。对于非均匀量化,当前最优方法LCQ[5]本质上使用与经典均匀量化器相同的量化器[1],并学习两个额外的非线性函数来重塑实值输入和量化输出。相反,本文提出的N2UQ完全集成了量化器内部的非线性学习,避免了非线性函数的转折点和量化器阈值之间的差异。因此,拟议的N2UQ比LCQ的精度高出1.7%,表明N2UQ设计良好,能够将阈值学习纳入量化器,以获得更高的灵活性和更好的性能。此外,与非均匀量化相比,N2UQ不仅通过固定输出级别来节省参数,而且在计算量化矩阵乘法时得到均匀量化的权重和激活,从而避免了构建查找表(LUT)来将浮点级别映射到比特位的后处理步骤。 因此对硬件更加友好。对于MobileNetV2结构,N2UQ还实现了表2所示的最先进结果。值得注意的是,N2UQ可以将实值网络压缩到4位,而不会影响甚至提高精度,这表明深度神经网络结构具有冗余性。N2UQ设计良好,可以拟合底层分布并作为一个很好的正则化来防止过拟合。
4.3 消融研究
为了研究每个组件对最终性能的影响,我们对 ImageNet 上的2 位量化ResNet-18网络进行了彻底的消融研究。如表3所示,所提出的权重正则化和带有 G-STE 的阈值学习量化器分别比基线[1]提高了1.9%和3.0% 的准确度。 通过使用这两种技术,我们提出的N2UQ达到了 69.7% 的准确率,将与相应的实值ResNet-18 的准确率差距缩小到只有2.1%。
在表4中,基于提出的G-STE 阈值学习量化器,我们对权重正则化进行了进一步的消融研究。 与所提出的从整体权重统计计算正则化因子的方法相比,使用梯度学习正则化因子引入了不稳定,因为梯度是有噪声的,这会对训练产生负面影响,如表4的第4行所示。此外,之前的权重范数[21]为训练实值网络而设计的,没有关注权重量化,而只是缩放参与矩阵乘法的权重,结果不适合量化网络,如表4的第3行所示。相比之下,基于熵的 正则化考虑了权重分布的知识,这样可以更好地减少权重量化中的信息损失,从而获得更高的准确度。
4.4 消融研究可视化
为了进一步理解提出的 N2UQ,我们说明了量化网络中的初始权重分布和学习参数。在图3(a) 中,给定实值预训练权重作为初始化,使用 tanh 函数并将最大权重值除以对权重进行归一化的基线方法[1]可能会受到极值的影响。具体来说,对于 2 位的情况,权重过滤器中只有 6个条目被量化为 0.5,而在基线方法中,20 个条目被量化为 -0.5。相比之下,所提出的基于熵的正则化方法产生更均匀分布的量化权重,这明显增强了量化权重携带的信息量。在图3(b) 中,经典的均匀量化具有固定的输入阈值,因此很难调整自身以适应不同的底层分布。相比之下,N2UQ 通过神经网络训练来学习输入阈值。如图3(b)右侧虚线框所示,当实值分布在零附近密集且尾部稀疏时,量化函数学习密集区域的间隔较小,稀疏部分的间隔较大,这更好地表示分布并减轻量化误差。
5 结论
我们引入了 Nonuniform-to-Uniform Quantization,缩写为N2UQ,用于学习统一量化器中的输入阈值。与非均匀量化相比,N2UQ 具有硬件友好的优势,因为均匀输出在按位运算之前不需要额外的后处理。同时,通过使输入阈值可学习,N2UQ比经典的均匀量化具有更强的表示能力。为了解决棘手的对于输入阈值的梯度计算,我们从随机量化的本质推导出广义直通估计器(G-STE)。此外,我们提出熵保留权重正则化以进一步减少量化误差。有了这些贡献,N2UQ 在具有均匀输出量化水平的恶劣条件下,比以前最先进的非均匀方法的准确度提高了 0.8 ~ 1.7%。特别是,2 位N2UQ ResNet-50 仅比其实际值低0.6%。
参考文献
更多推荐
所有评论(0)