摘要
针对如何将神经网络保真映射到资源受限的嵌入式设备这一问题,提出基于层敏感性分析的卷积神经网络混合精度量化方法。通过计算Hessian矩阵平均迹衡量卷积层参数的敏感性,为位宽分配提供依据;使用逐层升降方法进行位宽分配,最终完成网络模型的混合精度量化。实验结果表明,与DoReFa和LSQ+两种固定精度量化方法相比,所提出的混合精度量化方法在平均位宽为3 bit的情况下将识别准确率提高了10.2%和1.7%;与其他混合精度量化方法相比,所提方法识别准确率提高了1%以上。此外,加噪训练能够有效提高混合精度量化方法的鲁棒性,在噪声标准差为0.5的情况下,将识别准确率提高了16%。
Abstract
To address the problem of how to faithfully map neural networks to resource-constrained embedded devices, a mixed-precision quantization method for convolutional neural networks based on layer sensitivity analysis was proposed. The sensitivity of convolutional layer parameters was measured by calculating the average trace of the Hessian matrix, providing a basis for bit-width allocation. A layer-wise ascending-descending approach was employed for bit-width allocation, ultimately achieving mixed-precision quantization of the network model. Experimental results demonstrate that compared to the fixed-precision quantization methods DoReFa and LSQ+, the proposed mixed-precision quantization method improves recognition accuracy by 10.2% and 1.7%, respectively, at an average bit-width of 3 bit. When compared to other mixed-precision quantization methods, the proposed approach achieves over 1% higher recognition accuracy. Additionally, noise-injected training effectively enhances the robustness of the mixed-precision quantization method, improving recognition accuracy by 16% under a noise standard deviation of 0.5.
随着智能计算技术的不断发展,神经网络被广泛应用于各种任务中,如图像分类[1-4]、目标检测[5-7]和图像分割[8]等,并取得了非常好的效果。出于实时性、隐私性和安全性的考虑,神经网络越来越多地被部署于各式各样的边缘计算设备中。相较于计算机,这些边缘计算设备的存储空间和计算能力有限,直接承载神经网络往往存在一定的困难,因此,迫切需要开展神经网络压缩研究[9-13]。
量化作为一种高效的神经网络压缩方法,能够通过降低位宽来减少使用的计算和存储资源[14-16],从而允许在硬件实现中使用更低精度的计算单元。很多研究学者采用相同的位宽量化网络的权值与激活值[17-19],即采取固定精度量化方法。这种方法硬件实现简单,但由于没有考虑到网络模型各层量化产生的误差差异,无法充分利用有限的硬件资源。此外,还有混合精度量化方法,该方法能为各层分配不同的位宽,能够充分利用存储与计算资源,获得更好的性能表现。当前,混合精度量化方法面临的主要问题是如何为网络各层分配合适的位宽。基于搜索的方法通常通过拓扑结构搜索、网络单元搜索等方式来确定混合精度量化的策略。Wang等提出在全精度模型和量化模型之间保持输入图像的属性排名,从而搜索可迁移的混合精度量化策略[20]。然而,该方法忽略了丰富的类别级特征。为了解决这个问题,Tang等提出了分离正则化方法,以搜索量化策略,使类别级特征对量化噪声更具鲁棒性[21]。尽管这些方法提高了搜索效率,但将基于搜索的方法推广到嵌入式设备部署仍然面临着搜索时间过长等挑战。基于度量的方法则是通过采用特定的度量策略来确定每一层的重要性或敏感性,进而相应地分配位宽。Ma等使用层正交性构造线性规划问题,并推导出位宽分配策略[16]。Tang等通过一次量化感知训练来构建整数线性规划,进而分配位宽,显著减少了搜索时间[22]。Liu等对低锐度的层使用了更低的位宽[15],在较低平均位宽时取得了较好的性能表现。上述方法在模型量化方面取得了很好的效果,但在识别准确率、位宽搜索效率等方面还有较大的改进空间。
针对上述问题,提出基于层敏感性分析的卷积神经网络混合精度量化方法,力图通过制定更合理的位宽分配策略,获得更好的性能表现,同时提高位宽搜索效率。
1 基于层敏感性分析的混合精度量化方法步骤
基于层敏感性分析的混合精度量化方法主要包括以下3个步骤。
步骤1:基于Hessian矩阵平均迹的层敏感性分析。计算卷积神经网络各个卷积层参数的Hessian矩阵平均迹,将其作为各个卷积层敏感性的衡量指标,为位宽分配提供依据。
步骤2:基于逐层升降的位宽分配策略。根据前一步得到的各卷积层的敏感性,使用逐层升降的方法进行位宽分配,确定各个卷积层的位宽。
步骤3:基于量化感知训练的混合精度量化方法。根据前一步确定的各卷积层的位宽,基于量化感知训练完成网络模型的混合精度量化。
1.1 基于Hessian矩阵平均迹的层敏感性分析
1.1.1 理论依据
文献[23]论证了利用权值的Hessian矩阵平均迹作为层敏感性衡量指标的可行性,在量化方面取得了非常好的效果。本节在此基础上,将Hessian矩阵平均迹拓展为同时包容权值、激活值的情况。具体为:将卷积神经网络各层的权值Wi(i=1,2,···,m)、激活值Ai(i=1,2,···,n)用参数θi(i=1,2,···,m+n)统一表示。层敏感性大小定义为:参数受到同等幅度的改变后损失函数值的大小,即
(1)
式中,L为损失函数,为网络收敛时第i组参数,Δ为参数变化量。为了便于说明,后续用L(+Δ)表示式(1)。采用损失函数泰勒级数展开的方式计算损失函数,如式(2)所示。
(2)
式中:是第i组参数的梯度,由于网络收敛,所以存在为网络收敛时的损失函数,即;Hi是第i组参数的Hessian矩阵。为了便于比较第i、第j层参数的层敏感性,对二者受到同等幅度改变后的损失函数作差,需要注意的是,在参数未改变的情况下,存在,则
(3)
可以表示为:
(4)
式中,ni是θi的维数,αbit,i是一个与位宽bit及量化区间有关的常量,υik是第i组Hessian矩阵的第k维特征正交单位向量。则
(5)
式中,表示与对应的特征值。假设,即,所以
(6)
而
(7)
式中,tr(Hi)表示Hessian矩阵Hi的迹。因此,可以利用Hessian矩阵的平均迹作为层敏感性的衡量指标。
1.1.2 Hessian矩阵平均迹的计算方法
由于Hessian矩阵的元素数量是参数量的平方,通过直接计算每一层的Hessian矩阵来获取Hessian矩阵的平均迹,计算代价和存储代价较大。可以通过计算Hessian矩阵与某一向量乘积的方式来实现,具体计算过程为:
(8)
式中,z是与无关的随机向量,满足高斯分布N(0,1)。根据Hutchinson算法[24],则
(9)
式中,E[·]表示数学期望。如果给定n个向量,那么就能够用统计的方法估计迹的值,即
(10)
而Hessian矩阵平均迹的计算公式为:
(11)
其中,表示Hessian矩阵Hi的平均迹,mi表示每层权值矩阵的元素总数。
1.2 基于逐层升降的位宽分配策略
1.2.1 位宽分配问题建模
在实施量化之前,首先需要解决的主要问题为:如何为每一层分配合适的位宽,使得在特定平均位宽情况下损失函数值最小。位宽分配问题模型如图1所示。

