原文链接:https://arxiv.org/pdf/1903.10258.pdf 发表:ICCV2019
code: https: //github.com/liuzechun/MetaPruning
编辑:牛涛
本论文将剪枝与AutoMl结合,根据此前《Rethinking the value of network pruning》提出的重要的是结构而不是继承的参数,想到为啥不直接生成网络结构呢。
如很多论文所描述,剪枝大概可以写为如下公式

其中ci表示每层的剪枝率,C表示剪枝后网络的约束,比如Flops或时延。
所谓的声称网络结构的网络如下图示意

输入即为编码后的vector,通过block后生成本层参数向量,重新reshape后得到最终的网络参数。每个block的结构如下:

每次抽取一个batch验证生成网络的性能,将loss用于更新上图中的FC而不是Conv。(Conv只由FC生成)
但是这个网络只是生成权重,网络结构是由vector给的,所以采用遗传算法自动搜索这个最好的网络结构。

遗传算法伪代码如上,初始化随机生成一堆结构。
然后每次迭代中,首先验证结构的性能,然后对top-k个进行变异和交叉,把新得到的作为下一个epoch的初始化,重复上述步骤。最后把top1拿出来作为最优结构。
对于普通链式网络直接搜索就好了,对于resnet这种残差结构,采用如下图的方式

保证每个residual block的输入输出channels不变。(但是这样不就相当于对最后一个卷积层剪得个数加以限制了吗,并不是很好的解决方案)