一种基于进化算法+Darts的模型剪枝方法与流程

文档序号:37944565发布日期:2024-05-11 09:13阅读:17460来源:国知局
一种基于进化算法+Darts的模型剪枝方法与流程

本发明涉及的是深度学习、神经网络架构搜索、模型剪枝,具体涉及一种基于进化算法+darts的模型剪枝方法。


背景技术:

1、随着深度学习技术的发展,深度学习模型已被广泛的应用到实际生活中。但在边缘计算的场景,比如cpu、手机端上,硬件资源的计算能力非常有限,无法对权重过大的模型进行实时有效的推理,为解决此问题,模型剪枝、模型蒸馏以及模型量化开始被学者广泛的进行研究。本发明主要基于模型剪枝来缩小模型。

2、在模型剪枝方面,根据剪枝位置,可分为非结构化剪枝和结构化剪枝,在非结构化剪枝方面主要是分别来修剪每个单独的权重,结构化剪枝是对通道或者卷积核来进行剪枝。在对通道进行剪枝方面,目前比较经典的方法是通过l1或者l2范数来表示通道的重要性,裁剪掉相对不重要的通道。采用l1和l2范数进行剪枝的主要原因是考虑到特征的输出是由输入与权重相乘后进行加权,通道中的权重值越接近于0,则其对网络的贡献相对较小。但这种方法仅考虑了权重对于当前层的作用,未能考虑当前层的权重对于整个网络的影响程度,因此采用此方法进行模型剪枝在较多场景下都会造成性能的下降。

3、目前,在神经网络架构搜索方面,darts(可微分的架构搜索)将算子的选择过程建模成可微过程,较大程度的缩小了模型搜索时间。如图1所示,darts中预先设定了图像分类模型中常见的8个算子,比如 dil_conv_3x3、dil_conv_5x5、max_pool_3x3、avg_pool_3x3、skip_connection、sep_conv_3x3、sep_conv_5x5和none,并定义了对应的8个表示架构参数来代表8个算子的重要性,架构参数会在迭代模型训练过程中根据梯度下降算法进行更新,充分考虑了单个算子对于整个模型性能的贡献程度。

4、受darts思想在神经网络架构搜索方面的启发,本发明提出了一种基于进化算法+darts的模型剪枝方法。


技术实现思路

1、针对现有技术上存在的当前在结构化剪枝方面主要采用l1或l2范数来评估通道重要性,但l1和l2仅考虑了权重对当前层的影响,未考虑其对整个网络的影响的不足,本发明目的是在于提供一种基于进化算法+darts的模型剪枝方法,为充分评估通道对整个网络的影响,受darts 启发,引入了通道重要性因子通道重要性因子会在模型训练过程中进行更新。此外,为进一步提高模型剪枝性能,引入了进化算法(和声搜索算法)来衡量每个通道的裁剪程度。

2、为了实现上述目的,本发明是通过如下的技术方案来实现:一种基于进化算法+darts的模型剪枝方法,以resnet34进行剪枝来缩小模型,在resnet34中网络是以“basicblock”组成,basic block由2个3× 3卷积层构成。包括以下步骤:

3、1、在basicblock中引入通道重要性因子

4、2、根据可微分架构搜索算法(darts)更新通道重要性因子

5、3、采用进化算法(和声搜索算法)进一步探索最佳的通道组合。

6、所述的步骤1具体包括:若basicblock中以3x3,通道数为64的卷积组成,则引入的参数则为其中n=64,如图2中的(b) 所示。假设特征图x的大小为(56,56,64,其中通道数为64),经过一次(3,3,64,64)的卷积操作后得到的特征图大小x'依然为(56,56, 64),将特征图中的第n个通道表示为cn,则x'可表示为(c1,c2,…,cn), 引入通道重要性因子后,根据可微分架构搜索算法(darts), x'的每个通道会与通道重要性因子相乘,为保证通道重要性因子大于 0,引入了sigmoid函数来进行激活,最后的特征图x”如等式1所示。

7、

8、所述的步骤2具体包括:通道的重要性衡量需要以训练收敛的模型权重来进行衡量;因此在每次更新时,需假设当前的模型权重已达到了最优;根据darts方法,在调整模型权重因子和通道重要性因子时,满足以下关系式。

9、

10、s.t.w*(α)=argminwltrain(w(α),α)

11、其中w*(α)表示在通道重要性α的情况下,在训练集train上表现最优的权重值。表示在模型权重达到最优的时候,再采用验证集来寻找一个最优的通道重要性因子。考虑到数据的验证集,不参与模型的训练过程,因此本发明根据可微分的架构搜索算法,将原本的训练集按照1:1的比例划分为train和train',其中train用于更新模型权重,train'则用于更新通道重要性因子。具体来说,图2(b)中的一次模型迭代过程可如下步骤所示:

12、(2.1)模型权重(w)的更新。在更新模型权重w时,保持通道重要性因子不变,采用事先划分的train数据样本计算当前的损失,并进行反向传播,更新w;

13、(2.2)通道权重因子的更新。在模型权重w完成一次更新以后,固定模型权重,采用train'数据样本计算当前的损失,进行反向传播,更新通道权重因子

14、所述的步骤3具体包括:在常用的通道剪枝方法中,当采用l1范数和l2范数计算出通道的重要性后,将会对每层的通道重要性进行排序,算法工程师依据裁剪后的模型在验证集上的性能不断的调整每层的裁剪比例,这在一定程度上会耗费算法工程师大量的时间,并且这种手工调整也很容易错过最优解。为解决此问题,本发明提出采用改进的和声搜索算法来对每层的裁剪比例进行搜索。

15、假设当前需要裁剪的网络层数为34层,则需要确定34层的通道裁剪比例r,那么和声搜索算法自变量的个数为34个,表示为r( r1,r2,…,rn),其中n=34,优化的目标则是寻找34层网络通道的裁剪比例组合,使得裁剪后的模型损失最小。

16、此外,为更多的利用步骤2得到的通道重要性信息,在进行裁剪过程中,当某层的通道的平均重要性越大时,改进的和声搜索算法将会保留更大比例的通道数。如等式2所示。

17、

18、

19、其中表示第i层的通道重要性均值,表示第i层的第n个通道重要性。

20、由于裁剪比例越大,模型性能会越差,因此在进行裁剪之前,需要确定模型需要裁剪的总比例。假设需要裁剪的总比例为rall=0.5。

21、当前的优化问题可定义为

22、minlvalid(r)

23、

24、其中,rall=0.5,mi表示第i层的权重数量,表示网络中所有的权重数量之和。其中(1)利用肯德尔系数确保裁剪比例排序与通道平均重要性排序有负相关的关系,(2)式则限制裁剪后的模型权重比例要小于事先设定的rall,lvalid表示验证数据集上的损失,其中r的取值范围 (0,1)。本发明提出的改进和声搜索算法,其适应值(fitness)的计算公式可转换为

25、

26、和声搜索算法的目标即找到r值使fitness最小,fitness中的m表示一个非常大的常量,设置为1x108。

27、本发明的有益效果:本发明引入通道重要性因子来充分考虑每个通道的权重值对整个网络性能的影响程度,并引用肯德尔系数来确保裁剪后的模型满足平均通道重要性越大的层将裁剪更少的通道的条件,最后采用进化算法来求解每层的裁剪比例,缩短了裁剪比例的确定时间,并提高了剪枝后的模型性能。

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