CN110309904B - 一种神经网络压缩方法 - Google Patents
一种神经网络压缩方法 Download PDFInfo
- Publication number
- CN110309904B CN110309904B CN201910429964.0A CN201910429964A CN110309904B CN 110309904 B CN110309904 B CN 110309904B CN 201910429964 A CN201910429964 A CN 201910429964A CN 110309904 B CN110309904 B CN 110309904B
- Authority
- CN
- China
- Prior art keywords
- parameter
- network
- quantization
- bit width
- error sensitivity
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000007906 compression Methods 0.000 title claims abstract description 29
- 230000006835 compression Effects 0.000 title claims abstract description 28
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 22
- 238000013139 quantization Methods 0.000 claims abstract description 132
- 230000035945 sensitivity Effects 0.000 claims abstract description 96
- 238000013507 mapping Methods 0.000 claims abstract description 42
- 238000004364 calculation method Methods 0.000 claims abstract description 13
- 238000005259 measurement Methods 0.000 claims abstract description 10
- 238000011156 evaluation Methods 0.000 claims abstract description 5
- 230000008859 change Effects 0.000 claims description 12
- 238000012549 training Methods 0.000 claims description 11
- 238000013461 design Methods 0.000 claims description 6
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 43
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 238000013138 pruning Methods 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 238000003064 k means clustering Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Images
Classifications
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种神经网络压缩方法,该方法包括以下步骤:评估每个网络参数的误差敏感性度量值;根据评估所得到误差敏感性度量值确定网络参数的量化位宽,实现参数误差敏感度到量化位宽的映射;根据得到的参数误差敏感度到量化位宽的映射关系对网络参数实现量化。本发明给首先估计每个网络参数的误差敏感性度量值,然后根据此误差敏感性度量值确定其量化位宽,并相应地对网络参数做量化以减少这些网络参数所需的存储空间,从而实现在保证网络性能的前提下,最大限度地压缩DNN网络的计算与存储规模,从降低其实现复杂度与功耗。
Description
技术领域
本发明涉及涉及人工智能(Artificial Intelligence,AI)及神经网络(NeuralNetwork,NN)技术领域,具体涉及一种高压缩率的压缩算法降低其实现复杂度的神经压缩方法。
背景技术
以深度神经网络(Deep Neural Network,DNN)为代表的人工智能算法在图像识别、目标检测、语音识别、自然语言处理等众多应用领域取得了优异的性能。DNN采用了大规模的网络结构,包含大量的网络参数,并且需要使用大量的数据来训练网络参数。经训练后,神经网络可以准确地提取目标的特征,从而完成相应的处理任务。
深度神经网络因其结构庞大,通常存在大量的冗余结点与冗余连接,因此可以对其做压缩处理。经研究发现,其冗余程度在网络结构中呈非均匀分布,相应地,各连接所对应的权值(参数)对网络输出的影响程度也不一致。
通常DNN的网络规模可能包含多达数百个的隐藏层,总共的网络参数数目可以达到上亿个,因此DNN的处理需要占用大量的计算与存储单元,并且消耗大量的功率。如此高的复杂度给DNN在低成本与低功耗设备(比如物联网设备、可穿戴设备、手持移动终端等)上的应用部署带来很大的困难。
为了降低DNN的实现复杂度,可以对其做压缩处理。例如,Yunchao Gong等人在《Compressing deep convolutional networks using vector quantization》这篇文章中介绍了对深度卷积神经网络(Convolutional Neural Network,CNN)的参数采用失量量化的方法降低其存储规模。Matthieu Courbariaux等人在《BinaryConnect:Training deepneural networks with binary weights during propagations》这篇文章中提出对DNN对网络参数采用二值量化的方法以大幅度地降低其计算与存储开销。更进一步地,Song Han等人在《Deep compression:Compressing deep neural networks with pruning,trainedquantization and Huffman coding》这篇文章中提出了深度压缩(Deep Compression)的方法。具体地,该方法对权值小的网络参数做剪枝(Pruning)处理以降低参数数目;在此基础上对其余参数采用k-means聚类算法做权重共享及量化;并进一步对量化参数采用Huffman编码以降低比特数。
以上诸多的网络压缩方法中,只有Huffman编码(或其它熵编码)方法是一种可靠的无损压缩方法,不会对网络性能造成任何损失。其它的Pruning、权值共享、标量量化、失量量化等方法虽然可以有效地降低DNN的复杂度,但因为在处理过程中没有考虑其对网络输出误差的影响,不可避免地会对网络性能带来损失。即使通过额外的微调(Fine Tuning)来优化量化参数,也难以完全弥补这个损失。
另外,已有的权值共享与量化方法对所有网络参数一致对待,没有考虑到不同的参数对网络输出的影响程度是不同的,或者说没有考虑到网络对不同参数的误差的容忍程度是不同的,因此它们都没有达到最高效的网络压缩效果。
深度神经网络因其结构庞大,通常存在大量的冗余结点与冗余连接,因此可以对其做压缩处理。经研究发现,其冗余程度在网络结构中呈非均匀分布,相应地,各连接所对应的权值(参数)对网络输出的影响程度也不一致。
发明内容
为了解决上述技术问题,本发明给出了一种对网络参数采用可变位宽的量化方式,从而可以在保证网络性能的前提下,最大限度地压缩DNN网络的计算与存储规模,从降低其实现复杂度与功耗。
为实现上述目的,本发明采取的技术方案如下:一种神经网络压缩方法,该方法包括以下步骤:
S1:评估每个网络参数的误差敏感性度量值;
S2:根据S1评估所得到误差敏感性度量值确定网络参数的量化位宽,实现参数误差敏感度到量化位宽的映射;
S3:根据S2得到的参数误差敏感度到量化位宽的映射关系对网络参数实现量化。
优选地,在对网络参数进行S1操作之前,还包括参数分类步骤:
将所有网络参数分成若干类,分类后分别对每一类操作按照步骤S1-S3进行操作。
优选地,所述网络参数包括连接权值和偏置系数中的一种或多种。
优选地,在S1步骤中对参数误差敏感度的估计,采用的评估方法包括:基于误差统计的方法,基于代价函数对网络参数的一阶偏导数计算的方法和基于代价函数对网络参数的二阶偏导数计算的方法中的一种或者多种组合,其中:
所述的基于误差统计的方法包括:基于训练数据集统计参数微调所引起的代价函数变化量,并以该变化量作为网络参数的误差敏感度;
所述的基于代价函数对网络参数的一阶偏导数计算的方法包括:计算代价函数对各个网络参数的一阶偏导数,并以此作为该网络参数的误差敏感度;
所述的基于代价函数对网络参数的二阶偏导数计算的方法包括:计算代价函数对各个网络参数的二阶偏导数,并以此作为该网络参数的误差敏感度。
优选地,所述步骤S2中实现参数误差敏感度到量化位宽的映射的方式包括以下方法的一种或者多种组合的方式实现:
a.将误差敏感度按比例映射成量化位宽;
b.将误差敏感度做偏移后按比例映射成量化位宽;
c.计算误差敏感度相对值的对数,将其乘以一个比例系数后映射成量化位宽;
d.计算参数幅度相对值的对数,将其乘以一个比例系数,然后与上述a,b,c各种方法的得到的结果相比较,取其大者作为量化位宽;
e.按上述a,b,c,d各种方法得到量化位宽后,计算相应的量化误差所引起的梯度变化,若梯度变化量大于一个设计门限,则增加量化位宽,直至梯度变化量不大于设计门限为止。
优选地,在步骤S3中对网络参数实现量化的方法包括均匀量化、非均匀量化或者聚类量化。
训练的数据集为{x1,x2,…,xM},对应的网络输出误差的代价为{L1,L2,…,LM};
对于第n个参数wn施以偏移δw,其值大小为固定Δw,或者在区间[-Δw,Δw]均匀分布,得到w′n=wn+δw,并对其它N-1个参数保持不变,得到新的网络输出误差代价为:以此计算参数wn的误差敏感度sn:
得到:
优选地,所述参数误差敏感度到量化位宽的映射为Φn(sn)第n个参数wn的位宽表示为dn,则dn=Φn(sn),
得到:
其中,dMax表示所设计的最大参数量化位宽,sMax表示所有参数误差敏感度的最大值。
优选地,所述映射为Φn(sn)还表示为:
其中,dMin是所设计的最小量化位宽,其取值大于或等于0;α是一个用于调整误差敏感度到量化位宽映射的比例因子。
优选地,基于计算得到的量化位宽dn,采用均匀量化,量化范围为[-AMax,AMax],AMax表示所设计的最大量化幅度,则量化步长为:
参数wn的量化结果为:
将Q(wn)转换成dn比特的二进制数,即可表示参数wn。
本发明有益的技术效果:本发明给首先估计每个网络参数的误差敏感性度量值,然后根据此误差敏感性度量值确定其量化位宽,并相应地对网络参数做量化以减少这些网络参数所需的存储空间,从而实现在保证网络性能的前提下,最大限度地压缩DNN网络的计算与存储规模,从降低其实现复杂度与功耗。
附图说明
图1是本发明一种神经网络压缩方法的步骤流程图;
图2是本发明中一种阶梯形式的参数误差敏感度到量化位宽的映射函数;
图3是本发明中一种带误差敏感度偏移的阶梯形式的参数误差敏感度到量化位宽的映射函数;
图4是本发明方法结合参数分类的流程框图;
图5是本发明方法结合参数分类和Huffman编码的流程框图;
图6是本发明方法结合网络训练的流程框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例对本发明进行进一步详细说明,但本发明要求保护的范围并不局限于下述具体实施例。
如图1所示,一种神经网络压缩方法,该方法包括以下步骤:
S1:评估每个网络参数的误差敏感性度量值;
所述的网络参数,包括连接权值(Weight)、偏置系数(Bias)等;所述的网络参数的误差敏感性度量值,反映的是网络输出对网络参数误差的敏感程度或容忍程度,体现了每个网络参数在网络模型中的重要程度。
在S1步骤中对参数误差敏感度的估计,采用的评估方法包括:基于误差统计的方法,基于代价函数对网络参数的一阶偏导数计算的方法和基于代价函数对网络参数的二阶偏导数计算的方法中的一种或者多种组合,其中:
所述的基于误差统计的方法包括:基于训练数据集统计参数微调所引起的代价函数变化量,并以该变化量作为网络参数的误差敏感度;
所述的基于代价函数对网络参数的一阶偏导数计算的方法包括:计算代价函数对各个网络参数的一阶偏导数,并以此作为该网络参数的误差敏感度;
所述的基于代价函数对网络参数的二阶偏导数计算的方法包括:计算代价函数对各个网络参数的二阶偏导数,并以此作为该网络参数的误差敏感度。
S2:根据S1评估所得到误差敏感性度量值确定网络参数的量化位宽,实现参数误差敏感度到量化位宽的映射;
所述的根据参数误差敏感度确定量化位宽,实现参数误差敏感度到量化位宽的映射,可以由线性函数、非线性函数、取整操作、及其组合等方式实现,也可以结合参数幅度、梯度检查因素等联合确定。
具体地,所述步骤S2中实现参数误差敏感度到量化位宽的映射的方式包括以下方法的一种或者多种组合的方式实现:
a.将误差敏感度按比例映射成量化位宽;
b.将误差敏感度做偏移后按比例映射成量化位宽;
c.计算误差敏感度相对值的对数,将其乘以一个比例系数后映射成量化位宽;
d.计算参数幅度相对值的对数,将其乘以一个比例系数,然后与上述a,b,c各种方法的得到的结果相比较,取其大者作为量化位宽;
e.按上述a,b,c,d各种方法得到量化位宽后,计算相应的量化误差所引起的梯度变化,若梯度变化量大于一个设计门限,则增加量化位宽,直至梯度变化量不大于设计门限为止。
所述的量化位宽,是取值可以为零的非负整数。当量化位宽取值为零,代表着相应的网络参数在压缩过程后被舍弃,在网络部署和实现时不会占用计算与存储资源。
S3:根据S2得到的参数误差敏感度到量化位宽的映射关系对网络参数实现量化。
所述的量化,方法包括但不限于:均匀量化、非均匀量化、聚类量化等方法。当把网络参数分类并对每个类别里的所有参数统一估计误差敏感度和确定量化位宽时,可以对同一分类中的参数做标量量化或失量量化。
网络参数量化后减少了表示每个网络参数所需的比特数,进而减少这些网络参数所需的存储空间,从而实现对网络的压缩。比如量化前可能需要32比特,量化后比如说是8比特,这样就把网络压缩到原来的四分之一。
本方法还包括参数分类步骤:将所有网络参数分成若干类,分类后分别对每一类操作按照步骤S1-S3进行操作,即对参数误差敏感度的估计以及根据参数误差敏感度确定量化位宽,可以对每一个网络参数逐一操作,也可以先将所有网络参数分成若干类(比如同一个网络层的所有参数分为一类),然后对每个类别里的所有参数统一操作。
以下举例用具体方法及函数来详细介绍本方法的使用过程:
对应于步骤S1,一种实现方法是基于训练数据集统计网络参数误差敏感度:假设有训练数据集{x1,x2,…,xM},对应的网络输出误差的代价为{L1,L2,…,LM}。对第n个参数wn施以偏移δw,其值大小为固定Δw,或者在区间[-ΔwΔw]均匀分布,得到w′n=wn+δw,并对其它N-1个参数保持不变,得到新的网络输出误差代价为:以此计算参数wn的误差敏感度sn,比如:
对于代价函数对于参数wn的二阶偏导数不可直接求解的情况,可以采用迭代方法计算。具体地,将第i个与第k个神经元的输出分别表示为ai与ak,并将它们之前的连接系数表示为wk,i,则代价函数对于ai的二阶偏导数为可用以下公式迭代计算:
其中,f(a)是非线性激活函数。由此,代价函数对于参数wi,j的二阶偏导数计算为:
从而可由上述公式计算出参数wi,j的误差敏感度。
上述基于代价函数对网络参数的二阶偏导数的误差敏感度计算方法可以推广到一阶偏导数或其它高阶偏导数。
以上步骤S1的参数误差敏感度估计过程对所有参数逐个处理,从而得到所有参数的误差敏感度{s1,s2,…,sN}。
步骤S2的实现方式是设计一个从参数误差敏感度到量化位宽的映射函数Φn(sn)。若把第n个参数wn的位宽表示为dn,则dn=Φn(sn)。
映射函数Φn(sn)可以包含线性运算、非线性运算、取整等处理。
映射函数Φn(sn)的一个实现例子是:
其中,dMax表示所设计的最大参数量化位宽,sMax表示所有参数误差敏感度的最大值。这种映射函数的映射关系如图2所示,它是一个阶梯函数,最大误差敏感度的参数得到的量化位宽是dMax;而最小误差敏感度的参数得到的量化位宽是0,意味着最小误差敏感度的参数会在压缩后的网络中被舍弃。
映射函数Φn(sn)的另一个实现例子是:
其中,0<Δs<sMax,它表示所设计的误差敏感度偏移量。该映射函数如图3所示,所有误差敏感度小于Δs的参数都得到量化位宽0,即在压缩后网络中被舍弃。通过调整Δs,可以控制舍弃参数的比例,从而在功能上实现类似剪枝(Pruning)效果。但由于它是以参数的误差敏感度作为舍弃条件,而不是以参数值本身的大小作为依据,所以可以完全控制参数舍弃对网络性能带来的影响。
映射函数Φn(sn)的另一个实现例子是:
其中,dMin是所设计的最小量化位宽,其取值大于或等于0;α是一个用于调整误差敏感度到量化位宽映射的比例因子。使用对数函数可以准确地反映量化位宽对量化误差的影响,而比例因子α可以灵活地控制量化位宽。当dMin取值为0,比例因子α也可以作为参数舍弃的相对门限。同样,因为该门限也是以误差敏感度为依据,可以完全控制参数舍弃对网络性能带来的影响。
映射函数Φn(sn)的另一类实现例子是上述方法与参数幅度联合确定量位宽,如:
其中,AMax表示所设计的最大量化幅度,其通常对应于最大的参数幅度;β是一个用于调整参数幅度到量化位宽映射的比例因子。该方法既考虑了误差敏感度对量化位宽的要求,也考虑了参数幅度对量化位宽的要求。通过调整比例因子α与β,可以灵活地调整误差敏感度与参数幅度对量化位宽的影响程度。当dMin取值为0,这两个比例因子也可以联合作为调整参数舍弃比例的相对门限。
映射函数φn(sn)的另一类实现例子是上述方法与梯度检查相结合。用gn表示代价函数对于参数wn的一阶偏导数,其可以通过直接求解法或后向传播(BackPropagation,BP)方法计算得到。基于上述方法计算得到参数wn的量化位宽dn,计量最大量化误差为:
并对参数wn施以偏移Δmax,得到w′n=wn+Δmax,然后重新计算代价函数对于该参数在值为w′n时的一阶偏导数,表示为g′n。若|g′n-gn|>ε,其中ε为所设计的梯度变化门限,则对量化位宽加1,即dn:=dn+1;然后重复上述过程,直到满足梯度变化条件:|g′n-gn|≤ε,最终得到的dn即为参数wn的量化位宽。
上述映射函数例子可以很容易地推广到其它函数形式,从而实现各种不同的参数误差敏感度到量化位宽的映射方式。
步骤S3是根据S2确定的量化位宽对每个参数做量化。所有参数可以采用相同的量化范围,或者各不相同的量化范围。具体的量化过程可以采用普通的均匀量化,或者是非均匀量化(如μ律量化)。另一种实现是先对参数做k-means聚类操作(此时量化位宽用于决定此聚类算法的分类数),然后再对聚类结果做量化处理。
例如采用均匀量化,量化范围为[-AMax,AMax],则量化步长为:
参数wn的量化结果为:
将Q(wn)转换成dn比特的二进制数,即可表示参数wn。
以上技术方案可以推广到带参数分类操作的情况。
如图4所示,该推广方案中,首先对所有网络参数做分类,然后确定各分类的参数量化范围,下一步对每类参数做误差敏感度估计,并以此映射出每类参数的统一的量化位宽,最后对每类参数分别做量化。
网络参数分类方式包括:以网络层级分类,即相同层级(Layer)的参数分为一类;以层级属性分类,比如全连接层参数分为一类,卷积层参数分为一类等;以参数性质分类,如连接权重(Weight)分为一类,偏置系数(Bias)分为一类等;以及其它各种分类方法。
各类参数可以设置不同的量化范围。比如,对一个类别中的所有参数取其最小值wMin与最大值wMax,以区间[wMin,wMax]作为该类参数的共同的量化范围;再比如,对一个类别中的所有参数的绝对值取最大幅度AMax,以区间[-μ·AMax,μ·AMax]作为该类参数的共同的量化范围,其中μ是一个可调的比例因子;或者用其它方法确定其量化范围。
每类参数的误差敏感度估计与前述方案相同,对每一类别里的每个参数分别估计出其误差敏感度,然后对同一类别里的所有参数的误差敏感度取最大值或平均值,以此作为该类别参数的误差敏感度。
从每类参数误差敏感度到量化位宽的映射方法也与前述方案相同,得到的是每一类别参数的统一的量化位宽。其中映射过程中所采用的量化范围是由上述第二步所确定的各类别参数的统一的量化范围。
在最后一步量化过程,可以对同一类别的参数采用前述各种标量量化方案,也可以采用各种失量量化方案。
以上技术方案可以推广到结合Huffman编码的情况。
如图5所示的推广方案中,前五个步骤与上述带参数分类操作的技术方案相同;在分类参数量化操作后,首先统计各类别中经量化后的参数的概率分布,然后依据此概率分布对参数做Huffman编码。因为Huffman编码是一种无损的压缩方案,不会对网络的性能造成损失。结合Huffman编码与基于参数误差敏感度的量化方案,可以在保证网络性能的前提下,最大限度地提高网络的压缩率。Huffman编码也可以替换成其它熵编码方案或其它无损压缩编码方案。
以上实施例子均假设网络参数已经经过训练,它们也可以推广到网络压缩与网络训练相结合的情况。
如图6所示的推广方案中,在网络的训练过程中对每次迭代更新得到的网络参数采用上述方法估计其误差敏感度,根据其映射得到的量化位宽对参数做量化。当采用代价函数对于参数的二阶偏导数作为参数的误差敏感度估计,并且采用迭代方法计算时,可以在后向传播方法更新梯度与参数的过程中同时更新代价函数对于参数的二阶偏导数,这样就可以直接估计出参数的误差敏感度。
每轮迭代参数量化后,需判断是否停止迭代。其中判断准则包括:比较量化后的参数与上一轮迭代得到的量化参数,若所有量化参数没有变化,或变化小于一定的门限则停止迭代;比较基于量化后的参数重新计算得到的梯度,若梯度的幅度小于一定的门限则停止迭代;检查采用量化参数的网络性能,若其性能指标高于一定门限,或较上一轮迭代得到的性能指标的变化量小于一定门限则停止迭代;以及采用其它判断准则或上述准则的不同组合等。由于在每步迭代过程中对参数做了量化,迭代过程可以更快速地收敛。
以上所述的网络参数量化压缩方案可以很容易地与其它压缩方案或技术相结合,比如剪枝(Pruning)、参数微调(Fine Tuning)等,在此不再赘述。
根据上述说明书的揭示和教导,本发明所属领域的技术人员还可以对上述实施方式进行变更和修改。因此,本发明并不局限于上面揭示和描述的具体实施方式,对发明的一些修改和变更也应当落入本发明的权利要求的保护范围内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对发明构成任何限制。
Claims (7)
1.一种神经网络压缩方法,其特征在于,该方法包括以下步骤:
S1:评估每个网络参数的误差敏感性度量值;一个已训练待压缩的神经网络的所有N个网络参数表示为:w={w1,w2,…,wN};对于输入x,网络输出为:在已知x的真实标记为y的情况下,网络输出误差的代价函数表示为:
训练的数据集为{x1,x2,…,xM},对应的网络输出误差的代价为{L1,L2,…,LM};
对于第n个参数wn施以偏移δw,其值大小为固定Δw,或者在区间[-Δw,Δw]均匀分布,得到w′n=wn+δw,并对其它N-1个参数保持不变,得到新的网络输出误差代价为:以此计算参数wn的误差敏感度sn:
得到:
S2:根据S1评估所得到误差敏感性度量值确定网络参数的量化位宽,实现参数误差敏感度到量化位宽的映射;所述参数误差敏感度到量化位宽的映射为Φn(sn),第n个参数wn的位宽表示为dn,则dn=Φn(sn),所述映射为Φn(sn)表示为:
其中,dMax表示所设计的最大参数量化位宽,sMax表示所有参数误差敏感度的最大值;dMin是所设计的最小量化位宽,其取值大于或等于0;α是一个用于调整误差敏感度到量化位宽映射的比例因子;
S3:根据S2得到的参数误差敏感度到量化位宽的映射关系对网络参数实现量化。
2.如权利要求1所述的一种神经网络压缩方法,其特征在于,在对网络参数进行S1操作之前,还包括参数分类步骤:
将所有网络参数分成若干类,分类后分别对每一类操作按照步骤S1-S3进行操作。
3.如权利要求1所述的一种神经网络压缩方法,其特征在于,所述网络参数包括连接权值和偏置系数中的一种或多种。
4.如权利要求1所述的一种神经网络压缩方法,其特征在于,在S1步骤中对参数误差敏感度的估计,采用的评估方法包括:基于误差统计的方法,基于代价函数对网络参数的一阶偏导数计算的方法和基于代价函数对网络参数的二阶偏导数计算的方法中的一种或者多种组合,其中:
所述的基于误差统计的方法包括:基于训练数据集统计参数微调所引起的代价函数变化量,并以该变化量作为网络参数的误差敏感度;
所述的基于代价函数对网络参数的一阶偏导数计算的方法包括:计算代价函数对各个网络参数的一阶偏导数,并以此作为该网络参数的误差敏感度;
所述的基于代价函数对网络参数的二阶偏导数计算的方法包括:计算代价函数对各个网络参数的二阶偏导数,并以此作为该网络参数的误差敏感度。
5.如权利要求4所述的一种神经网络压缩方法,其特征在于,所述步骤S2中实现参数误差敏感度到量化位宽的映射的方式包括以下方法的一种或者多种组合的方式实现:
a.将误差敏感度按比例映射成量化位宽;
b.将误差敏感度做偏移后按比例映射成量化位宽;
c.计算误差敏感度相对值的对数,将其乘以一个比例系数后映射成量化位宽;
d.计算参数幅度相对值的对数,将其乘以一个比例系数,然后与上述a,b,c各种方法的得到的结果相比较,取其大者作为量化位宽;
e.按上述a,b,c,d各种方法得到量化位宽后,计算相应的量化误差所引起的梯度变化,若梯度变化量大于一个设计门限,则增加量化位宽,直至梯度变化量不大于设计门限为止。
6.如权利要求4所述的一种神经网络压缩方法,其特征在于,在步骤S3中对网络参数实现量化的方法包括均匀量化、非均匀量化或者聚类量化。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910087414 | 2019-01-29 | ||
CN2019100874145 | 2019-01-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110309904A CN110309904A (zh) | 2019-10-08 |
CN110309904B true CN110309904B (zh) | 2022-08-09 |
Family
ID=68075424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910429964.0A Expired - Fee Related CN110309904B (zh) | 2019-01-29 | 2019-05-22 | 一种神经网络压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110309904B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110992432B (zh) * | 2019-10-28 | 2021-07-09 | 北京大学 | 基于深度神经网络最小方差梯度量化压缩及图像处理方法 |
CN110852421B (zh) * | 2019-11-11 | 2023-01-17 | 北京百度网讯科技有限公司 | 模型生成方法和装置 |
CN115081588A (zh) * | 2022-05-30 | 2022-09-20 | 华为技术有限公司 | 一种神经网络参数量化方法和装置 |
CN117648964A (zh) * | 2022-08-30 | 2024-03-05 | 华为技术有限公司 | 模型压缩方法、装置以及相关设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9224089B2 (en) * | 2012-08-07 | 2015-12-29 | Qualcomm Incorporated | Method and apparatus for adaptive bit-allocation in neural systems |
US20160328645A1 (en) * | 2015-05-08 | 2016-11-10 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
US11321609B2 (en) * | 2016-10-19 | 2022-05-03 | Samsung Electronics Co., Ltd | Method and apparatus for neural network quantization |
CN106485316B (zh) * | 2016-10-31 | 2019-04-02 | 北京百度网讯科技有限公司 | 神经网络模型压缩方法以及装置 |
CN107480770B (zh) * | 2017-07-27 | 2020-07-28 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
CN107729986B (zh) * | 2017-09-19 | 2020-11-03 | 平安科技(深圳)有限公司 | 驾驶模型训练方法、驾驶人识别方法、装置、设备及介质 |
-
2019
- 2019-05-22 CN CN201910429964.0A patent/CN110309904B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN110309904A (zh) | 2019-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110309904B (zh) | 一种神经网络压缩方法 | |
Lee et al. | Lognet: Energy-efficient neural networks using logarithmic computation | |
Sung et al. | Resiliency of deep neural networks under quantization | |
CN108510067B (zh) | 基于工程化实现的卷积神经网络量化方法 | |
CN110222821B (zh) | 基于权重分布的卷积神经网络低位宽量化方法 | |
US10984308B2 (en) | Compression method for deep neural networks with load balance | |
CN109002889B (zh) | 自适应迭代式卷积神经网络模型压缩方法 | |
CN107967517A (zh) | 用于神经网络量化的方法和设备 | |
WO2020238237A1 (zh) | 一种基于幂指数量化的神经网络压缩方法 | |
EP3915056A1 (en) | Neural network activation compression with non-uniform mantissas | |
CN110992432B (zh) | 基于深度神经网络最小方差梯度量化压缩及图像处理方法 | |
CN112149797A (zh) | 神经网络结构优化方法和装置、电子设备 | |
Imani et al. | CANNA: Neural network acceleration using configurable approximation on GPGPU | |
CN111160524A (zh) | 一种两阶段的卷积神经网络模型压缩方法 | |
CN114341882A (zh) | 用于训练深度神经网络的无损指数和有损尾数权重压缩 | |
CN114970853A (zh) | 一种跨范围量化的卷积神经网络压缩方法 | |
Hao et al. | Multi-agent collaborative inference via dnn decoupling: Intermediate feature compression and edge learning | |
US11531884B2 (en) | Separate quantization method of forming combination of 4-bit and 8-bit data of neural network | |
CN101467459A (zh) | 受约束的矢量量化 | |
Rajagopal et al. | Accurate and efficient fixed point inference for deep neural networks | |
Chen et al. | DNN gradient lossless compression: Can GenNorm be the answer? | |
CN114154626B (zh) | 一种用于图像分类任务的滤波器剪枝方法 | |
CN115983320A (zh) | 一种基于深度强化学习的联邦学习模型参数量化方法 | |
CN113554097B (zh) | 模型量化方法、装置、电子设备和存储介质 | |
CN115392441A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220809 |