图1位宽分配问题模型
Fig.1Bit-width allocation problem model
图1中,卷积神经网络所有层位宽组成的集合为b={b1,b2,···,bi,···,bl},bi表示第i层的位宽,1≤i≤l,l表示卷积神经网络的总层数;每一层的位宽选择空间均为B={B1,B2,···,Bn},n表示位宽的种类数。用表示平均位宽,假设平均位宽的上限值为,则。通常情况下,越接近于,量化带来的损失越小。位宽分配问题可以表示为:
(12)
(13)
其中,mi表示每层权值矩阵的元素总数。因为每一层的位宽搜索空间大小为n种,完成整个卷积神经网络量化所需的搜索空间大小就有nl种,直接对式(12)进行求解需要花费大量的时间。为此,提出了基于逐层升降的位宽分配方法。
1.2.2 位宽确定算法
根据上一节的层敏感性分析方法可以得到卷积神经网络所有卷积层的敏感性。对于敏感性较强的卷积层,位宽应该设置一个较大的值,避免损失过大;对于敏感性较弱的卷积层,位宽应该设置一个较小的值,以增加模型的压缩率。利用式(11)计算获得各层Hessian矩阵的平均迹,作为层敏感性的衡量指标,Hessian矩阵平均迹越大,则层敏感性越强,对应层的位宽排序越靠后;反之,Hessian矩阵平均迹越小,则层敏感性越弱,对应层的位宽排序越靠前。按照Hessian矩阵平均迹的大小将对应的层位宽重新排列为:
(14)
具体如算法1所示。首先,将所有层的位宽都设置为位宽搜索空间的平均数。当不超过时,使敏感性最强的层位宽加1;当超过时,使敏感性最弱的层位宽减1。当敏感性最强的层位宽达到位宽搜索空间B的最大值Bn时,将其排除,转而对敏感性次强的层位宽进行调整;当敏感性最弱的层位宽达到位宽搜索空间B的最小值B1时,将其排除,转而对敏感性次弱的层位宽进行调整。当所有层位宽都调整完毕后,迭代次数e加1,直到迭代次数e达到最大值,则迭代结束。位宽搜索期间,将持续记录与相差最小时b的结果。
随着迭代次数的增加,b将会趋于两极分化,即一部分值为位宽搜索空间B的最小值B1,另一部分值为位宽搜索空间B的最大值Bn,此时若继续进行迭代,则会在某个中间层的位宽产生来回震荡,但因为记录的是与相差最小时b的结果,所以震荡并不会影响算法的收敛性。
算法1逐层升降的位宽确定算法
Alg.1 Layer-by-layer bit width adjustment algorithm

