一种基于深度神经网络模型压缩和加速方法与流程

文档序号:17162855发布日期:2019-03-20 01:00阅读:276来源:国知局
一种基于深度神经网络模型压缩和加速方法与流程

本发明涉及神经网络技术领域,尤其涉及一种基于深度神经网络模型压缩和加速方法。



背景技术:

计算机视觉中应用各种深度学习神经网络模型,卷积神经网络(cnn)已经在多种不同应用中取得了显著的成功,这些模型依赖于具有数百甚至数十亿参数的深度网络,cpu对如此庞大的网络无法运行及快速训练,只是依赖高计算能力的gpu才能让网络运行及快速训练。这样出色的表现也伴随着显著的计算成本——如果没有高效的图形处理器(gpu)的支持,将这些cnn部署到实时应用中会非常困难。与云相比,移动系统受计算资源限制。然而众所周知,深度学习模型需要大量资源。为使设备端深度学习成为可能,应用程序开发者常用的技术之一是压缩深度学习模型以降低其资源需求,但准确率会有所损失。尽管该技术非常受欢迎。

在人们生活中的移动端,如何让深度模型在移动设备上运行实时性,也是模型压缩加速的一大重要目标。krizhevsky在2014年的文章中,提出了两点观察结论:卷积层占据了大约90-95%的计算时间和参数规模,有较大的值;全连接层占据了大约5-10%的计算时间,95%的参数规模,并且值较小。这为后来的研究深度模型的压缩与加速提供了统计依据。一个典型的例子是具有50个卷积层的resnet-50需要超过95mb的存储器以及38亿次浮点运算。在丢弃了一些冗余的权重后,网络仍照常工作,但节省了超过75%的参数和50%的计算时间。当然,网络模型的压缩和加速的最终实现需要多学科的联合解决方案,除了压缩算法,数据结构、计算机体系结构和硬件设计等也起到了很大作用。

中国专利申请号为201711282087.6,申请日:2017年12月07日,公开日:2018年04月20日,专利名称是:神经网络压缩和加速的方法、存储设备和终端,该发明提供一种神经网络压缩和加速的方法、存储设备和终端,该方法包括步骤:对原始神经网络进行剪枝;对剪枝后的原始神经网络的网络权值进行聚类量化,并对聚类量化后的原始神经网络进行训练,得到目标神经网络;采用稀疏矩阵存储所述目标神经网络;将输入特征图转换成输入矩阵;将所述稀疏矩阵与所述输入矩阵相乘,获得所述输入特征图对应的输出特征图。该实施例降低了神经网络计算资源和存储空间,从而减少了计算成本。

上述专利文献虽然公开了一种神经网络压缩和加速的方法,该专利文献并没有解决通过剪枝后的神经网络,降低神经网络的准确度损失,保证神经网络基本不损失算法精度的前提下可将神经网络模型的计算量和规模压缩数倍的难题。



技术实现要素:

有鉴于此,本发明在于提供一种通过剪枝后的神经网络,降低神经网络的准确度损失,保证神经网络基本不损失算法精度的前提下可将神经网络模型的计算量和规模压缩数倍的一种基于深度神经网络模型压缩和加速方法。

为了实现本发明目的,可以采取以下技术方案:

一种基于深度神经网络模型压缩和加速方法,包括如下步骤:

步骤1)初始化一个预训练的卷积网络;

步骤2)给所有过滤器施加一个全局掩模并使之等于1;

步骤3)迭代式地调整稀疏网络并且更新过滤器显著性。

所述步骤2)包括:

步骤1)判断对应过滤器是否被剪枝;

步骤2)如果对应过滤器没有剪枝,则,以全局的方式剪枝所述卷积网络所有层上不显著性权重的过滤器,等价于将不显著权重的过滤器的掩模设为0。

所述步骤2)决定所述过滤器显著性权重包括通过全局函数来判定;该全局函数是当所述卷积网络作为一种将输入图像映射成某个输出向量的前馈式多层架构;在该卷积网络中,将该卷积层第l层中的图像特征图集合表示为:

该卷积层第l层中的图像特征图集合大小为h_l×w_l,各个特征图为c_l;所述特征图是网络z_0的输入,或者是输出特征图z_l,其中l∈[1,2,...,l]。

所述各个特征图表示为:

其中k∈[1,2,...,c_l];所述第l个卷积层的各个输出特征图是通过将卷积算子()应用到一组输入特征图上获得的,这些特征图的过滤器参数化为:

即:

其中f(*)是一个非线性激活函数

所述过滤器的形状包括一种矩阵乘矩阵的乘法,该矩阵乘矩阵的乘法包括:

其中,矩阵

的每一行都与输出张量的空间位置有关,所述输出张量是通过基于输入张量:

的变换而得到的,并且矩阵:是根据过滤器w_l重新调整了形状。

所述步骤3)迭代式地调整稀疏网络并且更新过滤器显著性包括通过全局掩模的方式实现的,该全局掩模的方式通过下列公式来实现:

