神经网络量化(四)

神经网络量化(四)

3.3 纠偏

  另一个常见问题是量化误差通常是有偏的。这意味着原始和量化的层或网络的预期输出是有偏移的(E[Wx] ≠ E[ W ^ \hat{W} W^x])。这种错误在每个输出通道只有少数元素的深度可分离层中更为明显(通常为3×3内核的9个元素)。这种错误的主要贡献者通常是剪切误差,因为一些强烈剪切的异常值很可能导致预期分布的偏移。
  一些论文(Nagel等,2019;Meller等,2019;Finkelstein等,2019)注意到了这个问题,并引入了纠正预期分布偏移的方法。对于具有量化误差∆W = W ^ \hat{W} W^ - W的量化层 W ^ \hat{W} W^,预期的输出分布为
公式 25

  因此,有偏误差由E[∆Wx]给出。由于∆W是常数,我们有E[∆Wx] = ∆WE[x]。如果∆WE[x]不为零,输出分布就会发生偏移。为了抵消这种偏移,我们可以从输出中减去它

公式 26
注意,这个修正项是一个与偏置相同形状的向量,因此可以在推理时将其合并到偏置中,而不会增加额外的开销。有几种计算偏置修正项的方法,其中最常见的两种是经验偏置校正和分析偏置校正。

经验偏置校正: 如果我们可以访问一个校准数据集,偏置修正项可以通过比较量化模型和全精度模型的激活来简单计算。在实践中,可以逐层进行计算。
公式 27
分析偏差校正: Nagel等人(2019)提出了一种方法,可以在不使用数据的情况下分析计算出有偏差的误差。对于具有批归一化和ReLU函数的常见网络,他们使用前一层的批归一化统计数据来计算预期的输入分布E [x]。批归一化参数γ和β对应于批归一化层输出的均值和标准差。假设输入值服从正态分布,ReLU对分布的影响可以使用截断正态分布进行建模。他们表明,其中x p r e ^{pre} pre是预激活输出,假设它服从具有每通道均值β和每通道标准差γ的正态分布,Φ(·)是标准正态分布的累积分布函数,符号 N N N(x)用于表示标准正态分布的概率密度函数。请注意,所有向量操作都是逐元素(每通道)操作。在计算输入分布E [x]之后,校正项可以通过将其与权重量化误差∆W相乘来简单地推导出来。
公式 28
实验  在表4中,我们展示了对MobileNetV2进行8位量化的偏差校正效果。应用分析偏差校正将量化模型的性能从随机提高到50%以上,表明量化引入的有偏差误差严重损害了模型的性能。当将偏差校正与CLE结合使用时,我们发现两种技术是互补的。它们共同实现了接近FP32性能,而不使用任何数据。

3.4 AdaRound

  神经网络权重通常通过将每个FP32值投影到最近的量化网格点来进行量化,如均匀量化网格的方程(4)中的b·e所示。我们将这种量化策略称为最近舍入。最近舍入策略的动机是,对于固定的量化网格,它产生浮点数和量化权重之间的最低均方误差(MSE)。然而,Nagel等人(2020年)表明,在后训练量化权重时,最近舍入在任务损失方面并不是最优的。为了说明这一点,作者使用100个不同的随机舍入样本(Gupta等人,2015年)将ResNet18的第一层权重量化为4位,并评估了每个舍入选择的网络性能。其中最好的舍入选择比最近舍入的性能提高了10%以上。图7通过在y轴上绘制这些舍入选择的性能来说明这一点。在本节中,我们介绍了AdaRound(Nagel等人,2020年),这是一种系统化的方法,用于找到PTQ中良好的权重舍入选择。AdaRound是一个在理论上有良好基础且计算效率高的方法,在实践中显示出显著的性能改进。

表 4

( 表4 MobileNetV2的偏差校正影响。在完整精度和8位量化下评估的ImageNet验证准确率(%))

图 7
(图7 方程(30)中的成本与ResNet18的第一层仅使用4位量化的100个随机舍入向量 W ^ \hat{W} W^的ImageNet验证准确率(%)之间的相关性。)

  由于主要目标是最小化量化对最终任务损失的影响,我们首先从以此损失为目标来制定优化问题
公式 29
其中∆w表示由于量化而产生的扰动,对于每个权重可以取两个可能的值,一个是将权重向上取整,另一个是将权重向下取整。我们希望高效地解决这个二进制优化问题。作为第一步,我们使用二阶泰勒级数展开来近似成本函数。这减轻了在优化过程中对每个新的取整选择进行性能评估的需求。我们进一步假设模型已经收敛,这意味着在近似中可以忽略梯度项的贡献,并且Hessian矩阵是块对角的,忽略了跨层之间的相关性。这导致了以下基于Hessian矩阵的二次无约束二进制优化(QUBO)问题。
公式 30
  图7中验证准确率与方程(30)的目标之间的明显相关性表明,即使对于4位权重量化,后者也可以作为任务损失(方程29)的良好代理。尽管有性能提升(见表5),但方程(30)不能广泛应用于权重舍入,主要有两个原因:

• 计算Hessian矩阵的内存和计算复杂度对于一般用例来说是不切实际的。
• 方程30的QUBO问题是NP-Hard
  为了解决第一个问题,作者引入了额外的适当假设,将方程(30)的目标简化为以下局部优化问题,该问题最小化了层的输出激活的均方误差(MSE)

表 5

表5 在第3.4节中所做的各种近似和假设对ResNet18在ImageNet验证集上的准确率(%)的影响,取5次运行的平均值。N/A表示相应的实验在计算上是不可行的

公式 31
  方程(31)不需要计算Hessian矩阵,也不需要从后续层进行任何反向或前向传播的信息。需要注意的是,用于将方程(30)的QUBO问题与方程(31)的局部优化问题联系起来的近似和分析与舍入问题无关。因此,这种分析也有助于其他问题的算法设计,包括模型压缩和NAS。
  优化方程(31)仍然是一个NP-Hard的优化问题。为了以合理的计算复杂度找到一个良好的近似解,将优化问题放松为以下连续优化问题。
公式 32
其中,||.|| F 2 _{F}^{2} F2表示Frobenius范数, W ^ \hat{W} W^表示软量化权重,定义如下:
公式 33
其中,n和p表示整数网格的限制,n = qmin/s,p = qmax/s。Vi,j是我们优化的连续变量,h是一个取值在0和1之间的单调函数,即h(Vi,j) ∈ [0, 1]。在Nagel等人的研究中,作者使用了修正的sigmoid函数作为h。公式(32)的目标还引入了一个正则化项,鼓励连续优化变量h(Vi,j)收敛到0或1,以使它们成为公式(31)中离散优化的有效解。Nagel等人的研究中使用的正则化器为:
公式 34
其中,β在优化过程中逐渐退火,最初允许h(Vi,j)自由变动,后来强迫它们收敛到0或1。为了避免神经网络层之间的误差累积并考虑非线性,作者提出了以下最终优化问题:
公式 35
其中, x ^ \hat{x} x^是该层的输入,所有前面的层都经过量化,fa是激活函数。公式(35)的目标可以通过随机梯度下降进行有效且高效的优化。这种优化权重舍入的方法被称为AdaRound。
  总结一下,在量化操作中,权重舍入的方式对网络性能有重要影响。AdaRound提供了一种理论上可靠、计算速度快的权重舍入方法。它只需要少量无标签数据样本,无需超参数调整或端到端微调,并且可以应用于任何神经网络的全连接层和卷积层。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值