DMCP
2020-CVPR-DMCP Differentiable Markov Channel Pruning for Neural Networks
- Shaopeng Guo(sensetime 商汤)
- GitHub: 64 stars
- https://github.com/zx55/dmcp
Introduction
本文提出DMCP(可微分的通道剪枝)来高效地搜索子空间。
Motivation
通道的修剪可以视为从未修剪的网络中搜索最佳的子结构(网络剪枝得到的子结构比继承的权重更重要)
之前的工作需要训练和评估很多子结构,开销大
卷积网络的剪枝主要依靠手工设计的范式(重要性指标)
剪枝后网络的结构对性能的影响更大,而不是所继承的”重要“权重
之前的(搜索子结构)的剪枝方法需要训练和评估大量的网络,因此可扩展性(修剪不同大小的网络)受到限制
在NAS中也有类似的问题,已经被可微分方法DARTS解决了
ps 与DATRS的区别
第一,搜索空间的不同。DARTS的搜索空间是一些预定义的操作,而我们的搜索空间是不同层通道的数量
第二,DARTS中的操作时互相独立的(比如两个node的连接之间的不同操作,卷积,池化,互不影响),但通道剪枝中,如果一层有k+1个通道,那么它首先要有k个通道。
Contribution
我们通过将模型剪枝建模为马尔科夫过程,从而使之可以微分
Method
DMCP中,我们将通道剪枝视为markov(马尔科夫)过程,剪枝中的markov状态(state)代表是否保留相应的通道,状态之间的转移视为剪枝的过程
每一层为一个马尔科夫过程,状态 \(S_k\) 表示保留第k个通道。状态 \(S_k\) 到 \(S_{k+1}\) 的转移代表保留第k+1个通道的概率
\(S_1\) 是起始状态,即每层都至少有1个通道
因此,第k个状态(保留第k个通道)的边缘概率=之前所有转移概率的乘积,可以视为第k个通道的放大系数
前向过程中,每个通道的feature map 乘以 该通道对应的 边缘概率(放大系数)
因此可以通过对目标loss 和 代价loss(FLOPs loss)的梯度下降,来end to end地优化 不同层,不同通道的转移概率
优化完成后(即网络中每一层的转移概率/边缘概率 可以抽样出符合FLOPs限制的网络了),进行采样子网络并从头开始训练
(1)优化剪枝空间
(2)建模剪枝过程
(3)学习转移概率
(\(p_k\) 是转移概率,\(p_{w1}\) 是边缘概率)
(4)训练流程
Experiments
Conclusion
Summary
Reference
【CVPR 2020 Oral丨DMCP: 可微分的深度模型剪枝算法解读】https://zhuanlan.zhihu.com/p/146721840
【Soft Filter Pruning(SFP)算法笔记】https://blog.csdn.net/u014380165/article/details/81107032