其中:是一个二元值的掩模;

如果第k个过滤器是显著的,则:为1;否则就为0。⊙表示khatri-rao积算子。

以一种二值化xnor的方式剪枝过滤器在实践中不够灵活且效果很差,这会给神经网络表现水平带来严重损失。注意,因为过滤器之间存在复杂的互连,所以过滤器显著性可以会在剪枝了特定的层后发生很大的变化。因此,动态剪枝也就是一种全局角度实现被掩蔽的过滤器的回滚,在提升剪枝后网络的可判别性方面有很高的需求。

为了更好地描述新提出的剪枝过滤器和加速的目标函数,我们将整个网络的过滤器表示为:

并将全局掩模表示为:

然后给出一个训练样本集:

d={χ={x1,x2,…,xn},y={y1,y2,…,yn}}

其中x_i和y_i分别表示输入和目标输出;求解的是以下优化问题:

其中l(·)是被剪枝网络的损失函数;g(x;w*,m)的输入为x;具有过滤器w*和全局掩模m,并使用它们将输入映射成一个s维的输出;h(·)是用于决定过滤器的显著性值的全局判别函数,这取决于w*的预先知识;函数h(·)的输出是二元的,即如果对应的过滤器是显著的,则输出1,否则输出0;

(4)式是gdp框架的核心函数,是非凸的,该β∈(0,1]是一个决定被剪枝网络的稀疏度的阈值;因为有:

||·||0

算子;然后,通过使用随机梯度下降而贪婪且交替地更新w*和m,可以对其进行求解。

本发明的有益效果是:1)本发明提出一种深度全局和动态过滤器剪枝的深度模型压缩和加速方法,可剪枝冗余的过滤器,从而实现卷积神经网络(cnn)加速;2)本发明还提出了一种基于每个过滤器的预先知识的全局判别函数,让成了首个在所有层上全局地剪枝不显著过滤器的方法;另外,本发明还能在整个剪枝后的稀疏网络上动态地更新过滤器的显著性,然后恢复被错误剪枝的过滤器,之后再通过一个再训练阶段来提升模型准确度;3)本发明通过使用贪婪的交替更新的随机梯度下降而有效地解决了新提出的方法对应的非凸优化问题;通过进行了大量实验,结果表明,相比于之前最佳的过滤器剪枝方法,本发明提出的方法在ilsvrc2012基准的多种前沿卷积神经网络(cnn)的加速上表现更优。

附图说明

图1为本发明实施例一种基于深度神经网络模型压缩和加速方法流程步骤图;

图2为本发明实施例一种基于深度神经网络模型压缩和加速方法的全局和动态剪枝和加速方法的流程图;

图3为本发明实施例一种基于深度神经网络模型压缩和加速方法的实现全局和动态剪枝和加速方法的过程示意图;

图4为本发明实施例一种基于深度神经网络模型压缩和加速方法的实验结果图;

图5为本发明实施例一种基于深度神经网络模型压缩和加速方法另一实验结果图;

图6为本发明实施例一种基于深度神经网络模型压缩和加速方法的不同过滤器选择方案比较图;

图7为本发明实施例一种基于深度神经网络模型压缩和加速方法的加速vgg-16的结果表示图;

图8为本发明实施例一种基于深度神经网络模型压缩和加速方法的使用gdp方案剪枝vgg-16时采用不同β值的结果比较图;

图9为本发明实施例一种基于深度神经网络模型压缩和加速方法的加速resnet-50的结果图;

图10本发明实施例一种基于深度神经网络模型压缩和加速方法的在vgg-16的第一层上动态地更新过滤器、掩模和输出特征图。

具体实施方式

下面结合附图及本发明的实施例对发明作进一步详细的说明。

一般全局和动态剪枝和加速方法(dgp)的模型通常存在大量的信息冗余,从模型的参数数量到参数的表示精度都存在缩减的空间。依托世界领先的神经网络模型压缩领域研究成果,可以剪枝掉冗余的过滤器来解决上述两个问题,这能很大程度地加速剪枝后的网络,同时还能降低网络的准确度损失,保证基本不损失算法精度的前提下可将网络模型的计算量和规模压缩数倍。

本发明是在所有网络层上全局地评估各个过滤器的权重,然后根据评估结果作动态地和迭代地剪枝和调整网络,并且重新调用在之前的迭代中被错误剪枝的过滤器的方法。

本发明首先初始化一个预训练的卷积网络,然后给所有过滤器施加一个全局掩模并使之等于1,也就是说该卷积网络中对应过滤器是否被剪枝的作一次判断;然后,通过全局判别函数来决定各个过滤器的显著性权重;

当条件判断不满足,以全局的方式剪枝所有层上不显著权重的过滤器,等价于将不显著权重的过滤器的掩模设为0。最后,通过迭代式地调整这个稀疏网络并且以一种自上而下的方式动态地更新过滤器显著性。

