论文地址:Learning Efficient Convolutional Networks through Network Slimming
这篇论文是在2017年的ICCV发表的,可以看做是之前讲过的channel pruning方法的变种,但是更加简单有效。
简单来说,这篇论文的剪枝方式是,给每个通道加上权重,在训练的过程中使用L1正则化对通道权重进行稀疏化,然后对于最终通道权重低于阈值的通道剪枝,最后重新训练得到剪枝模型。论文非常聪明的就是对batch normliization(BN)层的 γ \gamma γ参数进行L1稀疏化,所以很容易就能加入到现有网络架构中,并且很少损失精度。接下来就详细叙述该方法。
方法
之前的channel pruning方法需要计算所有卷积核的额外的正则化梯度,容易造成非平凡解,所以该论文提出了对每个通道引入 γ \gamma γ作为比例因子,以乘积的方式应用到通道中;然后同时训练网络权重和这些比例因子,并且使用稀疏正则化对比例因子进行选择;最后剪枝掉 γ \gamma γ值比较小的通道并且重训练剪枝后的网络。如图所示:
当一个通道被剪枝后,前一层和后一层中与其相关的通道和卷积核都会被移除,这样就得到了一个窄网络。
目标函数为:
L = ∑ ( x , y ) l ( f ( x , W ) , y ) + λ ∑ γ ∈ Γ g ( γ ) L = \sum_{(x,y)}l(f(x,W),y) + \lambda\sum_{\gamma \in \Gamma}g(\gamma) L=(x,y)∑l(f(x,W),y)+λγ∈Γ∑