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

一种基于协同演化的深度卷积神经网络剪枝方法和系统

2022-06-05 14:05:17 来源:中国专利 TAG:


1.本发明涉及一种深度卷积神经网络剪枝方法和系统,尤其涉及的是一种基于协同演化的深度卷积神经网络剪枝方法和系统。


背景技术:

2.深度卷积神经网络为代表的深度学习方法已在人脸识别、语音识别、自动驾驶等领域取得了巨大的成功。然而,深度学习系统的顺畅运行往往需要大量的计算资源,这导致其在资源受限的场景下的应用受阻。因此,神经网络的轻量化是深度学习的重要发展方向之一,而神经网络剪枝是其中的一种代表性方法。
3.神经网络剪枝方法通过裁减掉神经网络中冗余的神经元和神经元之间的连接,来减少模型的参数和计算开销。在该过程中,如何去判别出冗余的神经元和连接,以及如何去确定深度神经网络中每一层的裁剪比率,是最大的两个难点。现有方法往往通过专家定义规则的方式来判别神经元和连接的重要性,并基于专家经验直接为每一层指定裁剪率,然而该过程需要大量专家知识和经验,且通常需要反复试错的过程,这阻碍了现有方法的实际应用。
4.以图像分类任务为例,深度学习系统在运行时,首先加载已训练完成的神经网络,之后将待预测图片作为神经网络的输入,通过深度卷积神经网络的逐层计算,最终可获得图片的类别预测结果。此处,每一层卷积层均由若干个卷积核构成。通常,在上述过程中,所有的卷积核均会参与图片的预测,这会带来巨大的计算开销,从而为深度学习系统在手机等计算资源有限的终端上的部署带来困难。


技术实现要素:

5.发明目的:针对现有技术中存在的问题与不足,深度神经卷积网络剪枝是一种较好的解决方案。深度卷积神经网络剪枝技术以训练完成的深度卷积神经网络作为应用对象,其旨在删除其中冗余的卷积核,在减少神经网络预测所需要的计算开销的同时,不明显损害神经网络的精度。对于深度卷积神经网络剪枝技术而言,其关键点和难点在于,如何去判别出冗余的神经元和连接,以及如何去确定深度神经网络中每一层的裁剪比率。现有技术方法往往需要专家定义剪枝规则,以判别卷积核的重要性,并基于专家经验直接为神经网络的每一层指定裁减比率。然而,该过程需要的大量专家经验往往难以获得,通常需要反复试错的过程,使得剪枝技术的实际应用受阻。
6.本发明提供一种基于协同演化的、高效且自动的深度卷积神经网络剪枝方法和系统,减少深度学习系统运行的计算资源,且解决了深度卷积神经网络剪枝方法高度依赖于专家经验和反复试错的问题。
7.深度卷积神经网络剪枝问题,其本质是从所有的卷积核中,选出一部分冗余的卷积核删去,而把其他的部分保留。因此,深度卷积神经网络剪枝问题可被自然地建模为一个子集选择问题,其中,深度卷积神经网络中的每一个卷积核对应集合的一个个体,未被裁减
的深度卷积神经网络所包含的所有的卷积核构成了整个集合,视作该问题的全集。求解该问题,即从全集中挑选出最重要的个体进行保留,而删去未被选中的个体。针对此,本方案发明了一种基于协同演化的深度卷积神经网络剪枝方法,在操作时,包含分组、组内演化、合并三个主要步骤。各主要步骤又包含若干子步骤。其中,分组发生于求解的初期,即利用神经网络的结构特点,对解空间进行分组,以应对庞大的搜索空间带来的求解困难。接着,组内演化和合并这两个主要步骤循环进行,即可完成剪枝过程。
8.技术方案:一种基于协同演化的深度卷积神经网络剪枝方法,采用如下的建模形式,对于一个给定的深度卷积神经网络,若其共包含n个待裁减的卷积层,每个卷积层的卷积核数目分别为{l1,l2,

,ln},则第i层的卷积核可以用来表示。用指示变量σ
ij
来表示第i层的第j个卷积核是否被保留,即若σ
ij
=1,则保留对应的卷积核,若σ
ij
=0,则删去对应的卷积核,那么剪枝后的神经网络被形式化为
[0009][0010]
在剪枝过程中,需要在删减卷积核的同时,维持网络的精度,该过程可以形式化为一个优化问题,即通过对f的优化,在最小化神经网络的计算开销的同时,最大化神经网络的精度。使用浮点数计算数量(float point operations,简写flops)来表示网络的计算开销,那么,该优化问题可表示为:
[0011][0012]
本发明提出一种基于协同演化的神经网络剪枝方法,包含分组、组内演化、合并三个主要步骤。上述优化目标将作为组内演化中个体的适应度评估指标,算法依照该指标进行组内演化中的自然选择,以得到具有高精度、低计算开销的剪枝结果。
[0013]
具体而言,考虑到深度神经网络前向传播的特性,对解空间进行分组,即神经网络的每一层对应一个分组。之后,每个组内的子问题分别用演化算法(算法流程2)进行优化,该过程可并行地在各个组内独立完成。各组组内演化给定轮数后,组间通过合并来更新信息,即,将各组组内演化求解得到的卷积层,按照分组前的原始顺序,合并为一个裁剪后的神经网络,之后,该裁剪后的网络会在训练集上再训练一定的轮数,以帮助网络适应裁减变化,恢复精度。其算法流程如下:
[0014]
算法流程1:
[0015]
输入:待剪枝的神经网络φ;协同演化的最大轮数t1[0016]
输出:剪枝后的神经网络的集合a
[0017]
1)初始化协同演化的轮数计数器t1=0,初始化剪枝后的神经网络的集合初始化每一轮中待裁剪的网络φ0=φ。
[0018]
2)当t1《t1:
[0019]
3)将待剪枝的神经网络按层分组。
[0020]
4)并行地在各个组内分别用演化算法进行优化,获得对应层的剪枝结果。各组内演化的详细步骤见算法2。
[0021]
5)将各组的剪枝结果进行合并,获得一个剪枝后的神经网络。
[0022]
6)对剪枝后的神经网络进行再训练,以帮助网络适应裁减,恢复精度。将再训练后的网络φ

加入集合a。
[0023]
7)设置下一轮迭代时的待裁剪的神经网络φ0=φ


