分享自:

学习步长量化的深度网络训练方法

期刊:ICLR

本文为类型a——单一原创研究报告。以下为学术报告内容:

本研究由IBM Research的Steven K. Esser、Jeffrey L. McKinstry、Deepika Bablani、Rathinakumar Appuswamy及Dharmendra S. Modha等人完成,发表于2020年国际学习表征会议(ICLR 2020),题为《Learned Step Size Quantization》(学习步长量化,简称LSQ)。研究团队来自美国加利福尼亚州圣何塞的IBM研究中心,其中Steven K. Esser为通讯作者。

在学术背景方面,本研究属于深度神经网络模型压缩与低精度推理领域。深度网络在图像识别、语音识别与驾驶辅助等应用中日益重要,但高精度浮点运算在功耗、存储与计算资源方面代价高昂。通过将权重与激活量化为低比特整数,可以显著降低推理成本,但如何在降低精度的同时保持模型准确率仍是一个关键挑战。早期的量化方法采用均匀量化器,其关键参数为步长(step size,即量化区间宽度)。已有方法或基于数据分布统计设定步长,或通过最小化量化误差来调整步长,但前者无法保证任务性能最优,后者虽以量化误差为优化目标,却未必等同于最小化任务损失。因此,本研究的目标是直接以训练损失为优化目标,学习每一层的量化步长,从而在2、3、4比特等极低精度下尽可能保持网络准确率。

在工作流程上,本研究提出LSQ方法,其核心包含两个部分:量化器步长的梯度近似与步长梯度缩放策略。首先,作者定义了一个简单的均匀量化器,对给定数据v、步长s、负量化级数qn和正量化级数qp,通过公式v̄ = ⌊clip(v/s, -qn, qp)⌉和v̂ = v̄ × s实现量化。对于权重,采用有符号编码,qn = 2^(b-1),qp = 2^(b-1)-1;对于激活,采用无符号编码,qn = 0,qp = 2^b - 1。在训练时,权重与激活均使用量化后的值进行前向和后向传播,而全精度权重仍保存并更新。

第一个关键创新是步长梯度的计算。由于取整操作不可微,作者采用直通估计器(straight through estimator)近似取整函数的梯度,同时保留取整操作本身对下游微分的贡献,从而得到步长梯度公式:当 -qn < v/s < qp 时,∂v̂/∂s = -v/s + ⌊v/s⌉;当 v/s ≤ -qn 时,∂v̂/∂s = -qn;当 v/s ≥ qp 时,∂v̂/∂s = qp。与以往方法不同,该梯度对v与量化状态转换点之间的距离敏感。若v靠近某个转换点,较小的步长更新就可能导致其量化值发生跳变,梯度因此较大;反之则较小。这一性质是LSQ相对于QIL和PACT等方法的优势所在,因为后者对量化转换点不敏感或梯度为零。

第二个关键创新是步长梯度缩放。作者借鉴了You等人关于不同权重层更新幅度与参数幅度比例应大致一致的思想,将这一原则推广到步长参数。研究发现,未加缩放时,步长的更新幅度相对其参数值比权重大2至3个数量级,且这种不平衡随精度提高而加剧。为此,作者提出对权重量化步长的梯度乘以g = 1/√(nw·qp),其中nw为该层权重数量;对激活量化步长的梯度乘以g = 1/√(nf·qp),其中nf为该层特征数量。这一缩放使步长更新的相对幅度与权重更新的相对幅度达到平衡,从而改善了收敛。

在训练流程中,LSQ将每层权重和每层激活的步长设为可学习的FP32参数,初始值基于初始权重值或第一批激活数据计算为2〈|v|〉/√qp。所有卷积层与全连接层的权重和激活均被量化为2、3、4或8比特,但第一层和最后一层始终使用8比特。其他参数保持FP32。量化网络从已训练好的全精度模型初始化,然后进行微调。训练使用动量0.9的随机梯度下降、softmax交叉熵损失函数和余弦学习率衰减。8比特网络训练1个epoch,其他低精度网络训练90个epoch。初始学习率对全精度网络为0.1,对2、3、4比特网络为0.01,对8比特网络为0.001。实验在ImageNet数据集上进行,使用了Pre-activation ResNet、带批归一化的VGG以及SqueezeNext等架构。此外,作者通过超参数搜索发现,低精度网络需要较少的权重衰减正则化,其中3比特网络将权重衰减减半,2比特网络减为四分之一时性能更优。

