1. 概述
这篇文章中给出了一种叫作SFP(Soft Filter Pruning),它具有如下两点优点:
1)Larger model capacity。相比直接剪裁掉网络中的filters,再在这个基础上finetune,这篇论文中的方法将其保留,这为优化网络的表达以及任务能力提供了更多空间。
2)Less dependence on the pretrained model,采用上述的方法可使网络连续剪枝和重新练,可以从网络的训练开始就进行剪枝,不需要再训练好一个模型之后再剪枝,节省了很多时间。
使用论文中的方法使得ResNet-101节省了42%的计算量,而且top-5的错误率还获得了2%的提升!
论文地址:Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks
代码地址:soft-filter-pruning
在下面一幅图中比较了论文中给出的SFP算法与传统剪枝算法(Hard Filter Pruning)的比较。
传统减值方法中filters被删除掉了就不会继续回到网络中参与训练,需要预训练模型,剪枝之后再fintune去逼近原来的状态。这样的结构限制了网络的表达能力。相反论文中提出的方法是在训练的时候边剪枝边训练,一个epoch之后对模型剪枝,剪除的filters其内部权值全部被置为0,然后下一个epoch训练。如此往复得到最后的模型。这样做的好处是剪枝不是不可恢复的操作,网络的表达能力并没有被减小且精度得到了保障,同时网络被剪裁。
2. SFP算法
2.1 算法整体流程
下图是算法的整体流程:
在上图中对 k k k次epoch进行剪枝,检测的策略是根据 L p − n o r m L_p-norm Lp−norm进行度量,之后剪除比较小的权重(也就是filters置为0)。之后再在下一个epoch中进行迭代。
2.2 算法具体步骤
对于CNN网络中的卷积参数可以使用 W ( i ) W^{(i)} W(i)来表示,其为 W ( i ) ∈ R N i + 1 ∗ N i ∗ k ∗ k W^{(i)}\in R^{N_{i+1}*N_i*k*k} W(i)∈RNi+1∗Ni∗k∗k,代表第 i i i个卷积层的卷积参数矩阵, N i N_i Ni代表第 i i i个卷积的feature map数量, k k k代表卷积核的尺寸。那么对应的第 i i i层的feature map为 U U U,空间尺度为 N i ∗ H i ∗