LSQ:LEARNED STEP SIZE QUANTIZATION论文学习

论文链接

摘要

在推理时运行低精度操作的深度网络具有功率和空间优势,但需要克服在精度降低时保持高精度的挑战。在这里,我们提出一种方法来训练这样的网络,学习步长量化,达到最高的精度AmageNet数据集当使用模型,从各种架构,权重和激活量化2,3或4位的精度,可以训练3位模型达到完全精度基线精度。我们的方法建立在现有的在量化网络中学习权重的方法的基础上,通过改进量化器本身的配置方式。具体来说,我们引入了一种新的方法来估计和缩放在每个权重和激活层的量化器步长下的任务损失梯度,这样它就可以与其他网络参数一起学习。这种方法根据给定系统使用不同级别的精度,只需要对现有的培训代码进行简单的修改。

引言

在这里,我们介绍了一种新的方法来学习深度网络中每一层的量化映射,学习步长量化(LSQ),它改进了之前的努力,有两个关键的贡献。首先,我们提供了一种简单的方法来将梯度近似于量化器的步长,这对量化状态转换很敏感,在学习步长作为模型参数时提供了更细粒度的优化。其次,我们提出了一个简单的启发式方法,使步长更新的大小与权重更新达到更好的平衡,我们证明了这提高了收敛性。该总体方法可用于量化激活和权值,并与现有的反向传播和随机梯度下降的方法一起工作。使用LSQ在ImageNet数据集上来训练几种网络架构,我们证明了比之前的量化方法明显优于之前的量化方法的精度(表1),并且,我们第一次达到,证明了3位量化网络达到全精度网络精度的里程碑(表4)。

在这里插入图片描述
在这里插入图片描述

2. 方法

我们考虑了在推理时使用低精度整数操作来计算卷积和全连接层的深度网络,需要对这些层所操作的权值和激活进行量化。给定数据量化v,量化器步长年代,正和负的数量量化水平QP和QN,分别,我们定义一个量化器,计算v¯,量化和整数的比例表示数据,和vˆ,量化的数据表示在相同的规模v:

在这里插入图片描述

在这里,剪辑(z,r1,r2)返回z,其中低于r1的值设置为r1,高于r2的值设置为r2,[z]将z舍入为最接近的整数。给定一个b位编码,对于无符号数据(激活)QN=0和QP=2b−1,以及对于有符号数据(权重)QN=2b−1和QP=2b−1−1。
推理阶段,¯w和¯x值可以用作输入低精度整数矩阵乘法单位底层卷积或完全连接层,和输出的层调整步长使用相对低成本的高精度标量张量乘法,步长可能是代数合并其他操作如批处理标准化(图1)。在这里插入图片描述
2.1步长梯度
LSQ提供了一种基于训练损失的学习s的方法,通过量化器对步长参数引入以下梯度:在这里插入图片描述

这个梯度是通过使用直接估计器(Bengioetal.,2013)近似的梯度通过近似函数通过操作(虽然离开近似本身的目的区分下游操作),一般在方程1和2和区分所有其他操作。
这个梯度不同于相关近似(图2),而不是学习转换的数据完全发生离散化之前(荣格等,2018),或估计梯度从正向方程删除近似操作,代数取消项,然后区分,∂vˆ/∂=0当-QN<v/s<QP(Choietal.,2018b;a)。在上述这两种方法中,v相对于量化态之间的过渡点的接近程度并不影响量子化参数的梯度。然而,人们可以这样认为给定的v更接近量化过渡点,就越有可能由于s的学习更新而改变其量化bin(v¯)(因为s需要较小的变化),从而导致vˆ的大跳跃。因此,我们期望∂vˆ/∂随着v到过渡点之间的距离的减小而增加,我们确实在LSQ梯度中观察到这种关系。它是吸引人的,这个梯度自然地脱离我们的简单量化公式和使用直接通过估计的近似函数。
在这项工作中,每一层权重和每一层激活都有不同的步长,表示为fp32值,初始化为 2 < ∣ v ∣ > / Q   P   2<|v|>/ \sqrt[] {Q~P~} 2<v>/Q P  ,分别根据初始权重值或第一批激活计算。

2.2步长梯度比例

研究表明,在训练过程中,网络中所有权重层的平均更新幅度与平均参数幅度的比值近似相同,从而实现了良好的收敛性(Youetal.,2017)。一旦正确地设置了学习速率,这就有助于确保所有的更新既不会大到导致局部最小值的重复过调,也不会小到导致不必要的长收敛时间。扩展这一推理,我们认为每个步长也应该有其更新大小与参数大小的比例类似的权重。因此,对于一个在某些损失函数L上训练的网络,该比率

平均应该接近于1,其中||z||表示z的l2-范数。然而,我们期望步长参数随着精度的增加而更小(因为数据被量化得更精细),并且随着量化项目数量的增加,步长更新会更大(因为在计算其梯度时,更多的项目被求和)。纠正,我们把步长损失的梯度尺度,g,在重量步长g=1/(NWQP)^(1/2)和激活步长g=1/√NFQP,NW是每一层权重的数量,Nf是每一层特性的数量。在第3.4节中,我们证明了这提高了训练的准确性,并提供了附录第A节中选择的特定量表背后的推理。

2.3训练

模型量化器使用LSQ进行训练,使其步长可学习参数,损失梯度计算,而其他模型参数可以使用现有技术进行训练。在这里,我们使用了一种常用的训练量化网络的方法(Courbariauxetal.,2015),其中存储全精度权值并更新量化权值激活用于正向和向后传递,通过量化器圆函数的梯度使用直接通过估计器计算(Bengioetal.,2013),这样在这里插入图片描述

