一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

深度卷积神经网络压缩方法、计算机装置及存储介质

2022-05-18 04:51:07 来源:中国专利 TAG:


1.本发明涉及深度卷积神经网络压缩领域,特别是一种深度卷积神经网络压缩方法、计算机装置及存储介质。


背景技术:

2.在gpu计算能力不断提高和海量数据的推动下,深度学习最近在计算机视觉、自然语言处理和语音识别等方面取得了巨大成就。在神经网络的历史中
1.,网络往往具有更多的层和更多的权重。虽然更深的神经网络可能会取得更好的结果,但存储和计算的开销仍然是一个很大的挑战。相关研究发现,基于卷积神经网络的深度模型本身存在参数冗余,模型中存在对最终结果无用的参数,这为深度网络模型压缩提供了理论支持。因此,如何在保证模型精度条件下降低模型大小已经成为热点问题。
3.从利用神经网络模型解决问题的发展过程来看,研究者常常倾向于设计更为复杂的卷积神经网络(cnn)收集更多的数据以期获得更好的效果。但随着模型的复杂度增加,模型参数越来越多,模型规模和需要计算的浮点数也越来越大,这对硬件资源(如内存、cpu)产生了更高的要求,不利于模型在存储空间、续航受限的设备上部署使用。重新训练模型参数少,计算精度高的模型,不仅需要大量人力,而且很难成功。针对神经网络模型的特点,对神经网络模型进行压缩,剔除冗余信息,是解决上述问题的一类方法。
4.卷积神经网络是一种特殊的深层的神经网络模型,主要由卷积层(convolutional layer)和全连接层(full connection layer)组成。卷积层常作为特征提取模块,全连接层作为分类器模块。作为深度学习神经网络中重要的特征提取单元,卷积层具有局部感知,参数共享的特点。卷积权重可以表示为4维的张量:w∈rc×
x
×y×f,其中c是输入数据的通道数目,x和y是每个卷积核的空间维度大小。全连接层在整个卷积神经网络中作为分类器,将学到的“分布式特征表示”映射到样本标记空间。全连接权重可以表示为2维的张量:w∈r
x
×y,x是输入向量的维度,y是输出向量的维度。
5.目前,深度神经网络模型压缩和加速已经有很多研究。最广泛使用的技术之一是低秩近似。自denil等人研究减少cnn模型冗余方面的工作
4.以来,已经提出了许多基于低秩的方法
[2]、[3]
。在这些研究中,zhang等人的工作
[5]
在vgg-16模型上实现了3.8倍的加速。基于低秩张量分解的方法也被提出。lebedev等人
[6]
利用cp分解来近似4d卷积核张量,但他们只处理了alexnet模型中的一层。kim等人
[7]
提出使用tucker分解来降低cnn模型的计算复杂度。网络修剪
[8]、[9]
是另一种广泛使用的cnn压缩和加速技术。这些方法的主要思想是删除低显著性参数或小权重连接
[8]
。这些方法实现了显著的理论加速比,但由此产生的非结构化稀疏连接不能很好地适应并行计算。除了上述方法之外,还提出了许多其他方法。wu等人[10]提出将乘积量化同时用于cnn压缩和加速。文献[11]中还研究了基于fft的方法。
[0006]
[1]zhisheng zhong,fangyin wei,zhouchen lin,and chao zhang.ada-tucker:compressing deep neural networks via adaptive dimension adjustment tucker decomposition.neural networks,110:104

115,2019.
[0007]
[2]emily l denton,wojciech zaremba,joan bruna,yann lecun,and rob fergus.exploiting linear structure within convolutional networks for efficient evaluation.in advances in neural information processing systems,pages 1269

1277,2014.
[0008]
[3]max jaderberg,andrea vedaldi,and andrew zisserman.speeding up convolutional neural networks with low rank expansions.arxiv preprint arxiv:1405.3866,2014.
[0009]
[4]misha denil,babak shakibi,laurent dinh,marc’aurelio ranzato,and nando de freitas.predicting parameters in deep learning.arxiv preprint arxiv:1306.0543,2013.
[0010]
[5]xiangyu zhang,jianhua zou,kaiming he,and jian sun.accelerating very deep convolutional networks for classification and detection.ieee transactions on pattern analysis and machine intelligence,38(10):1943

1955,2015.
[0011]
[6]vadim lebedev,yaroslav ganin,maksim rakhuba,ivan oseledets,and victor lempitsky.speeding-up convolutional neural networks using fine-tuned cp-decomposition.arxiv preprint arxiv:1412.6553,2014.
[0012]
[7]yong-deok kim,eunhyeok park,sungjoo yoo,taelim choi,lu yang,and dongjun shin.compression of deep convolutional neural networks for fast and low power mobile applications.arxiv preprint arxiv:1511.06530,2015.
[0013]
[8]song han,jeff pool,john tran,and william j dally.learning both weights and connections for efficient neural networks.arxiv preprint arxiv:1506.02626,2015.
[0014]
[9]baoyuan liu,min wang,hassan foroosh,marshall tappen,and marianna pensky.sparse convolutional neural networks.in proceedings of the ieee conference on computer vision and pattern recognition,pages 806

814,2015.
[0015]
[10]jiaxiang wu,cong leng,yuhang wang,qinghao hu,and jian cheng.quantized convolutional neural networks for mobile devices.in proceedings of the ieee conference on computer vision and pattern recognition,pages 4820

4828,2016.
[0016]
[11]michael mathieu,mikael henaff,and yann lecun.fast training of convolutional networks through ffts.arxiv preprint arxiv:1312.5851,2013.
[0017]
现有技术存在以下不足:
[0018]
(1)压缩率还有提升空间。现有技术(例如cn110428045a)在卷积操作过程中采用普通的tucker分解方法,直接将原始卷积层替换为经tucker分解后得到的3个新卷积层的叠加,不能进一步利用相邻卷积操作间的相关性,因此压缩率还有一定的提升空间;
[0019]
(2)不能根据特定需求进行灵活压缩。现有技术所采用的压缩方案是对深度神经网络模型中的所有层进行整体压缩。但针对特定需求,可能只需要压缩几层卷积层或者需要根据每一层的压缩率来选择需要压缩的卷积层,显然,现有技术的方案无法满足这些特
定需求。


技术实现要素:

[0020]
本发明所要解决的技术问题是,针对现有技术不足,提供一种深度卷积神经网络压缩方法、计算机装置及存储介质,克服现有技术压缩率低、不能实现灵活压缩的缺陷,实现对深度卷积神经网络模型进行高压缩率、低精度损失、灵活的压缩。
[0021]
为解决上述技术问题,本发明所采用的技术方案是:一种深度卷积神经网络压缩方法,包括以下步骤:
[0022]
s1、依次估计深度卷积神经网络每一个卷积层的分解秩;
[0023]
s2、根据每一个卷积层的核权重张量和对应的分解秩,通过tucker分解依次分解每一个核权重张量,产生多个核心张量和多组因子矩阵;
[0024]
s3、在两个相邻的卷积层之间共享步骤s2得到的因子矩阵,保留各自独立的核心张量,利用所述因子矩阵和核心张量更新对应的卷积层参数,得到新的卷积层,利用新的卷积层替代所述深度卷积神经网络中的卷积层,得到压缩后的深度卷积神经网络模型。
[0025]
在tucker分解中,一个核权重张量被分解为一个核心张量和一组因子矩阵。核心张量捕获潜在因子之间的多变量相互作用,并且因子矩阵可以被视为生成潜在空间的基础。基于此属性,本发明跨两层共享因子矩阵以学习潜在表示,并为这些张量保留独立的核心张量以捕获共享潜在因子的缩放。随着输入数据连续通过网络中的每一层,发现在不同层之间的权重存在一定的对应关系和不变性。具体来说,权重张量保留了两种信息,即第一种信息试图构造一些变换来提取全局特征(在不同的层和不同的尺度上对相同的对象进行编码),第二种信息试图构造一些变换来提取不同层和不同尺度的局部特定特征。该猜想表明,核心张量和跨层因子矩阵之间可能存在共享信息。本发明假设层不变信息位于因子矩阵中,而因子矩阵负责特定层的映射。因此,本发明每两个卷积操作(卷积层)之间共享一组因子矩阵,以实现更高的压缩率。在卷积过程中,通过引入一组共享因子矩阵,多个权重张量只需求解因子矩阵一次,压缩率高。同时,由于使用了一组共享因子矩阵,分解每一层卷积层得到的核心张量保留了属于该层的独立信息,而一组共享因子矩阵保留了它们的共同信息,因此压缩精度损失少,压缩灵活。
[0026]
步骤s1中,使用vbmf(变分贝叶斯矩阵分解)算法依次估计深度卷积神经网络每一个卷积层的分解秩,以控制性能(例如存储性能、估计速度)提升和准确率损失之间的平衡。
[0027]
步骤s3中,在两个相邻的卷积层之间共享步骤s2得到的因子矩阵,保留各自独立的核心张量,利用所述因子矩阵和核心张量更新对应的卷积层参数的具体实现过程包括:对两个相邻卷积层的核权重张量进行缩并操作,获取两个相邻卷积层核权重张量中属性相同、维度相同的因子矩阵,得到共享因子矩阵;
[0028]
保留核权重张量中的核心张量,将所述核心张量与所述共享因子矩阵进行卷积操作,得到更新后的核权重张量,即得到新的卷积层。
[0029]
本发明可以选择性地用于特定层以实现有针对性的和更深的压缩,并更好地权衡压缩精度和参数数量,弥补了现有技术中只能对深度卷积神经网络的所有层进行整体压缩的缺陷。
[0030]
本发明方法还包括:
[0031]
s4、使用自适应动量估计(adaptive moment estimation,adam)优化器,以分类交叉熵为损失函数,优化压缩后的深度卷积神经网络模型的参数。
[0032]
一般而言,神经网络压缩后的评判标准是精度不会有大幅降低,但随着模型的参数量大幅度减少,压缩模型的精度会急剧下降,本发明通过上述参数优化方案,通过微调的方法来恢复模型精度,与现有技术相比,在精度提升的前提下,本发明实现了3倍以上的压缩率,计算时间也有明显减少。
[0033]
本发明还提供了一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序;所述处理器执行所述计算机程序,以实现本发明方法的步骤。
[0034]
本发明还提供了一种计算机程序产品,包括计算机程序/指令;该计算机程序/指令被处理器执行时实现本发明方法的步骤。
[0035]
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序/指令;所述计算机程序/指令被处理器执行时实现本发明方法的步骤。
[0036]
与现有技术相比,本发明所具有的有益效果为:
[0037]
1、与现有技术相比,本发明通过共享一组因子矩阵,能够进一步压缩深度卷积神经网络模型中的冗余参数,极大地减少了计算时间,极大地提高了深度卷积神经网络的压缩率;
[0038]
2、本发明可以选择性地用于特定层以实现有针对性的和更深的压缩,克服了现有技术中只能对深度卷积神经网络的所有层进行整体压缩的缺陷;
[0039]
3、本发明在精度提升的前提下,还实现了3倍以上的压缩率,计算时间也有明显减少。
[0040]
综上所述,本发明的压缩方法能够大幅度提高压缩倍数,实现更有针对性的灵活压缩,并且有效减少了存储和计算开销。
附图说明
[0041]
图1为本发明实施例提供的基于共享因子矩阵tucker分解的深度卷积神经网络压缩方法的流程示意图;
[0042]
图2为本发明实施例中对张量数据进行tucker分解的示意图;
[0043]
图3为本发明实施例中在两个相邻的卷积操作之间共享因子矩阵的示意图;
[0044]
图4为实验中分类精度和模型参数数量随压缩的卷积层数变化的曲线;
[0045]
图5为实验中不同方法在不同压缩率下的测试精度变化曲线。
具体实施方式
[0046]
本发明实施例提供了一种基于共享因子矩阵tucker分解的深度卷积神经网络压缩方法,如图1所示,包括以下步骤:
[0047]
步骤1,深度卷积神经网络模型中,输入数据一般采用张量数据,即多维数组,通常用3维数组表示张量数据。通过分析卷积操作中多组输入数据不同维度之间的相关性,卷积操作可以表示为如下所示:
[0048]
[0049]
其中,k
i,j,s,t
是大小为d
×d×s×
t的4阶核权重张量,其中d是空间维度,s是输入通道数,t是输出通道数,使用线性映射将大小为h
×w×
s的输入张量x
h,w,s
映射为大小为h'
×
w'
×
t的输出张量y
h',w',t

