《Filter Pruning using Hierarchical Group Sparse》ICPR2020论文详解

《 F i l t e r    P r u n i n g    u s i n g    H i e r a r c h i c a l    G r o u p    S p a r s e    R e g u l a r i z a t i o n    f o r    D e e p    C o n v o l u t i o n a l    N e u r a l 》 论 文 解 析 {\color{Red}《Filter\ \ Pruning\ \ using\ \ Hierarchical\ \ Group\ \ Sparse\ \ Regularization\ \ for\ \ Deep\ \ Convolutional\ \ Neural》论文解析} Filter  Pruning  using  Hierarchical  Group  Sparse  Regularization  for  Deep  Convolutional  Neural

这篇论文ICPR2020的工作,讲的是在训练的过程中加入稀疏正则化,它的第一版四月被(IJCNN)2020接收了,然后作者改了一改11月又被ICPR接收了,广岛大学信息工程学院的工作。与我们之前工作中的各种稀疏正则化标准相比,它的性能更加出色。
 
 

1. 摘要

(i)本文介绍,分层的分组稀疏正则化是有效的。
(ii)在对于初始模型进行分层的分组稀疏正则化之后,依据对分类损失做的一个简单判断来看剪枝是否有影响,而简单就是对随机选择的训练样本进行部分采样计算,从而得到紧凑的网络。
(iii)结果表明,该方法可以减少CIFAR-10的ResNet参数50%以上,精度仅下降0.3%。然后与baseline相比,TinyImageNet-200的ResNet参数减少了34%,精度反而更高。

 
 

2. 分组方式

本文介绍有两种分组方式。
在这里插入图片描述

  • 为了剪掉unimportant的过滤器,本文说是有两种分组方式,但其实就是filters剪枝和通道剪枝,(a)图其实就是剪掉一整个filters,也就是剪掉一个神经元,也由于剪掉的是filter,所以输出通道会少一个,(b)图中是对输入特征图的通道做剪枝,所以每个filter的同一个通道都不会起到作用,我们剪掉与输入特征图做卷积的对应通道,而这部分对该层的输出特征图没有影响,维度和size上都没有影响。与之对比,(a)图中会改变输出特征图的维度,而(b)中不会。

通过(b)图中的分组,我们可以剪掉当前层的输入通道,其实就是剪的是输入Activation。
 
 

3. 贡献

本文的贡献总结如下:
(1)提出了一种基于特征分组的分层分组稀疏正则化的滤波器修剪方法,正则化比非分层稀疏正则化能够更充分地修剪依赖于网络结构和信道数量的滤波器。
(2)按特征分组可以通过移除对分类损失影响较小的通道来删减连接到不必要输入通道的过滤器。
(3)通过在不同数据集(CIFAR-10、CIFAR-100和TinyImageNet-200)上使用不同网络架构(VGG和ResNet)的实验,证实了所提出的修剪方法的有效性。

在这里插入图片描述
从(b)中可见,剪掉前一层的filters和后一层的对应kernel,对于网络后一层的输出特征图的大小和网络的结构是完全没有影响的,所以不会改变网络最终的loss。所以我们可以剪枝掉连接到unnecessary的输出通道的kernel。
 
 

4. 方法

4.1 原理

如下:在这里插入图片描述

假设训练的优化目标函数是J(W),

其中L(·)是原有的loss,我们向损失函数中添加l2正则化项,R(Wl)是第l层中的正则化项,λ是正则化参数,用来平衡这个loss和正则化项,

结构稀疏正则化定义为式2,在这里插入图片描述
其中正则化r(·)就是取每一组的权重值的L2 norm。
在这里插入图片描述
而分层的分组稀疏正则化 r S Q ( W g l ) {\color{Blue} r_{SQ}(W_{g}^{l})} rSQ(Wgl)定义为子集正则化的平方K是一个filter里面kernels的数量。r(W)就是对每个Kernel做一个稀疏正则化。
 
 
真正写起来是这样的,在这里插入图片描述
因为像刚才说的,输入通道少了一个不会对输出特征图维度和大小产生任何影响,所以我们可以让连接到输入特征图unimportance的通道的对应filters通道为零,而对每一个filter都这么去做,就正好可以通过kernels的分组正则化去实现。那对基于特征分组的结构化稀疏正则化训练之后,就得到了一个稀疏网络,其中连接到不必要输入channel的kernel的所有权重都接近于零,那我们就可以剪枝了。然后我们再看如果这些稀疏的kernels对分类的损失影响较小,我们就直接可以剪掉了。
 

4.2 实现方法

1. Train the large network as the initial network.
 
2. Train the network with the structured sparse regularization based on the feature-wise grouping to find unnecessary filters connected to input channels.
 
