CN110222821B - 基于权重分布的卷积神经网络低位宽量化方法 - Google Patents
基于权重分布的卷积神经网络低位宽量化方法 Download PDFInfo
- Publication number
- CN110222821B CN110222821B CN201910463678.6A CN201910463678A CN110222821B CN 110222821 B CN110222821 B CN 110222821B CN 201910463678 A CN201910463678 A CN 201910463678A CN 110222821 B CN110222821 B CN 110222821B
- Authority
- CN
- China
- Prior art keywords
- quantization
- absmax
- weight
- thr
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Molecular Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种基于权重分布的卷积神经网络低位宽量化方法,该方法首先利用剪枝,修剪整个特征图,以便于生成在嵌入式或移动设备上也能高效运行的网络;为了进一步减少深度神经网络对存储空间的要求,在剪枝的基础上应用高效的量化算法,且在量化前采用uK‑means算法对量化参数进行优化,可以在一个较大的解空间内搜索出一个理想的、有利于定位全局解的量化参数,再采用渐进性量化的方法,分批对权重进行量化,调整剩余未量化的权重值来补偿已量化部分带来的误差,直至所有权重被量化。本发明的量化方法灵活性高,运算速度快,无需对网络结构进行改变,可在不进行重新训练的情况下具有较高的正确率。
Description
技术领域
本发明涉及卷积神经网络量化\压缩技术,尤其涉及一种基于权重分布的卷积神经网络低位宽量化方法,适合应用于嵌入式神经网络计算硬件,属于深度学习及其硬件设计领域。
背景技术
近年来,深度神经网络(DNN)在众多应用场景上都有了很好的表现效果,包括图像分类,语音识别等等。除了算法上的突破和创新之外,如ReLU函数、Dropout层等,神经网络的成功很大程度上也依赖于目前的硬件计算能力足以满足大型数据集上运行的大规模深度学习训练和推断的运算。比如大量CPU、GPU节点结合使用,TPU等等。
然而,深度神经网络对运算硬件(CPU、GPU等)的储存空间也提出了较高的要求。目前的很多神经网络结构权重又较大的冗余性;同时,之前的研究表明引入适当噪声也能提高神经网络的正确性。因此,减小神经网络在的尺寸很有价值。因为在训练阶段,反向传播的梯度下降(SGD)会累积误差,和推断阶段相比,神经网络的训练过程需要更高的精度。所以大多数研究都关注推断阶段的神经网络压缩。本发明也将研究推断阶段中的神经网络量化,以解决以下几个问题:1)如何确定合适的量化方法并优化量化相关参数;2)如何减少经过量化后精度损失带来的误差。
卷积神经网络是一种前馈(feed-forward)神经网络。典型的卷积神经网络由一层或者多层的卷积层和全连接层组成。与具有相似大小的层的标准前馈神经网络相比,CNN具有更少的连接和参数,因此它们更容易训练,而它们的理论上最佳性能可能仅略微更差。以AlexNet为例,AlexNet具有5个卷积层和3个全连接层,总共约6000万个参数,如果参数都采用float32存储的话,大约需要229MB的存储空间。但是6000万个参数中约97%的参数是全连接层,剩不到3%的参数是卷积层的参数。所以减少参数或者参数的精度是很有必要的,尤其是需要减少全连接层的参数。
神经网络压缩由于其应用的广泛性,收到了深度学习社会的关注,近年来也实现了很大的进展。神经网络压缩方法可以大致分为以下几个类别:参数修剪和共享、低秩分解和知识蒸馏等。其中,参数修剪和共享主要是减少网络中冗余的参数(这些参数对神经网络的正确率的影响较小),可以进一步分为模型量化、剪枝与共享这几类方法。这些方法对不同网络的鲁棒性较强。在这几类方法中,量化方法的现有研究如下:
VANHOUCKE V等探索了一个具有8位整数(与32位浮点)激活的固定点实现(VANHOUCKE V,SENIOR A,MAO M Z.Improving the speed of neural net-works on CPUs[J].,2011)。Hwang&Sung提出了一种用三值的定点数(+1,0,-1)和3比特的信号的网络(HWANG K,SUNG W.Fixed-point feedforward deep neural network design us-ingweights+1,0,and-1[C]//2014 IEEE Workshop on Signal Processing Sys-tems(SiPS).[S.l.:s.n.],2014:1-6.),和浮点数相比,这个网络正确率的下降可以忽略不计,而且在训练阶段也采用这种量化的数值计算输出。此外,有研究首先使用L2误差最小的目标来直接量化每一层的权重,采用逐层量化方式,在MNIST和CIFAR-10数据集上测试了结果,存储空间减小了1/10(ANWAR S,HWANG K,SUNG W.Fixed point optimization of deep convolu-tional neural networks for object recognition[C]//2015 IEEE InternationalCon-ference on Acoustics,Speech and Signal Processing(ICASSP).[S.l.:s.n.],2015:1131-1135.)。Han Song等人提出了DeepCompression的三步方法:(1)根据网络连接的重要性进行剪枝(2)量化网络的权重,并通过权重共享进一步压缩网络(3)经过网络经过重训练后,用哈夫曼编码压缩权重索引编码(HAN S,MAO H,DALLY W J.Deep compression:Compressing deep neural net-works with pruning,trained quantization andhuffman coding[J].ArXiv preprint arXiv:1510.00149,2015.)。Park等人提出了一种基于加权熵对深度神经网络进行量化的方法(PARK E,AHN J,YOO S.Weighted-entropy-based quantization for deep neu-ral networks[C]//Proceedings of the IEEEConference on Computer Vision and Pattern Recognition.[S.l.:s.n.],2017:5456-5464.)。Zhou等人提出了DoReFa-Net,它将线性量化应用于归一化权重和有界激活(ZHOUS,WU Y,NI Z,et al.Dorefa-net:Training low bitwidth convolutional neuralnetworks with low bitwidth gradients[J].ArXiv preprint arXiv:1606.06160,2016.)。
但是现有的量化方法往往具有如下缺陷:
1.很多压缩方法并没有考虑提高计算效率,如Park等人(PARK E,AHN J,YOOS.Weighted-entropy-based quantization for deep neu-ral networks[C]//Proceedings of the IEEE Conference on Computer Vision and PatternRecognition.[S.l.:s.n.],2017:5456-5464.)提出的一种基于加权熵对深度神经网络进行量化的方法,这些量化级别之间没有数值之间的关联,对硬件计算和索引来说增加了复杂度。
2.很多量化方法,比如INQ(ZHOU A,YAO A,GUO Y,et al.Incremental networkquantization:Towards lossless cnns with low-precision weights[J].ArXivpreprint arXiv:1702.03044,2017.)在直接量化之后,还需要重新训练才能恢复较高的正确率,但神经网络训练会消耗较多的计算资源和时间。
3.三元权重网络(TWN LI F,ZHANG B,LIU B.Ternary weight networks[J]ArXivpreprint arXiv:1605.04711,2016.),二元神经网络(BNN COURBARIAUX M,HUBARA I,SOUDRY D,et al.Binarized neural net-works:Training deep neural networks withweights and activations constrained to+1 or-1[J]ArXiv preprint arXiv:1602.02830,2016.),XNOR-net(RASTEGARI M,ORDONEZ V,REDMON J,et al.Xnor-net:Imagenet classi-fication using binary convolutional neural networks[C]//European Conference on Computer Vision.[S.l.:s.n.],2016:525-542.)等网络的量化位宽是固定的,不同层的量化位宽都是相同的,量化方法的灵活性不够高。
发明内容
本发明的目的在于针对现有技术的不足,提供一种基于权重分布的卷积神经网络低位宽量化方法WDQ(Weight-Distributed Quantization),权衡神经网络权重的位宽及其正确率。
本发明采用的技术方案如下:
一种基于权重分布的卷积神经网络低位宽量化方法,包括如下步骤:
1)对卷积神经网络进行剪枝,以去除大部分的非零元素;
2)采用如下公式对处理后的权重进行量化:
其中:
thrpos为位于正值区域出现频率最高的权重值,thrneg为位于负值区域出现频率最高的权重值,将thrpos,thrneg称为阈值;
根据两个阈值以及0的相对位置,将权值大小分为4个区间:
regionnl,regionnr,regionpl,regionpr,
区间范围分别为(-∞,thrneg],((thrneg,0),(0,thrpos),[thrpos,∞);
n代表权重在对数域对应的整数值:
n=round(norm*log(|absmax-w|+1)),round()函数为四舍五入的取整函数;
absmax表示的是每个区间内权重距离对应的阈值最远的值,在区间regionnl,regionnr,regionpl,regionpr中分别写作absmaxnl,absmaxnr,absmaxpl,absmaxpr,
absmaxnl=thrneg-min
absmaxnr=-thrneg
absmaxpl=thrpos
absmaxpr=max-thrpos;
其中min,max代表待量化的权重中的最小值和最大值;
level为每个区间内的量化级别数:
在量化之前,将absmax进行优化,优化后再对权重进行渐进式量化。
所述的对absmax进行优化可以采用uK-means方法,uK-means的具体过程如下:
在对数域里,给定一组数据(x1,x2,...,xn),uK-means将这些数据划分到k个集合中,k≤n,得S={S1,S2,...,Sk},使得组内平方和最小,其中,S集合的值为等差数列,即Si=i/k*Sk;换句话说,它的目标是找到使下式满足的聚类Si,
其中μi是Si的聚类中心,该方法按照以下两个步骤交替进行:
(1)分配:将每个数据分配到聚类中,使得组内平方和最小,所述的平方和为欧氏距离的平方,所以分配就是将数据分配到离它最近的聚类中心即可;
(2)更新:实际上所有聚类中心只由Sk的平均值决定,每次更新只需要改变Sk,其余的Si(i<k)均会随之改变,聚类后的数据与原始的数据之间的误差为aj-xj,其中xj是数据集合中的一个值,aj是在(1)中求出xj对应的聚类中心;
则新的Sk聚类中心μk为:
在聚类中心值不再变化时收敛,step为更新速率,为可调参数。
进一步的,所述的渐进式量化具体是:
将待量化的CNN模型每层的权重划分为两个不相交的组,第一组中的权重根据前述量化公式进行量化,在之后的更新中保持数值固定不变;另一组中的权重的更新基本公式为
(1)对于全连接层来说,它的输出为Zl=Xl·Wl+bl
则:
(2)对于卷积层来说,它的输出为Zl=Xl*Wl+bl
此处的*表示卷积运算,
则:
可以看出本发明方法的思路具体如下:
为了使深度卷积神经网络的推测阶段的运行时间减小,可以首先利用剪枝,修剪整个特征图,以便于生成在嵌入式或移动设备上也能高效运行的网络。为了进一步减少深度神经网络对存储空间的要求,在剪枝的基础上应用高效的量化算法。观察剪枝后的神经网络权重分布,如图1所示,这是AlexNet的fc7层经过剪枝并重训练的权重分布图。神经网络的权重分布都非常有特征,在剪枝后,权重的分布呈现双峰型(忽略权重为0的值),大部分权重分布在接近0的某两个数值附近。数值大的权重对网络的影响比数值小的权重大,但是数量非常少。
基于以下几个因素,考虑采用基于权重分布量化方法:
·近零值在权重值中占的比例非常大,然而,它们对输出的影响很小(例如,非常小的权重误差可能不会对卷积的结果产生太大影响)。因此,希望将较少的量化级别分配给接近零的值,而不是典型的基于线性或对数的量化。
·大的重量和激活对输出有重大影响,但它们并不常见。因此,需要为这些值分配较少的级别,以便最大化每个量化级别的效用。
·靠近阈值(即分布频率最高的值)的权重值不属于之前两种类别。它们数量非常多,对输出质量的影响也很大。所以,对阈值附近的权重多分配一些量化级别是有意义的。
在本发明的方法中:
1.为了减少权重的冗余性,采用剪枝的方法(如采用DeepCompression的方法)去除大部分非零元素,进行剪枝后重训练,可以观察到权重是双峰形状,它们近似对称地位于y轴的两侧(如图1),因此,可只考虑其中的一边。在修剪后,多数权重位于接近阈值。因此,权重的峰值点对最终精度至关重要。在这种情况下,线性编码可能会丢失大量信息。本发明提出了一种非线性编码方案,以提高计算过程中的数据精度。换句话说,它可以进一步减小位宽而不会丢失信息。结果可以进一步减小权重存储大小以实现相似的网络精度。
2.采用uK-means算法对量化参数进行优化,这种算法基于K-means算法,可以在一个较大的解空间内搜索出一个理想的、有利于定位全局解的量化参数。
3.为了在不进行重训练的情况下尽可能的减少量化网络对输出带来的误差,本发明采用渐进性量化的方法。分批对权重进行量化,调整剩余未量化的权重值来补偿已量化部分带来的误差,直至所有权重被量化。
本发明的有益效果是:
1.很多压缩算法并没有考虑提高计算效率。本发明提出的量化方法是以2的幂次进行缩放和加减常数。幂指数的乘法告诉我们这种形式的数值表示方式,对于乘法计算可以用移位来完成,或者使用查找表(LUT)。所以本发明的量化方法适合实际运用于硬件上加快运算速度。
2.很多量化方法在直接量化之后,还需要重新训练才能恢复较高的正确率,但神经网络训练会消耗较多的计算资源和时间,所以本发明寻找合适的量化方法,在不进行重新训练的情况下可保证较高的正确率。
3.本发明的量化方法可以自动从全精度的神经网络生成低位宽的量化网络,不需要对网络结构进行改变。
4.本发明的量化方法灵活性高,是layer-wise的,即每一层可以根据需要设置不同的量化位宽。所以可以在正确率几乎不变的情况下,根据层对精度损失的敏感性,设置合理的量化位宽,以减少平均量化位宽,也即减少模型权重储存空间。
附图说明
图1 AlexNet fc7层的权重分布图;
图2渐进式量化示意图;(a)是预训练模型的原始权重,(b)是选取了50%的权重进行量化,然后固定,标记为fixed,(c)未被量化的剩余权重消除量化之后带来的误差,进行权重更新,(d)将剩下未被量化的权重集合再次分组,一部分量化并标记为fixed,另一部分更新权重以抵消量化带来的误差。重复以上操作直到所有权重都被量化。这张图中,累计的被量化的比率依次为50%->75%->87.5%->100%;
图3 uK-means量化算法伪代码;
图4渐进式量化算法伪代码;
图5量化后CNN网络TOP-1的正确率;(CONV,FC)代表卷积层和全连接层的量化位宽分别为CONV,FC比特。
具体实施方式
本发明的量化方法(简称为WDQ量化方法)具体如下:
将权值分为大于0和小于0两部分(暂时不考虑值为0的权重)regionp和regionn,分别两个区域中权重分布最集中的值作为阈值,设置为thrpos,thrneg,为了表达方便可以统一写为thr。靠近阈值的权重值数量非常多,对网络正确率的影响也很大,对阈值附近的权重需要多分配一些量化级别。根据两个阈值以及0的相对位置,此时权值大小分为4个区间regionnl,regionnr,regionpl,regionpr,区间范围分别为(-∞,thrneg],(thrneg,0),(0,thrpos),[thrpos,∞)。将权重分别减去对应区间的阈值,并取绝对值,这时所有的数据被转换为大于等于1的数值。此时再进行对数操作量化,因为在log域中处理,数据必须先转换为大于等于1的数值,所以需要对绝对值进行加1的操作。通过这样的处理,可以实现阈值附近权重级别分布密集的效果,与理论分析相符合。
接下来需要考虑的问题是给定每一层预期的位宽数b比特(b≥2),如何将量化级别分配到regionnl,regionnr,regionpl,regionpr这四个区间。(需要注意的是b的大小是layer-wise,可以每层设置不同的量化位宽,以达到神经网络存储空间和正确率的平衡。)根据量化位宽数为b比特,可以推断一共有2b个量化级别,因为0必须要占用一个量化级别,而为了保证regionp和regionn区间量化级别分配均匀,所以这两个区间均设置2b-1-1个量化级别。接下来再根据阈值两侧最大最小值在log域中的比例来确定thr左右两侧区间的量化级别。level表示每个区间分配的量化级别。为了表述方便,我们在引入一个变量absmax,表示的是每个区间内距离对应的阈值最远的权重数值。在regionnl,regionnr,regionpl,regionpr分别写作absmaxnl,absmaxnr,absmaxpl,absmaxpr。这里的absmax是可调参数,所有与阈值距离大于absmax的权重都要被截断缩小至absmax。absmaxnl=thrneg-min,absmaxnr=-thrneg,absmaxpl=thrpos,absmaxpr=max-thrpos
则level可以表示为
为了方便表述,这里我们再引入一个变量norm,n代表权重最终在log域中对应的数值,这里要取整;
n=round(norm*log(|absmax-w|+1))
此量化方法满足了以下量化要求:
1.在阈值附近的量化级别较为密集,而远离阈值的区域的量化级别分布稀疏。
2.不同层可以设置不同的量化位宽,灵活性强。
3.量化值之间存在2n的关系,适合硬件运算与压缩。
优化参数
借用信号处理中量化中的两个概念——过载失真(overload distortion)和粒度失真(granular distortion),来解释本发明WDQ方法的量化误差。通常,量化器的设计涉及仅支持有限范围的可能输出值,每当输入超出范围时限幅来限制输出。此限制范围引入的误差称为过载失真。在所支持的量化范围内,量化器的可选输出值之间的间隔量被称为其粒度,并且由该间隔引入的误差被称为粒度失真。量化器的设计通常涉及确定粒度失真和过载失真之间的适当平衡。对于给定支持数量的可能输出值,减小平均粒度失真可能涉及增加平均过载失真,反之亦然。
本发明选择absmax这个参数进行优化而不是thr参数,原因是根据我们的量化原则——对阈值附近的权重多分配一些量化级别,absmax对量化有实际意义,而不是只有数值上计算的意义。而且阈值附近的量化级别分布密集,thr的调整对于最终量化级别的位置分布影响较小。而改变absmax(通常是缩小原始的absmax),保持分布频率高的权值量化级别密集这一原则的同时,可以使得量化级别更加集中于对神经网络表现影响较大的权重区间。
考虑到量化级别和簇(cluster)的相似性,本发明借鉴K-means聚类算法[29]的思想,寻找优化的absmax。
在本量化方法中,只要确定了absmax,即聚类中心中最大的那个数值,其他聚类中心能轻易求得。所以我们不采用Forgy或者Random Partition的方法。我们有天然的初始聚类中心,就是原始权重的最大值、最小值所对应的absmax。当然,初始值还可以调整以达到较快收敛的效果,为了加快收敛达到最优值,先等间隔设置不同的absmax得到生成的网络,从中找到正确率最高的网络对应的absmax值,在这个值附近进行uK-means搜索。
uK-means的算法描述为:在对数域里,给定一组数据(x1,x2,...,xn),uK-means将这些数据划分到k个集合中(k<=n),S={S1,S2,...,Sk},使得组内平方和最小,其中,S集合的值为等差数列,即Si=i/k*Sk。换句话说,它的目标是找到使下式满足的聚类Si,
其中μi是Si的聚类中心。算法按照以下两个步骤交替进行:
(1)分配:将每个数据分配到聚类中,使得组内平方和最小,这里的平方和就是欧氏距离的平方,所以分配就是将数据分配到离它最近的聚类中心即可。
(2)更新:实际上所有聚类中心只由Sk的平均值决定,每次更新只需要改变Sk,其余的Si(i<k)均会随之改变。聚类后的数据与原始的数据之间的误差为aj-xj,其中xj是数据集合中的一个值,aj是在(1)中求出xj对应的聚类中心。
step可以视为学习速率,是一个可调参数。
渐进式量化
尽管设置合适的量化方法并对参数进行优化,但是量化过程中的精度损失仍然不可忽视。针对这个问题,Zhou等人提出的INQ运用分批量化在重训练阶段对模型的权重进行调整。但是这种还存在重训练时间长等问题。本发明直接在量化过程中就采取叠加误差的方式,不需要做重训练。
首先将预训练的CNN模型的每层中的权重划分为两个不相交的组。第一组中的权重根据公式进行量化,在之后的更新中保持固定不变。另一个组中的权重负责补偿第一组量化的精度损失,所以需要消除第一组量化带来的误差对整个网络输出的影响,进行更新。在更新过的组上以迭代的方式重复这几个操作,直到所有的权重被量化成低精度的权重(全部被标记为fixed),渐进式量化结束。图2直观的表述了这个分批渐进式量化的方法。渐进式量化示意图。(a)是预训练模型的原始权重(b)是选取了50%的权重进行量化,然后固定,标记为fixed(c)未被量化的剩余权重消除量化之后带来的误差,进行权重更新(d)将剩下未被量化的权重集合再次分组,一部分量化并标记为fixed,另一部分更新权重以抵消量化带来的误差。重复以上操作直到所有权重都被量化。这张图中,累计的被量化的比率依次为50%->75%->87.5%->100%。
对于第l层,权重的分组可以表示为
将待量化的CNN模型每层的权重划分为两个不相交的组。第一组中的权重根据前述量化公式进行量化,在之后的更新中保持数值固定不变。另一组中的权重的更新基本公式为
(1)对于全连接层来说,它的输出为Zl=Xl·Wl+bl
Zl代表第1层全连接层的输出,Xl代表该层的输入,Wl代表该层的权重,bl代表该层的偏置
则
(2)对于对于卷积层来说,它的输出为Zl=Xl*Wl+bl
这里的*表示卷积运算。
则,
为了分析WDQ量化方法的性能,在大规模数据集ImageNet上进行了深入的实验。ImageNet是迄今为止最具挑战性的图像分类基准数据集。它是按照WordNet架构组织的带标签的图像数据集,有超过1400万的图片,和超过2万个分类,每一张图片都经过了严格的人工筛选和标记。在本研究中采用的是ImageNet的子集ISLVRC这个公开数据集。训练集有约128万张图片和对应的标签,验证集有5万张图片和标签,图片属于1000个不同类别。
本发明采用的深度学习框架为Caffe。因为Caffe的源码为C++,采用模块化结构,方便修改底层代码,并且可拓展性强。而且前人关于神经网络压缩/量化的论文的实现多用caffe框架,易于进行比较。
本发明WDQ应用到Lenet,CaffeNet,AlexNet,GoogleNet等经典神经网路结构上。因为Caffe model zoo没有公开的剪枝并重新练后的网络模型,所以采用开源代码中已经训练好的模型作为基线,没有剪枝模型的也采用类似方法进行剪枝并重训练得到基准模型。
对基准模型进行量化的步骤如下:
1.设置不同的p值(p为优化后的absmax与初始absmax之比),直接进行量化,寻找正确率最高的一段p值范围,选取其中某个p值,对uK-means进行初始化。
2.利用uK-means寻找优化的absmax值,伪代码如图3。
3.确定所有量化相关参数后,对基准模型实施渐进式量化,直至所有权重值被量化完成。渐进式量化的伪代码如图4。
实验结果
表1是本发明WDQ算法在ImageNet数据集上的结果,这里的ref的模型是采用SongHan(HAN S,MAO H,DALLY W J.Deep compression:Compressing deep neural net-workswith pruning,trained quantization and huffman coding[J].ArXiv preprint arXiv:1510.00149,2015.)经过剪枝并重训练的模型,WDQ是通过本发明WDQ量化方法得到的固定位宽大小的低精度网络模型。
我们的WDQ算法生成的固定位宽的CNN模型的正确率和reference模型相比下降很少或者准确率反而有所上升,但是存储空间大大减小。如LeNet,其网络结构较为简单,包含2个卷积层和2个全连接层,其权重分布也较为集中。所以将位宽从32位(全精度浮点数)降低为3位,其Top-1的正确率没有下降,反而上升了0.18%。分析原因可能是LeNet的reference模型并非最优的权重分布,所以适当的引入精度损失造成的误差,反而会使部分权重量化后的值更优,生成的网路正确率比之前更高。CaffeNet和AlexNet的网络结构相似,都包含5个卷积层和3个全连接层。在每层位宽5bit的情况下,Top-1正确率有所下降,误差来源主要是卷积层权重精度损失带来的误差。GoogleNet结构非常复杂,总共有22层,为了避免梯度消失问题,采用在中间两层增加两个loss的方法。全连接层的数量大大减少,使得其网络结构变复杂的同时参数总数增长较小。因为GoogleNet大部分层都是卷积层,而卷积层对精度损失的敏感性大,所以我们测试每层位宽为6比特情况下WDQ量化方法生成的网络模型正确率。和ref相比下降了0.94%。
表1:WDQ在ImageNet数据集上的结果,全精度为32bit
图5展示了应用本发明的WDQ量化方法在CaffeNet结构上生成的的CNN模型的准确率,具体的数据可见表4.2。如图所示,量化的CNN在较少的位宽下实现了较高的正确率。在位宽为(8,6),(7,5),(8,5),(8,4)的时候,和全精度模型相比,正确率反而有所上升。一般来说,量化的位宽越高,WDQ量化生成的网络的正确率越高。但是也有例外,如(8,6)和(8,5),在卷积层量化位宽均为8比特的情况下,全连接层量化为5比特比6比特的模型正确率更高一些。从中可以看出,我们的优化方法还有改进的空间,使(8,6)的正确率进一步提升。从图中也可以看出卷积层对精度损失的敏感性比全连接要大一些。当卷积层位宽下降至5比特,或者全连接层位宽下降到2比特时,准确率有较大幅度的下降。
Claims (1)
1.基于权重分布的卷积神经网络低位宽量化方法,其特征在于,包括如下步骤:
1)对卷积神经网络进行剪枝;
2)采用如下公式对处理后的权重进行量化:
其中:
thrpos为位于正值区域出现频率最高的权重值,thrneg为位于负值区域出现频率最高的权重值,将thrpos,thrneg称为阈值;
根据两个阈值以及0的相对位置,将权值大小分为4个区间:
regionnl,regionnr,regionpl,regionpr,
区间范围分别为(-∞,thrneg],(thrneg,0),(0,thrpos),[thrpos,∞);
n代表权重在对数域对应的整数值:
n=round(norm*log(|absmax-w|+1)),round()函数为四舍五入的取整函数;
absmax表示的是每个区间内权重距离对应的阈值最远的值,在区间regionnl,regionnr,regionpl,regionpr中分别写作absmaxnl,absmaxnr,absmaxpl,absmaxpr,
absmaxnl=thrneg-min
absmaxnr=-thrneg
absmaxpl=thrpos
absmaxpr=max-thrpos;
其中min,max代表待量化的权重中的最小值和最大值;
level为每个区间内的量化级别数:
在量化之前,将absmax进行优化,优化后再对权重进行渐进式量化;
采用uk-means方法对absmax进行优化,具体方法:
在对数域里,给定一组数据(x1,x2,...,xm),uK-means将这些数据划分到k个集合中,k≤m,得S={S1,S2,...,Sk},使得组内平方和最小,其中,S集合的值为等差数列,即Si=i/k*Sk;换句话说,它的目标是找到使下式满足的聚类Si,
其中μi是Si的聚类中心,该方法按照以下两个步骤交替进行:
(1)分配:将每个数据分配到聚类中,使得组内平方和最小,所述的平方和为欧氏距离的平方,所以分配就是将数据分配到离它最近的聚类中心即可;
(2)更新:实际上所有聚类中心只由Sk的平均值决定,每次更新只需要改变Sk,其余的Si均会随之改变,聚类后的数据与原始的数据之间的误差为aj-xj,其中i<k,xj是数据集合中的一个值,aj是在(1)中求出xj对应的聚类中心;
则新的Sk聚类中心μk为:
在聚类中心值不再变化时收敛,step为更新速率,为可调参数;
所述的渐进式量化具体是:
将待量化的CNN模型每层的权重划分为两个不相交的组,第一组中的权重根据前述量化公式进行量化,在之后的更新中保持数值固定不变;另一组中的权重的更新基本公式为
(1)对于全连接层来说,它的输出为Zl=Xl·Wl+bl
Zl代表第l层全连接层的输出,Xl代表该层的输入,Wl代表该层的权重,bl代表该层的偏置;
则:
(2)对于卷积层来说,它的输出为Zl=Xl*Wl+bl
此处的*表示卷积运算,
则:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910463678.6A CN110222821B (zh) | 2019-05-30 | 2019-05-30 | 基于权重分布的卷积神经网络低位宽量化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910463678.6A CN110222821B (zh) | 2019-05-30 | 2019-05-30 | 基于权重分布的卷积神经网络低位宽量化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110222821A CN110222821A (zh) | 2019-09-10 |
CN110222821B true CN110222821B (zh) | 2022-03-25 |
Family
ID=67819034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910463678.6A Active CN110222821B (zh) | 2019-05-30 | 2019-05-30 | 基于权重分布的卷积神经网络低位宽量化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110222821B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112488285A (zh) * | 2019-09-12 | 2021-03-12 | 上海大学 | 基于神经网络权重数据分布特点的量化方法 |
JP2021044783A (ja) * | 2019-09-13 | 2021-03-18 | 富士通株式会社 | 情報処理装置,情報処理方法および情報処理プログラム |
WO2021056180A1 (en) * | 2019-09-24 | 2021-04-01 | Baidu.Com Times Technology (Beijing) Co., Ltd. | Cursor-based adaptive quantization for deep neural networks |
CN110889204B (zh) * | 2019-11-06 | 2021-07-30 | 北京中科胜芯科技有限公司 | 一种神经网络模型参数压缩方法 |
CN111080541B (zh) * | 2019-12-06 | 2020-10-30 | 广东启迪图卫科技股份有限公司 | 基于比特分层和注意力融合机制的彩色图像去噪方法 |
CN111178546B (zh) * | 2019-12-31 | 2023-05-23 | 华为技术有限公司 | 机器学习模型的搜索方法及相关装置、设备 |
CN113112009B (zh) * | 2020-01-13 | 2023-04-18 | 中科寒武纪科技股份有限公司 | 用于神经网络数据量化的方法、装置和计算机可读存储介质 |
CN110874631B (zh) * | 2020-01-20 | 2020-06-16 | 浙江大学 | 一种基于特征图稀疏化的卷积神经网络剪枝方法 |
CN113222098A (zh) * | 2020-01-21 | 2021-08-06 | 上海商汤智能科技有限公司 | 数据处理方法和相关产品 |
CN113222097A (zh) * | 2020-01-21 | 2021-08-06 | 上海商汤智能科技有限公司 | 数据处理方法和相关产品 |
CN111368972B (zh) * | 2020-02-21 | 2023-11-10 | 华为技术有限公司 | 一种卷积层量化方法及其装置 |
CN113298224A (zh) * | 2020-02-24 | 2021-08-24 | 上海商汤智能科技有限公司 | 神经网络模型的重训练方法和相关产品 |
CN111461302B (zh) * | 2020-03-30 | 2024-04-19 | 嘉楠明芯(北京)科技有限公司 | 一种基于卷积神经网络的数据处理方法、设备及存储介质 |
CN113780513B (zh) * | 2020-06-10 | 2024-05-03 | 杭州海康威视数字技术股份有限公司 | 网络模型量化、推理方法、装置、电子设备及存储介质 |
CN111768002B (zh) * | 2020-07-10 | 2021-06-22 | 南开大学 | 一种基于弹性有效位的深度神经网络量化方法 |
CN113947177A (zh) * | 2020-07-15 | 2022-01-18 | 安徽寒武纪信息科技有限公司 | 一种量化校准方法、计算装置和计算机可读存储介质 |
CN112257844B (zh) * | 2020-09-29 | 2022-04-26 | 浙江大学 | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 |
CN114970853A (zh) * | 2022-03-16 | 2022-08-30 | 华南理工大学 | 一种跨范围量化的卷积神经网络压缩方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897734A (zh) * | 2017-01-12 | 2017-06-27 | 南京大学 | 基于深度卷积神经网络的层内非均匀的k平均聚类定点量化方法 |
CN108288089A (zh) * | 2018-01-29 | 2018-07-17 | 百度在线网络技术(北京)有限公司 | 用于生成卷积神经网络的方法和装置 |
CN108345939A (zh) * | 2017-01-25 | 2018-07-31 | 微软技术许可有限责任公司 | 基于定点运算的神经网络 |
CN108510067A (zh) * | 2018-04-11 | 2018-09-07 | 西安电子科技大学 | 基于工程化实现的卷积神经网络量化方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11321609B2 (en) * | 2016-10-19 | 2022-05-03 | Samsung Electronics Co., Ltd | Method and apparatus for neural network quantization |
US10387298B2 (en) * | 2017-04-04 | 2019-08-20 | Hailo Technologies Ltd | Artificial neural network incorporating emphasis and focus techniques |
-
2019
- 2019-05-30 CN CN201910463678.6A patent/CN110222821B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106897734A (zh) * | 2017-01-12 | 2017-06-27 | 南京大学 | 基于深度卷积神经网络的层内非均匀的k平均聚类定点量化方法 |
CN108345939A (zh) * | 2017-01-25 | 2018-07-31 | 微软技术许可有限责任公司 | 基于定点运算的神经网络 |
CN108288089A (zh) * | 2018-01-29 | 2018-07-17 | 百度在线网络技术(北京)有限公司 | 用于生成卷积神经网络的方法和装置 |
CN108510067A (zh) * | 2018-04-11 | 2018-09-07 | 西安电子科技大学 | 基于工程化实现的卷积神经网络量化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110222821A (zh) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110222821B (zh) | 基于权重分布的卷积神经网络低位宽量化方法 | |
CN110555508B (zh) | 人工神经网络调整方法和装置 | |
Köster et al. | Flexpoint: An adaptive numerical format for efficient training of deep neural networks | |
CN110555450B (zh) | 人脸识别神经网络调整方法和装置 | |
Mellempudi et al. | Mixed precision training with 8-bit floating point | |
CN108510067B (zh) | 基于工程化实现的卷积神经网络量化方法 | |
CN110969251B (zh) | 基于无标签数据的神经网络模型量化方法及装置 | |
Miyashita et al. | Convolutional neural networks using logarithmic data representation | |
CN109214509B (zh) | 一种用于深度神经网络高速实时量化结构和运算实现方法 | |
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
CN109002889B (zh) | 自适应迭代式卷积神经网络模型压缩方法 | |
Dai et al. | Vs-quant: Per-vector scaled quantization for accurate low-precision neural network inference | |
Zhang et al. | Differentiable dynamic quantization with mixed precision and adaptive resolution | |
CN112686384A (zh) | 一种自适应比特位宽的神经网络量化方法及其装置 | |
US11531884B2 (en) | Separate quantization method of forming combination of 4-bit and 8-bit data of neural network | |
CN114970853A (zh) | 一种跨范围量化的卷积神经网络压缩方法 | |
Kulkarni et al. | A survey on quantization methods for optimization of deep neural networks | |
CN114943335A (zh) | 一种三值神经网络逐层优化方法 | |
Doshi et al. | Deep learning neural networks optimization using hardware cost penalty | |
CN113918882A (zh) | 可硬件实现的动态稀疏注意力机制的数据处理加速方法 | |
Kummer et al. | Adaptive Precision Training (AdaPT): A dynamic quantized training approach for DNNs | |
EP4150531A1 (en) | Method for training an artificial neural network comprising quantized parameters | |
Choi et al. | Approximate computing techniques for deep neural networks | |
Drumond et al. | End-to-end DNN training with block floating point arithmetic | |
CN113177627B (zh) | 优化系统、重新训练系统及其方法及处理器和可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |