与上篇对卷积核进行剪枝不同,本篇论文主要是对特征通道进行剪枝。
Introduction
其实这一篇论文的立意和上篇类似,都是说在剪枝后不需要产生稀疏网络,不同的是,该篇论文是剪枝的冗余的特征通道来达到目的。其剪枝方法是:对于一个训练好的网络,通道剪枝是通过最小化其剪枝前后的输出特征图之间的重建误差来完成的:首先是进行通道选择和特征图重建,在该过程中使用LASSO回归找到冗余的特征图并剪枝;然后使用最小二乘优化对剩余的特征通道进行输出重建。
方法
该论文首先对单层卷积层剪枝方法进行说明,然后是多层和多分枝网络的剪枝。
公式
上图是文章所提出的通道剪枝算法在单层卷积层的示意图。该算法的目的就是减少特征图B的通道数的同时保持C的输出尽量不变。一旦B中有通道被剪枝了,对A层进行卷积的相应卷积核(图中标记为虚线的卷积核)也会相应移除,以及对B层进行卷积的卷积核的相应通道也会被移除。所以,通道剪枝包括两点:首先是通道选择,因为需要选择合适的通道组合以保留丰富的信息;然后是重建,需要使用选择的通道对下一层的输出进行重建。
文章首先以最简单的卷积示例来说明文章提出的算法:
对于一个大小为 [ n × c × k h × k w ] [n \times c \times {k}_h \times {k}_w] [n×c×kh×kw]的卷积核W、 [ N × c × k h × k w ] [N \times c \times {k}_h \times {k}_w] [N×c×kh×kw]的输入特征图X和 [ N × n ] [N \times n] [N×n]的输出矩阵Y,其中N是batch size、c是输入通道、n是输出通道、kh和kw是卷积核宽高。为了剪枝输入通道c到目标c’( 0 ≤ c ′ ≤ c 0 \leq c' \leq c 0≤c′≤c)的同时最小化重建误差,目标方程定义为:
其中||·||F是Frobenius norm,Xi是属于X第i个通道的维度为 N × k h k w N \times {k}_h{k}_w N×khkw的矩阵(i = 1,…,c),Wi是属于W的第i个通道的大小为 n × k h k w n \times {k}_h{k}_w n×k