[0024]
8)t1=t1 1。
[0025]
9)输出剪枝后的神经网络的集合a,其中包含t1个具有不同计算开销的剪枝后的神经网络,供用户根据实际需要选择使用。
[0026]
其中,组内演化的详细流程如下:
[0027]
算法流程2:
[0028]
对于上述的组内演化过程,其详细流程如下:
[0029]
输入:神经网络中的一层,其包含l个卷积核;单次组内演化最大轮数t2[0030]
输出:剪枝后的某一层神经网络
[0031]
1)编码,将该层神经网络编码为长度为l的0-1串,每一位表示某个神经元的保留与否。演化过程中的每个个体解,对应一个长度为l的0-1串。
[0032]
2)种群初始化,定义种群大小为m,初始化阶段变异率p1。首先,将每一位全为1的解,加入种群中。之后,以每一位全为1的解作为父代个体,通过变异率为p1的变异算子,产生m-1个新个体,共同组成初始种群。
[0033]
3)初始化轮数计数器t2=0。
[0034]
4)当t2《t2:
[0035]
5)当新产生的子代个体数量少于m时:
[0036]
6)从种群中随机选择一个个体作为父代个体。
[0037]
7)对选中的父代个体执行变异率为p2的变异算子,产生一个新的子代个体。
[0038]
8)计算n个新产生的子代个体的精度。
[0039]
9)对父代与子代共计2n个个体按照精度大小以降序排序,对于精度相同的个体,flops小的个体排在前。按照排序结果选取前n个个体保留,作为下一轮循环的父代个体,未被保留的个体被淘汰。
[0040]
10)t2=t2 1。
[0041]
11)输出末代种群中精度最高的个体,作为该层的剪枝结果。
[0042]
在每一轮迭代中,每一层裁减掉的卷积核数目不应超过该层总卷积核数目的一定比率u。该限制可平滑剪枝过程,以获得更好的剪枝效果。
[0043]
按照上述流程,即可完成对神经网络的剪枝。如算法流程1所示,在本方法的执行过程中,会产生具有不同裁减比率的一组解,使用者可根据实际应用场景的计算复杂度限制,从中选择满足符合条件的解使用。
[0044]
按照上述思路,本发明提出的基于协同演化的深度神经网络剪枝方法包含以下步骤:
[0045]
步骤1:读取待裁减的神经网络。从训练集d
train
中随机选取出比例为k的数据,记作dk,用于后续组内演化的个体评估。
[0046]
步骤2:根据待裁减网络的结构进行分组。具体而言,若神经网络共包含n个待裁剪的卷积层,可将该问题的搜索空间按层划分为n组。
[0047]
步骤3:并行地在各个组内用演化算法进行优化。包含初始化、产生新解、解的评
估、自然选择这4个子步骤。在执行该步骤前,需要给定以下超参数,种群大小m,组内演化最大轮数t,每次组内演化中,卷积核的最大裁减比率u。每个组内的演化过程如下:
[0048]
步骤3.1:初始化。将当前组对应的一层神经网络编码为0-1字符串,字符串的长度根据其包含的卷积核数目而定,每一个卷积核对应字符串的一位。全1解首先被加入种群中,之后,对全1解执行m-1次变异率为p1的变异算子,产生m-1个新个体,与全1解一同构成大小为m的初始种群。其中,变异率为p,最大裁剪比率为u的变异算子的操作如下:0-1串的每一位均有p的概率发生翻转,当0-1串的某一位将从1翻转为0时,若此时0-1串中0的比例大于u,则放弃该位的翻转。该限制可使得剪枝过程更加平滑,以防止单轮中有过多的卷积核被裁剪导致精度丢失,最终可获得更好的剪枝效果。
[0049]
步骤3.2:产生新解。采用概率p2的变异算子,即首先随机从当前种群中选取父代个体,对于父代个体对应的0-1字符串,每一位均有p2的概率发生翻转,以产生子代。如技术方案中所述,为使得剪枝过程平缓进行,每一次组内演化中,最多有比例为u的卷积核被删去,为保证此规则,当利用变异算子产生子代时,若当前时刻子代的剩余卷积核比例小于等于1-u,则不会再继续删去卷积核。p1和p2均可设置为0.1。
[0050]
步骤3.3:解的评估。在产生了m个子代后,需要对这m个子代进行评估。具体而言,对于每一个个体,其表示相对应的网络某一层的裁剪结果,评估时需要将该层与网络的其它层组合成一个完整的神经网络,以用于评估该层裁减的效果。此处,其他层可从本轮协同演化中待裁剪的网络中直接获取。将选取的部分训练集dk输入组合而成的网络,将该网络在dk上的精度近似作为该个体的精度。
[0051]
步骤3.4:选择。此时种群共有2m个个体,需要通过选择选出m个个体作为下一代种群。选择首先依据精度,当精度相同时,选择flops更小,即剩余卷积核数目更小的解保留。
[0052]
步骤3.5:组内演化的循环终止判断。当前组的组内演化轮数记录器的值加1。若未达到组内演化的最大轮数,则跳至步骤3.2。
[0053]
步骤4:拼接。待每一组都完成组内演化后,各组末代种群中最优的个体对应的剪枝结果会被拼接起来,作为本轮的剪枝结果。通常来说,在每个组内挑选最优的个体时,精度最高的个体被视作最优的个体。若两个个体的精度相同,则选取剩余卷积核更少的个体。
[0054]
步骤5:再训练恢复精度。在拼接完成后,需要对拼接后所对应的完成一轮裁减的网络进行再训练,以恢复精度。将再训练后的网络设定为下一轮剪枝时的初始待裁剪网络,且将该网络加入到算法产生的解集a中。
[0055]
步骤6:协同演化的循环中止判断。协同演化的轮数记录器t1的值加1。若未达到预设定的协同演化的最大轮数t1,则跳至步骤2。此处,由于每轮的剪枝过程相对独立,亦可在达到理想的裁剪率后,提前终止循环,输出此时的剪枝结果。
[0056]
步骤7:根据实际应用场景需要,从a中选择合适的剪枝结果使用。本方法在运行过程中,可产生具有不同剪枝比率的若干个剪枝结果。通常来说,剪枝比率高的神经网络,其精度会较低。
[0057]
步骤8:将剪枝结果部署到终端设备上,将待预测数据输入剪枝后的网络,完成数据类别的预测。
[0058]
所述基于协同演化的深度神经网络剪枝方法为用于图片分类的基于协同演化的深度神经网络剪枝方法,所述步骤8中,将剪枝结果部署到终端设备上,将待预测图片输入
剪枝后的网络,完成图片类别的预测。
[0059]
所述训练集d
train
为用于申请网络模型训练的图片数据集。
[0060]
所述待裁减的神经网络为输入图片数据训练之后得到的神经网络模型。
[0061]
所述再训练恢复精度步骤中,取一部分图片数据作为训练样本,对拼接后的神经网络进行训练。
[0062]
所述步骤3.3:解的评估中,将选取的部分训练集dk输入组合而成的网络,将该网络在dk上的精度近似作为裁剪后的网络的精度。所述部分训练集dk指的是从图片数据集中采样的部分图片数据。
[0063]
一种基于协同演化的深度卷积神经网络剪枝系统,包括:
[0064]
读取模块:用于读取待裁减的神经网络,从训练集d
train
中随机选取出比例为k的数据,记作dk;
[0065]
分组模块:根据待裁剪网络的结构进行分组;
[0066]
协同演化模块:并行地在各个组内用演化算法进行优化;
[0067]
拼接模块:待每一组都完成组内演化后,各组末代种群中最优的个体对应的剪枝结果会被拼接起来,作为本轮的剪枝结果;
[0068]
再训练恢复精度模块:在拼接完成后,需要对拼接后所对应的完成一轮裁减的网络进行再训练,将再训练后的网络设定为下一轮剪枝时的初始待裁剪网络,且将该网络加入到算法产生的解集a中;
[0069]
协同演化的循环中止判断模块:协同演化的轮数记录器t1的值加1;若未达到预设定的协同演化的最大轮数t1,则通知分组模块对待裁剪网络进行分组,之后协同演化模块执行优化,之后再训练恢复精度模块进行再训练,将再训练后的网络设定为下一轮剪枝时的初始待裁剪网络,且将该网络加入到算法产生的解集a中,协同演化的循环中止判断模块执行其功能;由于每轮的剪枝过程相对独立,亦可在达到预设的裁剪率后,提前终止循环,输出此时的剪枝结果;
[0070]
选择模块:根据实际应用场景需要,从a中选择剪枝结果使用;
[0071]
预测模块:将剪枝结果部署到终端设备上,将待预测数据输入剪枝后的网络,完成数据类别的预测。
[0072]
所述系统的实现过程与方法实现过程相同,不再赘述。
[0073]
一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行上述计算机程序时实现如上所述的基于协同演化的深度卷积神经网络剪枝方法。
[0074]
一种计算机可读存储介质,该计算机可读存储介质存储有执行如上所述的基于协同演化的深度卷积神经网络剪枝方法的计算机程序。
[0075]
有益效果:与现有技术相比,本发明提供的基于协同演化的深度卷积神经网络剪枝方法和系统,使用协同演化的思路,可以有效地对深度神经网络进行剪枝,以在不损失精度的情况下,显著降低神经网络的计算开销。本方法相较于现有剪枝方法,不依赖于专家知识,易于并行,且优化过程高度独立,可扩展性强,有较大的实际应用潜力。
[0076]
进一步地,将剪枝结果部署到终端设备上,将待预测图片输入剪枝后的网络,完成图片类别的预测,在使用剪枝后的网络进行图片类别预测时,可以在不损失精度的前提下,
显著减小网络的参数存储开销及单次预测所需要的计算开销。
附图说明
[0077]
图1是本发明实施例的方法流程图;
[0078]
图2是本发明实施例的各组并行进行组内演化的流程图;
[0079]
图3是本发明实施例的实验效果对比图。
具体实施方式
[0080]
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本技术所附权利要求所限定的范围。
[0081]
一种基于协同演化的深度卷积神经网络剪枝方法,通过分组、组内演化、合并等操作,可以自动地解得一组优质的剪枝结果。
[0082]
以resnet-50在ilsvrc2012上的剪枝为例。ilsvrc2012是最主流的图像分类数据集之一,共包含1000个类别,其中训练集包含约128万张图片,测试集包含10万张图片。resnet-50是深度学习领域最经典的网络模型之一,其包含16个bottleneck block,每个bottleneck block由3个卷积层组成。在剪枝时,我们对每个bottleneck block的第1个和第2个卷积层进行剪枝,保持第3个卷积层不变,以保证每个bottleneck block的输出维度不发生变化,维持resnet本身结构的有效性。
[0083]
在该问题下,本实施例提出的剪枝流程如下:
[0084]
步骤1:读取待裁减的resnet-50神经网络,该网络是已经在ilsvrc2012训练集上通过充分训练得到的神经网络模型。读取ilsvrc2012的训练集,记作d
train
。从训练集d
train
中随机选取出比例为k的数据dk,此处k=0.01,用于后续组内演化的个体评估。
[0085]
步骤2:根据resnet-50的网络结构,待裁剪的卷积核可被分为2x16=32组。
[0086]
步骤3:并行地在各组内执行组内演化。包含初始化、产生新解、解的评估、自然选择这4个子步骤。本实现中,对于组内演化,种群大小m设定为5,组内最大演化轮数t2设为10。卷积核的最大裁减比率u设定为0.15。
[0087]
步骤3.1:初始化。将解空间编码为0-1字符串,当前组的字符串的长度根据当前组对应的卷积层的剩余的卷积核数目而定,每一个卷积核对应字符串的一位。全1解首先被加入种群中,其余解由全1解依照初始化概率p1采样得到,每一位有p1的概率从1翻转至0,此处p1=0.1。
[0088]
步骤3.2:产生新解。本实现采用概率p2=0.1的变异算子,即首先随机从当前种群中选取父代,对于父代对应的0-1字符串,每一位均有p2的概率发生翻转,以产生子代。如技术方案中所述,为使得剪枝过程平缓进行,每一次组内演化中,最多有比例为u的卷积核被删去,为保证此规则,当利用变异算子产生子代时,若当前时刻子代的剩余卷积核比例小于等于1-u,则不会再继续删去卷积核。
[0089]
步骤3.3:解的评估。产生了5个子代后,需要对其进行评估。将dk输入裁剪后的网络,通过裁剪后的网络在dk上的精度来近似估计裁剪后的网络的精度。
[0090]
步骤3.4:自然选择。此时种群共有10个个体,需要选出5个个体作为下一代种群。
选择首先依据精度,将10个个体按精度排序后,精度高的个体得以保留。当精度相同时,选择剩余卷积核数目更小的个体保留。
[0091]
步骤3.5:循环终止判断。当前组的组内演化轮数记录器的值加1。若未达到组内演化的最大轮数,则跳至步骤2.2。
[0092]
步骤4:拼接。待每一组都完成组内演化后,各组末代种群中最优的解对应的剪枝结果会被拼接起来,作为本轮的剪枝结果。通常来说,在每个组内挑选最优的解时,精度最高的解被视作最优的解。若两个解的精度相同,则选取剩余卷积核更少的解。本实现中,为加速剪枝过程,若精度最高的解,其对应的所有卷积核都被保留,则选择精度次高的解参与拼接和下一轮的优化。
[0093]
步骤5:再训练恢复精度。在拼接完成后,需要对拼接后所对应的完成一次裁减流程后的神经网络进行再训练,以恢复精度。此处,在再训练时,输入数据为所有的训练集d
train
,训练算法为sgd,再训练轮数为60个epoch,初始学习率为0.01,学习率在第20,40,50个epoch以0.1的倍率衰减。batch size为256。momentum为0.9,weight decay为0.0001。将再训练后的网络设定为下一轮剪枝时的初始待裁剪网络,且将该网络加入到算法产生的解集a中。
[0094]
步骤6:循环中止判断。协同演化轮数记录器的值加1。若未达到预设定的协同演化的最大轮数,则跳至步骤2。本实验预设定的协同演化最大轮数位13。
[0095]
步骤7:剪枝效果测试。从解集a中选取若干剪枝后的网络,将测试集的图像数据,输入剪枝后的网络,得到其预测结果,计算剪枝后的网络在测试集上的精度。
[0096]
一种基于协同演化的深度卷积神经网络剪枝系统,包括:
[0097]
读取模块:用于读取待裁减的神经网络,从训练集d
train
中随机选取出比例为k的数据,记作dk;
[0098]
分组模块:根据待裁剪网络的结构进行分组;
[0099]
协同演化模块:并行地在各个组内用演化算法进行优化;
[0100]
拼接模块:待每一组都完成组内演化后,各组末代种群中最优的个体对应的剪枝结果会被拼接起来,作为本轮的剪枝结果;
[0101]
再训练恢复精度模块:在拼接完成后,需要对拼接后所对应的完成一轮裁减的网络进行再训练,将再训练后的网络设定为下一轮剪枝时的初始待裁剪网络,且将该网络加入到算法产生的解集a中;
[0102]
协同演化的循环中止判断模块:协同演化的轮数记录器t1的值加1;若未达到预设定的协同演化的最大轮数t1,则通知分组模块对待裁剪网络进行分组,之后协同演化模块执行优化,之后再训练恢复精度模块进行再训练,将再训练后的网络设定为下一轮剪枝时的初始待裁剪网络,且将该网络加入到算法产生的解集a中,协同演化的循环中止判断模块执行其功能;由于每轮的剪枝过程相对独立,亦可在达到预设的裁剪率后,提前终止循环,输出此时的剪枝结果;
[0103]
选择模块:根据实际应用场景需要,从a中选择剪枝结果使用;
[0104]
预测模块:将剪枝结果部署到终端设备上,将待预测数据输入剪枝后的网络,完成数据类别的预测。
[0105]
结果如图3所示,其中五角星连成的线代表本实施例提出的方法,其他点代表现有
的深度卷积神经网络剪枝方法,横轴表示网络的裁剪率,纵轴表示裁剪后的网络的精度。可以从图中直观看出,本发明实施例提出的方法可以在保证更高的裁剪率的同时,保持更高的精度。详细的数值结果如表1所示。
[0106][0107]
显然,本领域的技术人员应该明白,上述的本发明实施例的基于协同演化的深度卷积神经网络剪枝方法各步骤或基于协同演化的深度卷积神经网络剪枝系统各模块可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
再多了解一些

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

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

相关文献