通过这样的操作,之前被掩蔽的过滤器还有重新被调用的可能,这能显著提升被剪枝后网络的准确度。在优化方面,可以被描述成一个非凸优化问题,然后可以使用贪婪的交替更新方法通过随机梯度下降有效求解。

参考图1,图2,该一种基于深度神经网络模型压缩和加速方法,包括如下步骤:

步骤s1)初始化一个预训练的卷积网络;

步骤s2)给所有过滤器施加一个全局掩模并使之等于1;

步骤s3)迭代式地调整稀疏网络并且更新过滤器显著性。

上述所述步骤2)包括:

步骤1)判断对应过滤器是否被剪枝;

步骤2)如果对应过滤器没有剪枝,则,以全局的方式剪枝所述卷积网络所有层上不显著性权重的过滤器,等价于将不显著权重的过滤器的掩模设为0。

所述步骤2)决定所述过滤器显著性权重包括通过全局函数来判定;该全局函数是当所述卷积网络作为一种将输入图像映射成某个输出向量的前馈式多层架构;在该卷积网络中,将该卷积层第l层中的图像特征图集合表示为:

该卷积层第l层中的图像特征图集合大小为h_l×w_l,各个特征图为c_l;所述特征图是网络z_0的输入,或者是输出特征图z_l,其中l∈[1,2,...,l]。

所述各个特征图表示为:

其中k∈[1,2,...,c_l];所述第l个卷积层的各个输出特征图是通过将卷积算子()应用到一组输入特征图上获得的,这些特征图的过滤器参数化为:

即:

其中f(*)是一个非线性激活函数,比如修正线性单元(relu)。

在caffe和tensorflow等很多深度学习框架中,基于张量的卷积算子通过降低输入和重新构造过滤器的形状而被重新形式化为了一种矩阵乘矩阵的乘法,该矩阵乘矩阵的乘法包括:

其中,矩阵

的每一行都与输出张量的空间位置有关,所述输出张量是通过基于输入张量:

的变换而得到的,并且矩阵:是根据过滤器w_l重新调整了形状。

参考图3,该图3说明了实现全局和动态剪枝和加速方法的过程示意图;

本发明是以全局的方式剪枝冗余的过滤器,为此,可以直接将大型网络转换成紧凑的网络,而不重复地评估每个过滤器的显著性和逐层微调剪枝后的网络。为此,引入了一种全局掩模,以在训练过程的每次迭代中临时掩蔽不显著的过滤器;

所述步骤3)迭代式地调整稀疏网络并且更新过滤器显著性包括通过全局掩模的方式实现的,该全局掩模的方式通过下列公式来实现:

其中:是一个二元值的掩模;

如果第k个过滤器是显著的,则:为1;否则就为0。

所述卷积网络中的过滤器表示为:

并将全局掩模表示为:

然后给出一个训练样本集:

d={χ={x1,x2,…,xn},y={y1,y2,…,yn}}

其中x_i和y_i分别表示输入和目标输出;求解的是以下优化问题:

其中l(·)是被剪枝网络的损失函数;g(x;w*,m)的输入为x;具有过滤器w*和全局掩模m,并使用它们将输入映射成一个s维的输出;h(·)是用于决定过滤器的显著性值的全局判别函数,这取决于w*的预先知识;函数h(·)的输出是二元的,即如果对应的过滤器是显著的,则输出1,否则输出0;

(4)式是gdp框架的核心函数,是非凸的,该β∈(0,1]是一个决定被剪枝网络的稀疏度的阈值;因为有:

||·||0

算子;然后,通过使用随机梯度下降而贪婪且交替地更新w*和m,可以对其进行求解。

参看图4,图5,该图4,图5,表示本发明实验结果;

图4表示gdp和gdp-d(没有动态更新的全局剪枝)的flops比较,其中β设为0.7。flops%是指剩余的flops所占的百分比;

图5表示用于加速alexnet的不同剪枝方法比较。hy-p表示超参数设置,批大小为32(下面的表格都一样)

参看图6,图7,该图6表示:在加速alexnet和vgg-16方面不同过滤器选择方案的比较。scratch表示从头开始训练的网络,ori表示原始cnn,gdp-d表示没有动态更新的全局剪枝;

该图7表示加速vgg-16的结果。

参看图8,图9,该图8表示:使用gdp方案剪枝vgg-16时采用不同β值的结果比较。(a)使用gdp方案剪枝vgg-16时采用不同β值的训练损失和top-1测试准确度;(b)使用不同β值的gdp剪枝后的网络在微调后的训练损失和top-1测试准确度;

图9表示加速resnet-50的结果图。

图10表示在vgg-16的第一层上动态地更新过滤器、掩模和输出特征图。左:过滤器和掩模;右:输出特征图。在左列中,每个矩形都包含了过滤器和掩模,其中黑色框表示掩模没改变,红色框表示过滤器和掩模更新了。另外,其中仅有黑白两色的小矩形表示对应的过滤器是否显著。在右列中,对应改变的特征图用红色框标出。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1