迭代结束后,就确定了基于层敏感性分析的卷积神经网络所有卷积层的位宽。
1.3 基于量化感知训练的混合精度量化方法
固定精度量化主要实现层内权值和激活值的量化,而混合精度量化在此基础上,还要实现层间位宽分配功能。因此,混合精度量化方法可以在固定精度量化方法的基础上实现。
基于量化感知训练的混合精度量化方法流程主要包括6个步骤。
步骤1:加载预训练模型。
步骤2:计算Hessian矩阵平均迹,获得网络各层敏感性。
步骤3:依据敏感性排序,使用逐层升降的方法确定各层位宽,获得位宽集合b。
步骤4:各层按照确定的位宽进行权值与激活值量化。
步骤5:进行量化感知训练,在训练中将误差逐渐降低。
步骤6:训练结束,得到混合精度量化的网络模型。需要说明的是:第五步的量化感知训练中,在预训练权值的基础上,计算各卷积层Hessian矩阵的平均迹以衡量敏感性,基于层敏感性使用前面的位宽分配方法迭代e次以获得各层位宽,对各个卷积层进行量化与反量化,使模型在训练过程中逐渐感知并适应量化带来的误差,逐步降低量化产生的性能损失,提高识别准确率。
2 实验结果
2.1 实验设置
2.1.1 参数设置
本实验基于PyTorch开源库进行,使用的卷积神经网络模型为ResNet18。数据集为CIFAR-10,该数据集包含10个类别共60 000张32像素×32像素的图片,其中50 000张用于训练,10 000张用于测试。量化感知训练初始学习率设置为0.005,并随着训练轮次增加逐渐减小;训练轮次设置为120;权重衰减系数设置为5×10-4。
2.1.2 指标定义
1)准确率。假设预测正确的目标数量为RN,测试集所有目标的数量为TN,则准确率Ac为
(15)
2)搜索效率。采用位宽搜索过程中的加法次数和乘法次数来衡量搜索效率,在保证识别准确率的情况下,加法次数和乘法次数越少,则方法的搜索效率越高。假设卷积神经网络有l个卷积层,每个卷积层的备选位宽有m种,第i个卷积层的参数个数为Ni,通道数为ci,总训练轮次为e,训练集数据个数为t。则不同算法的搜索效率如下:
海森感知量化[25](Hessian aware quantization, HAWQ)在位宽搜索部分的总加法次数An和总乘法次数Mn分别为
(16)
其中,C**表示组合数。
数据质量感知混合精度量化[26](data quality-aware mixed-precision quantization,DQMQ)在位宽搜索部分的总加法次数An和总乘法次数Mn分别为
(17)
所提方法在位宽搜索部分的总加法次数An和总乘法次数Mn分别为
(18)
其中,fround(·)为四舍五入函数。
2.2 性能实验
本小节主要包括4个实验:实验一,在DoReFa[27]和可学习步长量化改进版[28](learned step size quantization+,LSQ+)两种固定精度量化方法的基础上,验证了所提混合精度量化方法的普适性;实验二,将所提混合精度量化方法与其他混合精度量化方法进行对比,体现了所提方法的性能优势;实验三,采用加噪训练的方式提升混合精度量化方法的鲁棒性,验证了其噪声适应能力;实验四,验证了混合精度量化方法在其他数据集上的性能,并分析了其位宽分配过程与训练过程。
2.2.1 混合精度量化方法的普适性
位宽范围设置为3~8 bit,权值位宽与激活值位宽相同。需要说明的是,对于混合精度量化方法而言,此处的位宽指的是平均位宽。实验结果如图2所示。