在主要结果方面,LSQ在ImageNet上多个网络架构上取得了当时最高的低精度准确率。在ResNet-18上,2比特模型top-1准确率达到67.6%,3比特为70.2%,4比特为71.1%,后者与全精度70.5%相当或更高;在ResNet-34、ResNet-50、ResNet-101、ResNet-152、VGG-16bn等模型上,LSQ同样在2、3、4比特精度下均超越了QIL、PACT、LQ-Nets、NICE、FAQ等已有方法。值得一提的是,3比特ResNet-18、ResNet-34和ResNet-50等模型的准确率达到了全精度基线的水平,这是此前未报道过的里程碑。

在步长梯度缩放的影响分析中,作者测量了参数更新幅度比r(步长更新幅度与参数幅度之比除以权重更新幅度与参数幅度之比)。结果显示,不加缩放时r可达数百至数千,且随精度升高而增大;仅按1/√nw缩放后,跨网络深度的不平衡基本消除,但跨精度的不平衡仍存在;采用1/√(nw·qp)缩放后,跨精度的不平衡也基本消除。在2比特ResNet-18上,使用完整缩放策略的模型top-1准确率为67.6%,仅按权重数缩放时降低0.3%,不加缩放且将初始学习率降至0.0001时仅为64.2%,说明该缩放策略对最终准确率有重要贡献。

在量化误差分析中,作者考察了LSQ学习到的步长是否能使量化误差最小化。对于2比特ResNet-18,激活层的平均绝对误差最小化步长与LSQ步长的平均绝对差异为50%,均方误差为63%,KL散度为64%;权重层的相应差异分别为47%、28%和46%。这表明LSQ并未直接最小化量化误差,却取得了比直接优化量化误差的方法更高的准确率,说明在任务性能目标下,拟合量化器到数据分布并非最优策略。

在知识蒸馏实验中,作者将LSQ与同架构知识蒸馏结合,使用预训练的全精度模型作为教师网络,温度为1,标准损失与蒸馏损失等权重。结果显示,2比特ResNet-18 top-1准确率提升至67.9%,3比特ResNet-50提升至76.9%,达到全精度基线76.9%;3比特ResNet-18和ResNet-34也分别达到或超过全精度基线。这表明知识蒸馏可以进一步帮助低精度网络逼近全精度性能。

在结论中,作者指出LSQ在ImageNet上多种网络架构中均超越了此前所有量化方法,其方法简单,仅需为每个权重或激活层增加一个步长参数。尽管2比特网络仍比全精度基线低数个百分点,但在模型大小受限的场景中,2比特的大网络可以比4比特的小网络提供更高的准确率。例如,在8MB模型大小限制下,2比特ResNet-50优于4比特ResNet-34。此外,LSQ未最小化量化误差却获得更好任务性能的现象,提示直接以任务损失为优化目标的重要性。

本研究的亮点在于:第一,提出了对量化状态转换敏感的步长梯度近似方法,这是以往方法所不具备的;第二,提出了基于层大小和精度的步长梯度缩放启发式,显著改善了训练收敛;第三,首次展示了3比特量化网络在多种架构上达到全精度基线准确率;第四,揭示LSQ学习到的步长并不最小化量化误差,对量化器优化目标的选择提供了新的认识。此外,作者在附录中给出了梯度缩放因子的推导过程及完整的训练伪代码,为方法复现和工程实现提供了便利。

上述解读依据用户上传的学术文献,如有不准确或可能侵权之处请联系本站站长:admin@fmread.com