并采用随机梯度下降法更新参数。为了在训练过程中更简单,我们使用vˆ作为矩阵乘法层的输入,这在代数上等价于前面描述的推理操作。我们设置输入激活和权重2、3、4或8位矩阵乘法层除了第一个和最后一个,总是使用8位,使第一和最后一层高精度已经成为量化网络的标准实践和证明性能提供一个大的好处。所有其他参数都用fp32表示。所有量化网络都使用训练好的全精度模型的权重进行初始化,然后通过微调可以提高性能。

3.结果

3.1 权重衰减

我们期望降低模型精度将减少模型的过拟合倾向,从而也减少了实现良好性能所需的权重衰减形式的正则化。为了研究这一点,我们对ResNet-18的权值衰减进行了超参数扫描(表2),并确实发现精度较低的网络通过较低的权值衰减达到了更高的精度。通过将3位网络的权重衰减减少一半,并将2位网络减少四分之一,从而提高了性能。我们在所有进一步的实验中都使用了这些重量衰减值。在这里插入图片描述

3.2与其他方法的比较

tale1

3.3精度与模型尺寸之间的关系

在这里插入图片描述

3.4步长梯度因子影响

演示步长梯度尺度的影响(2.2节),我们测量R(见方程4)平均在500次迭代的第一个训练时代ResNet-18,使用不同的步长梯度尺度(网络本身训练的比例中描述的方法,以避免收敛问题)。在没有缩放的情况下,我们发现相对于参数大小,步长更新比权重更新大2到3个数量级,这种不平衡随着精度的增加而增加,8位网络显示出几乎比2位网络大一个数量级(图4,左)。调整每层权重的数量(g=1/√NW),步长和权重之间的不平衡在很大程度上消失了,由于精度之间的不平衡仍然存在(图4,中心)。调整了每层权重的数量和精度(g=1/√NWQP),这种依赖于精度的不平衡也在很大程度上被消除了(图4,右)。
在这里插入图片描述
我们考虑了使用不同的步长梯度尺度训练2位ResNet-18后的网络精度(表3)。使用全梯度尺度的网络(g=1/√NWQP和g=1/√NFQP对于权重和激活步长)作为基线,我们发现仅调整权重和特征计数导致top1精度下降0.3,当没有应用梯度尺度时,除非我们降低初始学习率,否则网络不会收敛。将初始学习率降低到10倍的倍数后,使用的初始学习率为0.0001,我们使用无梯度量表获得的最佳top1精度比基线低3.4。最后,我们发现使用额外增加或减少10倍也降低了top-1的精度。总的来说,这表明我们选择的启发式对缩放步长损失梯度有好处。在这里插入图片描述

3.6量化误差

对于2位ResNet-18模型,我们发现sˆ=为0.949±0.206作为激活,sˆ=为0.025±0.019作为权重(平均±标准差)。sˆ之间的百分比绝对差异和年代的值最小化量化误差,平均在激活层平均绝对误差为50%,63%的均方误差,64%散度,和平均在重量层,平均绝对误差,28%,28%,散度和46%。这表明,LSQ学习的解决方案实际上并没有最小化量化误差。由于LSQ比直接寻求最小化量化误差的方法获得了更好的准确性,这表明简单地将量化器拟合到相应的数据分布可能不是任务性能最优的。

3.7用知识精馏法进行改进

为了更好地理解低精度网络如何能很好地再现全精度精度,我们将LSQ与同架构的知识蒸馏相结合,这已被证明可以改善低精度网络训练(Mishra&Marr,2017)。具体来说,我们使用的蒸馏损失函数Hintonetal.(2015)温度为1和同等重量的标准损失和蒸馏损失(我们发现这给比较结果加权蒸馏损失两倍多或少于标准损失2位ResNet-18)。教师网络是一个训练的全精度模型,与训练的低精度网络具有相同的架构。如表4所示,这提高了性能,top1位的精度增加了1.1位(3位ResNet-50),3位网络达到了全精度基线的分数(比较见表1)。作为对照,我们还使用这种方法从完全精确的教师中提炼出具有相同架构的完全精确(最初未经训练)学生,除了单独训练学生之外,这并没有提高学生网络的准确性。这些结果强化了之前的工作,表明知识蒸馏可以帮助低精度的网络赶上完全精度的性能(Mishra&Marr,2017)。

4结论

这里给出的结果表明,在跨多个网络架构的ImageNet数据集上,LSQ的性能超过了之前所有使用的创建量化网络的方法。我们发现基于层大小和精度调整量化器步长损失梯度的性能最好。有趣的是,LSQ似乎没有最小化量化误差,无论是使用均方误差,平均绝对误差,或库尔背-莱布勒散度测量。该方法本身很简单,每个重量或激活层只需要一个额外的参数。
虽然我们的目标是训练低精度网络,以达到与完全精度相同的精度,但目前还不清楚2位网络是否可以实现这一目标,这里2位网络的精度比它们的全精度低几%。然而,我们发现这种针对最先进的2位网络解决方案是有用的,因为它们可以为给定的模型大小提供最好的精度,例如,在8MB的模型大小限制下,2位ResNet-50比4位ResNet-34更好(图3)。
这项工作是一种趋势的延续,即稳步减少在ImageNet上的一系列网络架构上实现良好性能所需的精度位数。虽然还不清楚它可以走多远,但值得注意的是,在较低的精度下,更高性能的趋势加强了人工神经网络和生物神经网络之间的类比,它们本身使用了可能由少量信息表示的突触(BartolJretal.,2015)和单位位尖峰,它们可以用于小的空间和/或时间集合来提供低位宽数据表示。撇开类比不谈,在降低网络精度的同时保持高精度是一种很有前途的方法,可以减少模型大小和增加吞吐量,从而在现实世界中部署的深度网络中提供性能优势。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值