图2DoReFa和LSQ+使用混合精度量化前后对比
Fig.2DoReFa and LSQ+ comparison before and after using mixed-precision quantization
对于DoReFa方法,在权值和激活值位宽逐渐降低时,混合精度量化方法的识别准确率下降较缓。在权值和激活值位宽为3 bit时,相较于未使用混合精度量化方法,使用混合精度量化方法后,识别准确率提高了10.2%。对于LSQ+方法,在权值和激活值位宽较大时,所提混合精度量化方法的识别准确率与全精度类似;在权值和激活值位宽逐渐减小时,混合精度量化方法同样能够抑制识别准确率的下降;在位宽为3 bit时,相较于未使用混合精度量化方法,使用混合精度量化方法后,准确率提高了1.7%。
上述两种方法中,DoReFa方法在反向传播过程中采用的是直通估计,未使用其他梯度调整方法,而LSQ+方法在反向传播过程中,使用了截断与可学习步长和零点的梯度调整方法。梯度调整方法能够在训练过程中将梯度控制在合理的范围内,使权值收敛更加精确迅速。从图2也可以看出,LSQ+方法的性能表现优于DoReFa方法,说明梯度调整方法能够提升模型的性能。
此外,为了进一步验证混合精度量化方法的普适性,在轻量二元卷积神经网络[29](light binary convolutional neural networks, LB-CNN)固定精度量化方法的基础上也应用所提出的层敏感性分析、位宽分配策略等实现混合精度量化,在权值平均位宽为2 bit、激活值平均位宽为4 bit时,混合精度量化后的识别准确率为89.0%,相较于LB-CNN方法提升了7.8%。并且,在LSQ+方法的基础上应用所提出的混合精度量化方法,在权值平均位宽为2.4 bit、激活值平均位宽为4 bit时[30],识别准确率为93.7%,比文献[30]使用的混合精度量化方法高出约1.3%。
2.2.2 混合精度量化方法的有效性
为了验证所提混合精度量化方法在性能上的优势,将所提方法与HAWQ[25]和DQMQ[26]两种混合精度量化方法进行对比。位宽设置与文献[25-26]相同,权值平均位宽为2 bit,激活值平均位宽为4 bit。实验结果对比情况如表1所示,其中HAWQ和DQMQ的数据均来自文献[26]。
表1各种混合精度量化方法性能对比
Tab.1 Performance comparison of various mixed-precision quantization methods

