SCGD: Blended Coarse Gradient Descent for Full Quantization of Deep Neural Networks论文学习

论文链接:https://arxiv.org/pdf/1808.05240.pdf?ref=https://githubhelp.com

摘要

量化深度神经网络(QDNNs)由于其比常规的全精度存储更低的内存和更快的推理速度而具有吸引力。为了保持相同的性能水平,特别是在低比特宽时,必须对qdnn进行重新训练。他们的训练包括分段常数激活函数和离散权值,因此出现数学上的挑战。我们引入了粗梯度的概念,并提出了混合粗梯度下降(BCGD)算法,用于训练完全量化的神经网络。粗梯度通常不是任何函数的梯度,而是一个人工的上升方向。BCGD的权值更新通过对全精度权值的加权平均值及其量化(所谓的混合)进行粗梯度校正,从而产生目标值的充分下降,从而加速训练。我们的实验表明,这种简单的混合技术对于极低位宽的量化非常有效,如二值化。在ImageNet分类任务的ResNet-18的完全量化中,BCGD在所有层中提供了64.36%的top1权值和4位自适应激活。如果第一层和最后一层的权重保持全精度,这个数字将增加到65.46%。作为理论证明,我们对一个具有高斯输入数据的双线性神经网络模型进行了粗梯度下降的收敛性分析,并证明了期望的粗梯度与潜在的真实梯度呈正相关。

1. 引言

训练激活量化网络的数学困难是损失函数变成了一个具有采样随机梯度的分段常数函数。零,这是不传播的。解决这个问题的一个简单而有效的方法是使用一个(广义的)直通(ST)估计量或一个相关的(子)可微函数[16,1,17,18]的导数,如裁剪整流线性单元(裁剪ReLU)[4]。ST估计器的思想可以追溯到20世纪50年代提出的感知器算法[29,30],它用于学习具有二进制输出的单层感知器。对于具有硬阈值激活的多层网络(a.k.a.二进制神经元),Hinton[16]提出使用导数同样的函数作为反向传播或链法则的代理,类似于感知器算法。仅在反向传递中使用的代理导数在[1]中被称为直接估计器,从那时起,人们提出了ST估计器[17,18,4]的几种变体用于处理量化激活函数。[33]最近也提出了一种类似的情况,即由损失函数组成的某些层的导数不能用于反向传播,同时通过用隐式加权的非局部拉普拉斯层代替软max分类器层来提高dnn的精度。对于后者的训练,使用预先训练的全连接层的导数作为替代[33]。
在理论方面,虽然单层感知算法的收敛性已经得到了广泛的研究,但对于基于ST估计器的修正链规则的不寻常的“梯度”输出几乎没有理论理解。由于这个不寻常的“梯度”肯定不是目标函数的梯度,那么一个问题自然就出现了:它如何与目标函数相关联?本文的贡献之一是回答这个问题。我们的主要贡献有三方面:
1.首先,我们引入了粗导数的概念,并将α中σ(x,α)的早期ST估计量或代理偏导数,包括[6]的二值PACT为例。粗的导数是非唯一的。我们提出了α中量化激活函数σ(x,α)的三值粗偏导数,它在网络训练中优于二值1[6]。我们发现,与消失的偏导数∂σ/∂x(x,α)不同,它是即:在α中,σ(x,α)的偏导数实际上是多值的(分段常数)。令人惊讶的是,这一点在完全量化的网络训练中,精确导数在经验上不如粗导数有用。
2.其次,我们提出了一种新的全量化网络加速训练算法,称为混合粗梯度下降法(BCGD)。BCGD权重更新不像流行的二值制连接方案[8,17,28,22,37,4,23,35]那样,在量化值处用粗梯度修正当前的全精度权值,而是通过对全精度权值及其量化的适当平均值和量化进行粗梯度校正。我们将证明BCGD满足具有利普希茨梯度的目标的充分下降性质,而二元连接则不满足,除非迭代[35]具有近似的正交条件。
3.我们的第三个贡献是对具有二值化ReLU激活函数和i.i.d.的两层网络的粗梯度下降的数学分析单位高斯数据。我们给出了一种基于规则ReLU的代理导数的粗梯度的显式形式,并证明了当存在无限的训练数据时,负期望粗梯度给出了一个最小化期望训练损失的下降方向。此外,我们还证明了一个归一化的粗梯度下降算法只收敛于一个全局最小值或一个潜在的伪局部最小值。这就回答了这个问题。

2. 激活量化

第j个量化的ReLUσ(xj,αj)按元素作用于前一个线性层的向量/张量xj输出,它由一个可训练的标量αj>0参数化,称为分辨率。对于实际的硬件级实现,我们最感兴趣的是统一量化:在这里插入图片描述
在这里插入图片描述
STE:
在这里插入图片描述
clipped ReLU [4]
在这里插入图片描述
我们提出的 :我们提出了一个经验的三值代理偏导数,如下
在这里插入图片描述
中间值2ba−1是a.e.的中间k值的算术平均值。偏导数。类似地,一个更粗糙的二值代理,与PACT[6]的衍生结果相同,除了它们的最大值:
在这里插入图片描述
我们将通过修正的链规则将f的复合“梯度”称为粗梯度。虽然它被称为“梯度”,但我们认为它通常不是任何光滑函数的梯度。然而,它在某种程度上利用了分段常数函数f的基本信息,而它的反面为最小化提供了一个下降方向。在第5节中,我们将通过使用i.i.d.检查一个两层网络来验证这一主张高斯分布的数据。我们发现,当存在无限数量的训练样本时,总体训练损失f(即种群损失)变得可微,其梯度较大,并处理一定的利普希茨连续性。更重要的是,我们将展示一个期望的粗梯度的例子,它可以证明与f的潜在真实梯度形成一个锐角,并且只在原始问题的可能的局部极小值处消失。
在训练过程中,应该防止向量α(每个激活层一个分量)太小或太大。由于α的敏感性,我们提出了一种双尺度训练,并将α的学习率设置为权重w的学习率乘以一个远小于1的速率因子,这可能会根据网络架构的不同而变化。该速率因子有效地帮助量化网络稳定收敛,防止α消失。

3.全量化

3.1 权重量化

在这里插入图片描述

3.2混合梯度下降和充分下降特性

选择学习率η足够小,使ρ/η≥L+c。保证收敛到一个临界点。
推论1:混合梯度下降迭代满足充分下降性质。

4. 实验

CIFAR-10数据集:
在这里插入图片描述

在这里插入图片描述
ImageNet数据集:

在这里插入图片描述

5. 激活量化的粗梯度下降分析

在这里插入图片描述

6. 总结

我们为dnn的激活量化问题引入了粗梯度的概念。梯度是不适用的。粗梯度一般不是一个梯度,而是一个人为的上升方向。我们进一步提出了BCGD算法,用于训练完全量化的神经网络。BCGD的权重更新是通过对浮动权重的加权平均值及其量化的粗梯度校正,从而产生足够的客观下降,从而加速。我们的实验表明,BCGD对于极低位宽下的量子化是非常有效的。最后,我们分析了一个具有高斯输入数据的两层神经网络模型的粗梯度下降法,并证明了期望的粗梯度与潜在的真实梯度基本呈正相关。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值