一种基于Shapley值的深度卷积神经网络滤波器剪枝方法技术

技术编号:38025944 阅读:6 留言:0更新日期:2023-06-30 10:52
本发明专利技术涉及一种基于Shapley值的深度神经网络滤波器剪枝方法,包括以下步骤:选择原始网络模型,准备数据集,划分为训练集和测试集,固定模型参数,通过数据集训练出未剪枝的初始模型;将部分训练集输入初始模型,计算出每个滤波器的Shapley值;设置剪枝比例,根据Shapley值对初始模型进行剪枝,然后使用数据集对剪枝后的模型进行重新训练,得到最终的模型。本发明专利技术提出了一个Shapley值近似值计算方法,通过先假设所有滤波器Shapley值相同,然后根据不同滤波器组合的效应函数值对所有滤波器的Shapley值进行调整,最终到达对实际Shapley值的近似。Shapley值的近似。Shapley值的近似。

【技术实现步骤摘要】
一种基于Shapley值的深度卷积神经网络滤波器剪枝方法


[0001]本专利技术深度神经网络模型压缩与加速领域,具体涉及一种基于Shapley值的深度卷积神经网络滤波器剪枝方法。

技术介绍

[0002]深度卷积神经网络在计算机视觉领域取得了很大的成功,例如图片分类、目标检测和图像分割等领域。但它仍然有一些计算量和内存占比大的缺点,这使得大多数性能优秀的神经卷积神经网络无法应用到智能手机等资源受限的设备上。因此卷积神经网络模型的压缩和加速时近几年被广泛研究的问题。如今比较流行的模型压缩方法主要有模型轻量化设计、参数量化、模型剪枝和知识蒸馏等。在这些方法中,模型剪枝由于其方便有效性和高效性被广泛的探索研究。
[0003]模型剪枝主要包括权重剪枝和滤波器剪枝。权重剪枝通过直接剪掉滤波器中不重要的权重连接来对模型进行压缩,但这种剪枝方式得到的权重矩阵是稀疏的,需要专门的库或者硬件才能实现模型压缩和加速。而滤波器剪枝方法直接剪掉整个滤波器来实现模型压缩,仍然保留原始的模型结构,是一种较实用的模型压缩和加速方法。滤波器剪枝的主要方法就是通过对每个滤波器的重要性进行评价,通过剪去重要性高的保留重要性低的滤波器来实现模型压缩。而如何合理全面的评价一个滤波器是否重要就是滤波器剪枝需要面对的主要问题。

技术实现思路

[0004]本专利技术的目的就是为了解决如何合理全面的评价一个滤波器的重要性,提出了一种基于Shapley值的深度卷积神经网络滤波器剪枝方法。
[0005]本专利技术实现上述专利技术目的所采用的技术方案如下:
[0006]一种基于Shapley值的深度卷积神经网络滤波器剪枝方法,其特征在于,包括如下步骤:
[0007]步骤1:针对分类等模型识别任务,准备数据集D,划分为训练集和测试集,选择原始网络模型,固定模型参数,通过数据集D训练出未剪枝的初始模型。
[0008]步骤2:将部分训练集输入初始模型,根据模型输出的loss计算出每个滤波器的Shapley值。
[0009]Shapley值的计算公式为:
[0010][0011]其中,φ
i
(v)表示滤波器i的Shapley值,N\{i}表示去掉滤波器i的所有滤波器集合,S表示N\{i}的一个子集,|S|表示集合S中滤波器的个数,|N|表示集合N中滤波器的个数,v(S)表示保留集合S中的滤波器时模型输出的loss值,v(S∪{i})表示保留集合S中的滤波器和滤波器i时模型输出的loss值。(*)!表示阶乘。
[0012]由公式1,当v(S)的值变化Δv(S),所有滤波器的Shapley变化值为Δφ(v)为:
[0013][0014][0015]其中,Δφ
i
(v)表示滤波器i的Shapley增加值,Δφ
j
(v)表示滤波器j的Shapley增加值,Δv(S)表示保留集合S中的滤波器时模型输出的loss值的增加值。
[0016]先假设一开始v(S)的值仅与集合S的元素个数有关,对于元素个数为k的集合S,假设根据公式1可以得到这时每个滤波器的Shapley值是相等的,设φ1(v)=φ2(v)=