从表1可以看出,所提方法的识别准确率高于其余两种混合精度量化方法。在权值平均位宽为2 bit,激活值平均位宽为4 bit的情况下,所提方法的识别准确率比HAWQ方法高了1.26%,比DQMQ方法高了1.13%;在搜索效率上,所提方法完成位宽搜索任务所需的加法次数和乘法次数分别为7.6×103和4.2×103,均远低于其他两种方法。
2.2.3 混合精度量化方法的鲁棒性
为了增强采用混合精度量化方法的卷积神经网络的鲁棒性,本小节采用了与文献[31]类似的加噪训练方式,降低含噪声数据带来的影响。向输入数据注入噪声的过程为:

(19)
式中,x表示原始数据,表示注入噪声后的数据,n表示注入的噪声,满足均值为0、标准差为σ的正态分布。
将加噪训练后的混合精度量化方法、加噪训练后的固定精度量化方法,以及未经过加噪训练的混合精度量化方法、未经过加噪训练的固定精度量化方法进行对比,对比结果如图3所示。此处的噪声标准差、位宽设置等与文献[31]相同,其中,0.1≤σ≤0.5,权值、激活值位宽均为4 bit。固定精度量化方法采用DoReFa[27]方法,混合精度量化方法在DoReFa[27]方法基础上实现。

图3加噪训练前后方法性能对比
Fig.3Comparison of model performance before and after noise-robust training
从图3可以看出,随着噪声标准差逐渐增大,未经过加噪训练的混合精度量化方法、未经过加噪训练的固定精度量化方法识别准确率大幅下降,而经过加噪训练的混合精度量化方法、经过加噪训练的固定精度量化方法识别准确率能够维持在较高水平。与未经过加噪训练的量化方法相比,无论是固定精度量化方法,还是混合精度量化方法,加噪训练能够提高不同量化方法对噪声的适应性。在噪声标准差为0.5时,经过加噪训练的混合精度量化方法识别准确率高出未经过加噪训练的混合精度量化方法16%。与固定精度量化方法相比,在噪声标准差0.1≤σ≤0.5时,混合精度量化方法具有更高的准确率,表明所提出的混合精度量化方法对噪声具有更好的适应能力。
2.2.4 混合精度量化方法的位宽分配与训练过程
为了验证所提方法在其他数据集上的性能,并对混合精度量化方法的位宽分配与训练过程进行分析观察了位宽分配算法迭代过程中平均位宽的变化趋势与量化感知训练过程中准确率的变化趋势。数据集采用CIFAR-100,该数据集包含100个类别共60 000张32像素×32像素的图片,其中50 000张用于训练,10 000张用于测试。权值、激活值的平均位宽设置与文献[32]相同,均为3.42 bit。实验结果如图4~5所示。
从图4可以看出,随着迭代次数的增加,平均位宽逐渐逼近3.42 bit并保持不变,验证了所提方法在位宽分配过程中的收敛性。需要说明的是,其收敛速度存在差异是因为卷积层各层参数量不同造成的。从图5可以看出,在量化感知训练中,刚开始准确率提升较快,随着训练轮次的增加,准确率提升减慢,虽然出现波动但总体性能仍然在缓慢提升,最终准确率达到76.78%左右,比文献[32](同一平均位宽下)的准确率高0.8%。

图4位宽分配算法过程中平均位宽的变化趋势
Fig.4Trend of the average bit width change during the bit width allocation algorithm process

图5量化感知训练过程中准确率的变化趋势
Fig.5Trend of accuracy change during the quantization-aware training process
3 结论
提出了一种基于层敏感性分析的卷积神经网络混合精度量化方法,通过计算Hessian矩阵的平均迹来衡量卷积层参数的敏感性,并根据敏感性使用逐层升降的方法进行位宽分配,最终完成网络模型的混合精度量化。基于ResNet18网络模型在CIFAR-10数据集和CIFAR-100数据集上开展实验验证,结果表明:与固定精度量化方法相比,所提混合精度量化方法能够显著提高识别的准确率;与其他混合精度量化方法相比,所提混合精度量化方法具有较好的识别准确率和搜索效率优势。此外,加噪训练能够显著增强量化方法的鲁棒性。