[0050]
步骤2,变分贝叶斯矩阵分解(vbmf)是用来确定tucker分解的rank-(r3,r4)的方法。采用vbmf算法得到的rank-(r3,r4)是非常重要的超参数,用于控制性能(存储、速度)提升和准确率损失之间的平衡。通过将vbmf分别应用于核张量k的模3矩阵化(大小为s
×
td2)和模4矩阵化(大小为t
×
d2s)来确定秩r3和r4。
[0051]
步骤3,根据卷积过程中产生的核权重张量和对应的分解秩,通过tucker分解依次分解每一个核权重张量,产生多个低秩子张量和多组因子矩阵,如图2所示,tucker分解将核权重张量k分解为核心张量c'和因子矩阵u
(3)
和u
(4)
,包括以下子步骤:
[0052]
步骤31:tucker分解将一个核权重张量分解为一个较小的核心张量和一组矩阵。4阶核权重张量k的秩-(r1,r2,r3,r4)的tucker分解具有以下形式:
[0053][0054]
通过对k
i,j,s,t
执行tucker分解,得到1个核心张量和4个因子矩阵和4个因子矩阵将一个原始卷积转换为四个较小的卷积,其中是大小为r1×
r2×
r3×
r4的核心张量,分别是大小为d
×
r1、d
×
r2、s
×
r3和t
×
r4的第(1),(2),(3),(4)个因子矩阵;
[0055]
步骤32:对于步骤31中的核权重张量k
i,j,s,t
,在tucker分解中,不必分解其每个模。因为根据tucker-2分解的定义,与空间维度相关的模1和模2已经非常小(d通常为3或5),所以不必对它们进行分解,表示为以下形式:
[0056][0057]
其中是大小为d
×d×
r3×
r4的核心张量,分别是大小为s
×
r3和t
×
r4的第(3),(4)个因子矩阵;
[0058]
将式(3)代入式(1)中,得到以下三个连续表达式:
[0059][0060][0061][0062]
和分别是大小为h
×w×
r3和h'
×
w'
×
r4的中间张量,y'
h',w',t
是大小为h'
×
w'
×
t的输出张量。
[0063]
步骤4,在两个相邻的卷积操作之间共享核权重张量经tucker分解后得到的因子
矩阵,保留各自独立的子张量。包括以下子步骤:
[0064]
步骤41:对核权重张量执行tucker分解后,得到一个核心张量和一组因子矩阵;
[0065]
步骤42:基于步骤41得到的一个核心张量和一组因子矩阵,假设层不变信息位于因子矩阵中,而因子矩阵负责特定层的映射,根据张量缩并(tensor contraction)的定义,可以共享这一组因子矩阵。以和两个核权重张量为例,具体操作如下
[0066]
1.基于tucker分解,将w1和w2分解为如下形式:
[0067][0068][0069]
其中,和分别是得到的核心张量,和是得到的两组因子矩阵;
[0070]
2.张量缩并的定义为:假设有两个张量,一个n阶张量一个n阶张量那么缩并之后,就可以得到一个n n-2*2阶张量。下降的2阶,就是找出张量a和张量b的两个尺寸一样的维度,对这两个维度进行内积运算,从而缩掉两阶。因此,通过对w1和w2执行张量缩并操作,假设第3和第4两个维度有相同的尺寸,分别对应和进而执行缩并操作,得到一个4阶张量,缩掉了w1对应的矩阵和w2对应的矩阵因此,w1剩余的矩阵和w2剩余的矩阵可以作为一组共享因子矩阵,表示为这样在卷积过程中,通过一组共享因子矩阵,多个权重张量只需求解因子矩阵一次,从而实现更高的压缩率。
[0071]
步骤43:根据在步骤42中得到的一组共享因子矩阵多个权重张量在卷积操作中只需求解因子矩阵一次。同时,由于使用了一组共享因子矩阵,分解每一层卷积层得到的核心张量保留了属于该层的独立信息,而一组共享因子矩阵保留了它们的共同信息。因此,基于tucker-2分解的定义,得到如下表示形式:
[0072][0073][0074][0075]
其中,u3和u4代表一组共享的因子矩阵,和分别是大小为h
×w×
r3和h'
×
w'
×
r4的中间张量,y'
h',w',t
是大小为h'
×
w'
×
t的输出张量。如图3所示,为基于共享因子矩阵tucker分解的深度卷积神经网络压缩模型,其中w1和w2是两个核权重张量,对它们执
行tucker分解后,得到两个核心张量c1、c2和两组因子矩阵和将c1和c2分别与得到的一组共享因子矩阵进行卷积操作,从而实现基于共享因子矩阵tucker分解的深度卷积神经网络压缩方法。
[0076]
在基于共享因子矩阵tucker分解的深度卷积神经网络压缩模型中,假设卷积神经网络模型有n层卷积层,压缩比m'和加速比e'公式如下表示:
[0077][0078][0079]
其中,m'代表压缩比,e'代表加速比,d代表空间维度,s和t分别代表输入和输出通道数,r3、r4分别代表卷积操作中的两个维度,h、w分别代表中间结果的两个维度,h'、w'分别代表中间结果的两个维度。代表卷积运算需要的参数数量,代表需要的乘加运算数量。
[0080]
步骤5,由于在网络压缩后准确率显著下降,因此使用自适应动量估计(adaptive moment estimation,adam)优化器以分类交叉熵为损失函数进行参数的优化,将基础学习率r=10-3
设置为每5个epoch降低10倍,同时为simpnet设批处理大小为128。其中分类交叉熵l的计算为:
[0081][0082]
其中,m表示数据样本o的类别总数,c表示数据样本o的类别,y
(o,c)
表示数据样本o是否归为类别c,p
(o,c)
表示数据样本o归为类别c的预测概率。以此来对步骤4中得到的模型进行微调来恢复准确性,准确率在一个时期内迅速恢复,从而恢复累积的精度损失。
[0083]
本发明基于共享因子矩阵tucker分解的深度卷积神经网络压缩方法,提出了一种共享因子矩阵tucker分解模型,能够大幅度提高压缩倍数,实现更有针对性的灵活压缩,并且有效减少了存储和计算开销。与现有技术相比,本发明通过共享一组因子矩阵,能够进一步压缩深度卷积神经网络模型中的冗余参数,减少计算时间,实现比现有技术更高的压缩率。同时,本发明所提出的模型可以选择性地用于特定层以实现有针对性的和更深的压缩,并提供一种系统的方法来探索精度和参数数量之间的更好权衡,很好的弥补了现有技术中只能对深度卷积神经网络的所有层进行整体压缩的缺陷。
[0084]
通过实验数据进行了验证,实验结果解释如下:
[0085]
图4为实验中本发明提出的压缩方法对比现有原始tucker分解方法得到的分类精度和模型参数数量随压缩的卷积层变化的示意图,其中,黑色带圆圈实线表示测试精度的变化曲线,黑色带叉号虚线表示参数数量的变化曲线,横坐标为压缩层数量。可以看到,随着压缩层数的增加,模型的参数数量在不断下降。
[0086]
图5为实验中本发明提出的压缩方法对比现有原始tucker分解方法得到的精度随压缩率变化的示意图,其中,黑色带圆圈实线表示本方案提出的压缩方法测试精度的变化曲线,黑色带叉号虚线表示原始tucker分解方法测试精度的变化曲线,横坐标为压缩率。可以看到,随着压缩率的增大,本发明的测试精度要优于现有方法。
[0087]
表1为实验中本发明提出的压缩方法对比现有原始tucker分解方法和cp分解方法压缩simpnet模型得到的性能和压缩前后参数数量的示意图。其中,original表示未压缩的模型,cp代表cp分解得到的压缩模型,tucker-2代表原始tucker分解得到的压缩模型,ours代表本方案提出的压缩模型,testing accuracy代表测试精度,overall parameters代表模型参数数量,compression ratio代表压缩率。cp分解是将张量分解为一系列的秩一张量之和,cp分解可以看作是矩阵svd分解的高阶扩展。tucker分解是将张量分解为核心张量与因子矩阵,tucker分解可以看作是主成成分分析(pca)的高阶形式。可以看到,测试精度、模型参数数量和压缩率这三项指标,本发明的实验结果均是最优的。
[0088]
表2为实验中本发明提出的压缩方法对比现有原始tucker分解方法和cp分解方法压缩simpnet模型得到的压缩率的示意图,括号内为与未压缩模型相比得到的压缩倍数。其中,layers表示压缩的卷积层编号,original表示未压缩的模型,cp代表cp分解得到的压缩模型,tucker-2代表原始tucker分解得到的压缩模型,ours代表本方案提出的压缩模型,testing accuracy代表测试精度,overall parameters代表模型参数数量,compression ratio代表压缩率。逐层分析,本发明方法所获得的压缩率均优于现有方法。
[0089]
表3为实验中本发明提出的压缩方法对比现有原始tucker分解方法和cp分解方法压缩simpnet模型得到的计算时间的示意图,括号内为与未压缩模型相比得到的计算时间倍数。逐层分析,本发明方法所获得的计算时间均优于现有方法。
[0090]
将本发明的方法与tucker分解进行对比,主要评价指标是压缩率和计算时间,经过实验得到,本发明的方案能达到3倍以上的压缩率,计算时间也有明显降低。
[0091]
表1压缩simpnet模型的对比结果
[0092][0093]
表2压缩simpnet模型的逐层对比结果(压缩率)
[0094][0095]
表3压缩simpnet模型的逐层对比结果(计算时间)
[0096][0097]
本发明基于共享因子矩阵tucker分解的深度卷积神经网络压缩方法在保持网络性能基本不变的情况下,与现有技术相比,在提高模型压缩率和减少计算时间方面具有显著优势。同时,克服了现有技术只能对模型的所有层进行整体压缩的缺点,本发明能够选择性地用于特定层以实现有针对性的和更深的压缩。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献