基于Tucker算法的深度卷积神经网络压缩方法与流程

文档序号:19072241发布日期:2019-11-08 20:48阅读:325来源:国知局
基于Tucker算法的深度卷积神经网络压缩方法与流程
本发明涉及深度神经网络
技术领域
,具体讲是基于tucker算法的深度卷积神经网络压缩方法。
背景技术
:近年来,以卷积神经网络为代表的深度学习技术在自然语言处理、自动驾驶、目标跟踪等领域取得了显著的成果。得益于信息时代中容易获得的数据集和计算性能不断提升的图像处理器(gpu),深度学习技术实现了超越传统计算机视觉技术的性能。为了能在现有数据中学习到更具泛化性的特征,卷积神经网络被设计得越来越复杂,网络的模型层数、参数数量、占用内存和硬盘储存等也随之增加。所以深度学习的实施难以离开高性能设备。另一方面,深度学习所具有的强大性能导致各个领域对实际部署神经网络的需求越来越大。例如移动互联网领域中将神经网络移植到手机、穿戴设备、嵌入式系统等低性能设备上。这些设备的计算性能和内存空间都远远不及高性能设备,导致卷积神经网络难以发挥出理论上的性能。所以卷积神经网络的实际部署需要一种高效的加速和压缩方法来降低计算和储存开销。在开发阶段,卷积神经网络经常被设计得过参数化,这样可以促进网络的训练能收敛到更合适的参数。但是在卷积神经网络训练完成后,大部分参数对最终结果的贡献都很小,所以存在冗余。另一方面,当一个执行复杂任务的卷积神经网络被微调到简单任务时,也会使大量参数失去原有作用。这些方面都表明卷积神经网络是一种计算效率较低的结构,所以在训练好的卷积神经网络中存在极大的可压缩的参数。卷积神经网络的压缩通常着眼于减少参数量和计算次数。目前常用的压缩方法有以下几种:逐层压缩:矩阵分解、张量分解、权值共享、稀疏连接等;模型整体压缩:知识蒸馏、模仿学习等;序列化:稀疏矩阵、霍夫曼编码等。其中的张量分解的使用量最多,因为它只需要卷积神经网络本身,而其他方法均需要数据集的支持。此外张量分解专门针对卷积神经网络的过参数化的特性,其基本思想是使用一系列低质子张量来近似原本的巨大的张量。这意味着张量分解可以很好的处理vgg模型(一种图像处理模型)这种明显过参数化的网络,特别是将其微调到简单任务的情况。目前已有的张量分解流程包括以下思路:迭代式tucker分解(一种高阶的主成分分析方法,它将一个张量表示成一个核心(core)张量沿每一个mode乘上一个矩阵):从卷积神经网络的底部输入层开始,逐层地使用tucker分解隐藏层。每次分解后都要微调网络整体参数。这种方法可以有效地压缩每一个隐藏层,但是将压缩方法变成了一种反复试错的操作,导致实际计算十分繁琐。并且在每次微调后,卷积神经网络整体的参数都发生了改变,这将影响后续层的分解效果。端对端式cp分解:首先使用cp分解所有隐藏层,然后只进行一次网络参数的微调。这种方法可以最大限度利用卷积神经网络本身的参数,不会被反复的微调所影响。实际运算中,cp分解会分解隐藏层的所有维度。而隐藏层的卷积核的部分典型尺寸为3×3,所以这个维度的分解难以压缩大量参数,并且计算量十分巨大。技术实现要素:本发明提供了一种基于tucker算法的深度卷积神经网络压缩方法,以实现更高的压缩倍数,以及提升压缩速度。本发明基于tucker算法的深度卷积神经网络压缩方法,包括:a.获得深度卷积神经网络模型,例如可以为alexnet、vgg或resnet等深度卷积神经网络模型;b.使用evbmf算法(经验变分贝叶斯矩阵分解,empiricalvariationalbayesmatrixfactorization)依次估计所述深度卷积神经网络模型中每一个隐藏层参数的分解秩;c.根据深度卷积神经网络模型中隐藏层的参数张量和对应的分解秩,通过tucker算法依次分解每一个参数张量,产生多个低秩子张量;d.通过所述的低秩子张量生成新的隐藏层,并将深度卷积神经网络模型中原有的隐藏层替换为所述新的隐藏层,生成新的深度卷积神经网络模型。本发明的方法是以端对端的思想处理整个卷积神经网络,从而避免了传统迭代式分解中卷积神经网络参数会改变的问题,同时利用了tucker算法可以处理特定维度的特性,避免了分解隐藏层的卷积核的问题。本发明的方法与现有的加速和压缩方法相比,能够有效地保留原始张量中的有效成分,去除噪声成分,所以在保持网络性能的情况下,网络的参数量具有更大的压缩倍数,因此最终能够获得更高的压缩倍数。具体的,步骤b包括:b1.依次遍历深度卷积神经网络模型的每一个卷积层,提取出每个卷积层的核参数k∈rd×d×s×t和偏置参数b∈rt,表示了核参数k是一个4维的张量,每一维的大小分别为d、d、s、t,其中r表示拓扑空间,d表示核维度,s表示输入维度,t表示输出维度,则对于输入张量x∈rh×w×s,则卷积层的输出张量y为:其中,输出张量y∈rh'×w'×t,h和w分别为输入张量x在空域中的长和宽,h'=h-d+1,w'=w-d+1,δ为一半的核维度,δ=(d-1)/2,i、j、s和t分别为计算时的中间变量,并且s∈s,t∈t,x和y分别为输出张量y的空间坐标的中间变量,并且x∈h',y∈w';通过x、y和t依次在[1,h']、[1,w']和[1,t]中循环,计算得到当前的输出张量y(x,y,t)。b2.所述核参数k按照输入维度s和输出维度t张开为矩阵k1∈r(d×d×t)×s和矩阵k2∈r(d×d×s)×t,通过evbmf算法估计矩阵k1和矩阵k2分别对应的分解秩r3和r4;b3.在全连接层中核参数k∈rs×t,输入张量x∈rs,则全连接层的输出张量y为:其中,输出张量y∈rs。具体的,步骤c中所述通过tucker算法依次分解每一个参数张量为:c1.通过(式3)依次分解每一个卷积层的核参数k:在通过(式3)生成的多个低秩子张量中,r3和r4分别为计算时的中间变量,r3和r4分别对应为所述矩阵k1和矩阵k2的分解秩,r3∈r3,r4∈r4,卷积层的核张量第一因子矩阵第二因子矩阵c2.将全连接层看作是核参数k∈rs×t的卷积层,通过tucker算法分解核参数k为:其中全连接层的核张量具体的,步骤d包括:d1.依次遍历深度卷积神经网络模型的每个卷积层,并结合(式1)和(式3),将原有的卷积层替换为(式5)至(式7)的3个新生成的卷积层的叠加:其中,中间结果z∈rh×w×t,中间结果z'∈rh'×w'×t,(式6)表示常规卷积,其卷积核参数取自tucker算法分解得到的所述卷积层的核张量c';(式5)和(式7)均表示卷积核为1×1的卷积运算,其卷积核参数取自tucker算法分解得到的第一因子矩阵u(3)和第二因子矩阵u(4);d2.将全连接层看作是核参数k∈rs×t的卷积层,结合(式2)和(式4),将原有的全连接层替换为(式8)和(式9)2个新生成的全连接层的叠加:其中,中间结果(式8)和(式7)的核参数取自tucker算法分解得到的低秩子张量c'u(3)和第二因子矩阵u(4);d3.所有卷积层和全连接层都被替换后,得到新的深度卷积神经网络模型。进一步的,步骤d之后再执行步骤e:使用深度卷积神经网络模型的原始训练数据对步骤d生成的新的深度卷积神经网络模型的参数进行微调。具体的,步骤e包括:e1.分别加载新的深度卷积神经网络模型和原始深度卷积神经网络模型的训练数据;e2.使用自适应动量估计(adaptivemomentestimation,adam)优化器以分类交叉熵为损失函数进行参数的优化;其中,分类交叉熵l的计算为:其中,m表示数据样本o的类别总数,c表示数据样本o的类别,y(o,c)表示数据样本o是否归为类别c,p(o,c)表示数据样本o归为类别c的预测概率。优选的,所述的深度卷积神经网络模型为至少包括一层卷积层和/或一层全连接层的神经模型。同时,还对本发明方法的实际复杂度进行了如下分析:原始深度卷积网络中的一层卷积层的参数量为d2st,对应d2stw’h’次乘-加运算。而分解后的三层小卷积层的参数量为sr3+d2r3r4+tr4,对应sr3hw+d2stw’h’+tr4w’h’次乘-加运算。同理,对于全连接层,一层全连接层的参数量为st,对应st次乘-加运算。而分解后的二层全连接层的参数量为sr3+tr4,对应sr3+tr4次乘-加运算。以上隐藏层的压缩率可以简化为st/r3r4。在evbmf算法估计出合适的r3和r4时,深度卷积网络的参数量和计算次数都能够得到大幅度的降低,因此能够显著的减低存储、内存开销和计算开销。综上所述,本发明基于tucker算法的深度卷积神经网络压缩方法,能够大幅度提高压缩倍数,并且有效减少了压缩时间和系统开销。以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。附图说明图1为本发明基于tucker算法的深度卷积神经网络压缩方法的流程图。图2为实施例采用的原始深度卷积神经网络模型结构示意图。图3为图2的深度卷积神经网络模型的一层隐藏层的张量的分解结果。图4为对图2的深度卷积神经网络模型的用低秩子张量重构隐藏层的示意图。具体实施方式如图1所示本发明基于tucker算法的深度卷积神经网络压缩方法,包括:a.获得深度卷积神经网络模型,所述的深度卷积神经网络模型可以为alexnet、vgg或resnet等深度卷积神经网络模型,本实施例中采用resnet深度卷积神经网络模型,如图2所示,在resnet深度卷积神经网络模型中包括有卷积层和全连接层。b.使用evbmf算法(经验变分贝叶斯矩阵分解,empiricalvariationalbayesmatrixfactorization)依次估计所述深度卷积神经网络模型中每一个隐藏层参数的分解秩,具体为:b1.依次遍历深度卷积神经网络模型的每一个卷积层,提取出每个卷积层的核参数k∈rd×d×s×t和偏置参数b∈rt,其中r表示拓扑空间,d表示核维度,s表示输入维度,t表示输出维度,则对于输入张量x∈rh×w×s,则卷积层的输出张量y为:其中,输出张量y∈rh'×w'×t,h和w分别为输入张量x在空域中的长和宽,h'=h-d+1,w'=w-d+1,δ为一半的核维度,δ=(d-1)/2,i、j、s和t分别为计算时的中间变量,并且s∈s,t∈t,x和y分别为输出张量y的空间坐标的中间变量,并且x∈h',y∈w';通过x、y和t依次在[1,h']、[1,w']和[1,t]中循环,计算得到当前的输出张量y(x,y,t)。b2.所述核参数k按照输入维度s和输出维度t张开为矩阵k1∈r(d×d×t)×s和矩阵k2∈r(d×d×s)×t,通过evbmf算法估计矩阵k1和矩阵k2分别对应的分解秩r3和r4;b3.在全连接层中核参数k∈rs×t,输入张量x∈rs,则全连接层的输出张量y为:其中,输出张量y∈rs。c.根据深度卷积神经网络模型中隐藏层的参数张量和对应的分解秩,通过tucker算法依次分解每一个参数张量,产生多个低秩子张量:c1.通过(式3)依次分解每一个卷积层的核参数k,分解的示意如图3所示:在通过(式3)生成的多个低秩子张量中,r3和r4分别为计算时的中间变量,r3和r4分别对应为所述矩阵k1和矩阵k2的分解秩,r3∈r3,r4∈r4,卷积层的核张量第一因子矩阵第二因子矩阵c2.将全连接层看作是核参数k∈rs×t的卷积层,通过tucker算法分解核参数k为:其中全连接层的核张量d.通过所述的低秩子张量生成新的隐藏层,并将深度卷积神经网络模型中原有的隐藏层替换为所述新的隐藏层,生成新的深度卷积神经网络模型,具体为:d1.依次遍历深度卷积神经网络模型的每个卷积层,并结合(式1)和(式3),将原有的卷积层替换为(式5)至(式7)的3个新生成的卷积层的叠加,如图4所示:其中,中间结果z∈rh×w×t,中间结果z'∈rh'×w'×t,(式6)表示常规卷积,其卷积核参数取自tucker算法分解得到的所述卷积层的核张量c';(式5)和(式7)均表示卷积核为1×1的卷积运算,其卷积核参数取自tucker算法分解得到的第一因子矩阵u(3)和第二因子矩阵u(4);d2.将全连接层看作是核参数k∈rs×t的卷积层,结合(式2)和(式4),将原有的全连接层替换为(式8)和(式9)2个新生成的全连接层的叠加:其中,中间结果(式8)和(式7)的核参数取自tucker算法分解得到的低秩子张量c'u(3)和第二因子矩阵u(4);d3.所有卷积层和全连接层都被替换后,得到新的深度卷积神经网络模型。e.使用深度卷积神经网络模型的原始训练数据对步骤d生成的新的深度卷积神经网络模型的参数进行微调:e1.分别加载新的深度卷积神经网络模型和原始深度卷积神经网络模型的训练数据;e2.使用自适应动量估计(adaptivemomentestimation,adam)优化器以分类交叉熵l为损失函数进行参数的优化;其中,分类交叉熵的计算为:其中,m表示数据样本o的类别总数,c表示数据样本o的类别,y(o,c)表示数据样本o是否归为类别c,p(o,c)表示数据样本o归为类别c的预测概率。通过使用tucker算法将所有隐藏层的张量参数分解为多个低秩子张量的叠加,用参数较少的低秩子张量来逼近原始张量,从而实现了深度卷积网络的加速和压缩。并且通过端对端的思想来处理整个卷积神经网络,从而避免了现有迭代式分解中卷积神经网络参数会改变的问题,同时还利用了tucker算法可以处理特定维度的特性,避免了分解隐藏层的卷积核的问题,能够有效地保留原始张量中的有效成分,去除噪声成分,所以在保持网络性能的情况下,网络的参数量有更大的压缩倍数,能够最终获得更高的压缩倍数。以下验证本发明方法的网络性能和压缩率。从复杂的imagenet竞赛的1000类图像分类任务迁移到简单的白内障的2分类图像分类任务,存在双重过参数化的问题。具体测试了spph_cataracts数据集。spph_cataracts数据集是一个包含5473个眼科白内障病患样本的数据集,该数据集可以被应用于检测机器学习算法的性能。表1:网络模型参数量/兆运行时间/毫秒分类精度(%)压缩率原始网络23207895.51本发明5176195.34.6通过表1可知,经过本发明的方法进行处理后,新的resnet深度卷积神经网络的参数量压缩到5兆字节,运行时间减到1761毫秒,而分类精度仅值下降了0.2%。以上结果都表明,本发明的方法能够在保持深度卷积神经网络性能的情况下,实现网络的高效加速和压缩。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1