3. Prune the kernels of filters with smaller influence on the classification loss.
 
4. Training from scratch.
 

解释一下,

  1. 第一步, 跟所有的剪枝方法一样,训练一个原始的大型网络。
  2. 第二步,使用基于特征分组的结构化稀疏正则化来训练网络,以通过强制不必要的滤波器的权重为零来找到连接到输入信道的不必要的滤波器。
  3. 第三步是剪掉对于分类损失影响较小的kernel组,第四步从头训练。操作起来就很像network slimming的步骤,训练好以后再加稀疏度去训,正则化以后对训练的结果去排序,从而找到哪些组的kernel影响不大,然后就是喜闻乐见的排序剪枝,最后他不是采用finetune的方式去微调,而是从头开始训练。而本文的创新点就在于提出了一个分层+分组的一个正则化方法。
  4. 第四步,从头开始训练。
     

4.3 算法

作者用一个global ranking的方法做一个全局排序,按照全局排名来自动获得修剪后的网络架构。为l层的每个输出通道引入一个二进制掩码 m c l l {\color{Blue} m_{c^{l}}^{l}} mcll,这个值在(0,1)之间,通过使用这个 mask,我们可以通过使 m i l = 0 {\color{Blue} m_{i}^{l}=0} mil=0来修剪第 l {\color{Blue}l} l 层的filter。我们search到剪枝后对模型loss增大影响最小的filter,将之剪掉。
 

  • Pruned后分类loss增加的表示为 arg min ⁡ l ∗ ∈ L c , i ∗ ∈ C l c ∣ L ( f ( s , W ) ∣ y ) + L ( f ( s , W ⊙ M ) ∣ y ) ∣ {\color{Blue} \argmin_{l^{*}\in L^{c},i^{*}\in C_{l}^{c}}|L (f(s,W)|y)+L (f(s,W\odot M)|y)|} lLc,iClcargminL(f(s,W)y)+L(f(s,WM)y),通过随机选择的训练样本评估分类损失L,通过更新 mask 并重复filter 选择算法,直到 mask 通道的数量达到我们预设的剪枝率。

在剪掉输出特征图channel时,我们也剪掉对应层后面的BN层,这样得到的网络更加紧凑。 finetuning部分, 由于19年ICML的rethinking论证了finetune和随机初始化的权重性能相差很小,也就是他提出剪枝模型网络的结构比权重更加重要,所以这篇论文加之后是从头来开始训练。
 
为了评估训练网络的稀疏性,通过把绝对值小于 1 0 − 3 {\color{Blue}10^{-3}} 103的权重设定为零来计算零权重的比率。

除了最后一层卷积层的输出信道之外,其他层的通道根据剪枝后对分类损失影响的程度剪枝。为了评估剪枝对这个loss的影响,我们总不能真的去计算真正的loss,所以用从训练样本中随机选择的128个样本去代替这个计算。
 
 

5. 实验

在这里插入图片描述

在VGG14上的实验结果
 
在这里插入图片描述
在Resnet上的实验结果

 

如上图,对于CIFAR-10,该方法能够删减85%的参数,精度下降0.53%。而且当参数剪枝率p=41%时,效果比baseline要好。在cifao10上剪到90%以上准确率都没有多少下降,很奇怪论文这里比的是2019年CVPR的sota方法,叫做FPGM,就是用几何中位数的方法去rank fIlters,把filters的绝对重要性拉到相对层面,认为与其他filters太相似的filter不重要。
 
对于CIFAR-100上的ResNet20,能剪到15%,TinyImageNet-200上,能剪到34%,效果虽然不是最好的,但是这种分层的正则化方法应该可以用在我的算法里面,。对于ResNet32和ResNet34,当剪枝率大于60%时,用该方法得到的剪枝网络的测试精度优于FPGM混合得到的网络。这些结果表明,与现有方法相比,该方法是有效的,特别是要进行深度压缩,网络需要被剪超过50%的参数时。
 
 

6. 总结

提出了一种基于特征分组的分层分组稀疏正则化的剪枝方法,属于对filters做剪枝。CIFAR-10/100和TinyImageNet200数据集的实验表明,该方法的性能优于最先进的剪枝方法。进一步概括如下:
(i)首先用分层稀疏正则化对网络进行训练。
(ii) 对分类损失加以判断,判断哪些filters对于剪枝后分类loss影响较小,采用逐步修剪,从头训练的策略。
(iii)特别是当修剪超过50%的参数时,修剪后的网络的性能优于最先进的修剪方法。


    论文地址:https://arxiv.org/abs/2011.02389;

 


      转载请标明出处,或与作者联系,否则将追究相关问题。  
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐三.

谢谢您的认可

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值