=φ
|N|
(v)=0。
[0017]当k=1时,先将所有的v(S)的实际值与平均值的差值进行从小到大的排序,如图1所示:
[0018]图中每个点代表实际值与平均值的差。中间虚线为0。
[0019]当v({i})由平均值变为实际值时,Δφ
i
(v)为
[0020][0021]其中,v({i})为只保留滤波器i时模型输出的loss值,v({j})为只保留滤波器j时模型输出的loss值,Δv({i})是v({i})与平均值的差值,Δv({j})是v({j})与平均值的差值。
[0022]如果将左右两边的值分别加起来,如图2,当Δv({i})<0时,可以分为如图3的两部分,当Δv({i})>0时符号相反:
[0023]则:
[0024][0025]当|N|>k>1时,S
i
为包含滤波器i且滤波器个数为k的集合,由于S
i
有多个,可能平均值的两边都存在,按大于或小于平均值所有的集合S
i
分为两部分X和Y,X表示小于的v(S
i
)与的差值求和,Y表示大于的v(S
i
)与的差值求和。A为平均值左边去掉X的剩余部分和,B为平均值后面去掉Y的剩余部分和,四部分如图4所示:
[0026]即:
[0027][0028][0029][0030]其中是所有元素个数为k的集合S的v(S)的平均值,v(S
i
)表示保留集合S
i
中的滤波器时模型输出的loss值,是所有v(S
i
)的平均值。且:
[0031][0032]假设A>B,则可将A分为

B和

(X+Y)两部分,

B和B可以约掉,A<B时情况类似。如图5所示:
[0033]此时Δφ
i
(v)为:
[0034][0035]其中,|S
i
|表示集合S
i
中的滤波器个数。
[0036]当k=|N|时,集合N中包含所有的滤波器,所有滤波器Shapley增加值相等,即又由于开始φ
i
(v)=0,所以
[0037][0038]由公式9,11可知,可以通过计算近似值来得到φ
i
(v)的近似值。
[0039]对于|S|=k,先根据每个滤波器Shapley值与平均Shapley值的差的绝对值进行从小到大的排序,然后取不包含i的前k个滤波器任意k

1个滤波器的组合加入滤波器i后分别得到loss,将这些loss的平均值作为复杂度为
[0040]步骤3:设置剪枝比例,根据Shapley值对模型的各层滤波器进行排序,对初始模型进行剪枝,然后使用数据集D对剪枝后的模型进行重新训练,记录并保存测试结果最好的模型。
[0041]步骤4:,修改剪枝比例,重复步骤S3。
[0042]进一步,所述S3具体包括:
[0043](1)学习率设为0.01;衰减间隔为150,225;
[0044](2)采用交叉熵函数作为损失函数;
[0045](3)采用SGD优化方法,权重衰减率为0.005,动量值为0.9;
[0046]本专利技术具有以下有益效果:
[0047]基于Shapley值进行重要性评价更具有合理性和公平性,本专利技术提出了一种新的计算Shapley值近似值的方法。
[0048]本专利技术提出了一种基于Shapley值的深度卷积神经网络滤波器剪枝方法,将Shapley值作为过滤器本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Shapley值的深度卷积神经网络滤波器剪枝方法,其特征在于,包括如下步骤:步骤1:针对分类模型识别任务,准备数据集D,划分为训练集和测试集,选择原始网络模型,固定模型参数,通过数据集D训练出未剪枝的初始模型;步骤2:将部分训练集输入初始模型,根据模型输出的loss计算出每个滤波器的Shapley值;步骤3:设置剪枝比例,根据Shapley值对模型的各层滤波器进行排序,对初始模型进行剪枝,然后使用数据集D对剪枝后的模型进行重新训练,记录并保存测试结果最好的模型;步骤4:,修改剪枝比例,重复步骤3。2.如权利要求1所述的一种基于Shapley值的深度卷积神经网络滤波器剪枝方法,其特征在于:所述步骤1具体包括:数据集D位面向分类任务构建的数据集,分为训练集和测试集,训练集用于训练模型,测试集用于测试模型性能。3.如权利要求1所述的一种基于Shapley值的深度卷积神经网络滤波器剪枝方法,其特征在于:所述步骤2具体包括:Shapley值的计算公式为:其中,φ
i
(v)表示滤波器i的Shapley值,N\{i}表示去掉滤波器i的所有滤波器集合,表示S是N\{i}的一个子集,|S|表示集合S中滤波器的个数,|N|表示集合N中滤波器的个数,v(S)表示保留集合S中的滤波器时模型输出的loss值,v(SU{i})表示保留集合S中的滤波器和滤波器i时模型输出的loss值;(*)!表示阶乘;由公式1,当v(S)的值变化Δv(S),所有滤波器的Shapley变化值Δφ(v)为:由公式1,当v(S)的值变化Δv(S),所有滤波器的Shapley变化值Δφ(v)为:其中,Δφ
i
(v)表示滤波器i的Shapley增加值,Δφ
j
(v)表示滤波器j的Shapley增加值,Δv(S)表示保留集合S中的滤波器时模型输出的loss值的增加值;假设一开始v(S)的值仅与集合S的元素个数有关,对于元素个数为k的集合S,令根据公式1可以得知这时每个滤波器的Shapley值是相等的,设φ1(v)=φ2(v)=

=φ
|N|
(v)=0;当k=1时,S中只有一个元...

【专利技术属性】
技术研发人员:刘波杨顺袁彤彤
申请(专利权)人:北京工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1