【论文阅读笔记】Rethinking the value of Network Pruning

论文地址:https://arxiv.org/abs/1810.05270

论文总结

  论文的中心思想其实就一句话:在通过Prune算法得到了压缩模型后,使用来自大网络的权重进行fine-tune,还不如直接随机初始化训练压缩模型。但需要注意的是,随机初始化训练压缩模型,需要比训练大模型使用更多的epochs,才能获得更好的效果。

论文摘要

  作者通过数个网络和数据集的prune 测试,得到了三个观察和结论:

  1. 如果有一个确定的“压缩”模型,训练一个大网络不是必要的;
  2. 在prune算法中,我们所认为“重要”的权重,其实对裁剪的小模型来说,并不是那么有用;
  3. 对于最终的压缩小模型来说,通过prune算法得到的网络架构,比通过prune得到的“重要”的权重更加重要。

  并得出一个最终结论:对于SOT的剪枝算法而言,使用裁剪的权重来fine-tune只能得到类似的或者更差的效果;对于通过剪枝算法得到的特定网络模型,可以直接随机初始化训练,而不用经历传统的裁剪管道(训练大网络,裁剪出权重,finetune小网络)。

  同时,作者对彩票假说(Lottery Tickety Hypothesis)进行了对比,发现使用所谓最佳学习率的“中奖彩票”初始化,并未必随机初始化有更好的结果。

论文介绍

  传统的prune算法有三个通道:(1)训练一个大模型;(2)按某指标来裁剪一个训练好的大模型;(3)finetune裁剪模型以获得因prune而损失的性能;
  在传统的prune观念中,有两个“通识”:(1)训练大模型是必要的,可以从大模型中无损裁剪。一系列工作认为从大模型变小模型,要比直接训练一个小模型要好;(2)裁剪下来的权重和网络架构都是重要的。所以,裁剪算法大都会选择fine-tune而不是重头训练它。
  本文提出,对于结构化裁剪,上述观点都不重要。对于统一裁剪(使用百分比,在每个layer上都裁剪百分比的channal数)的小网络,也是随机初始化重头训练效果来得好;对于使用Prune算法自动获得模型结构的小网络,仍需一个较大网络,最后随机初始化训练比较好。
  但对于非结构化裁剪(权重系数化等),从头训练并不能达到较好的效果。

  同时,作者认为,通过prune算法裁剪出来的模型可以为设计高效网络架构提供设计指导。

  (文章内容外)相关技术中,Zhu & Gupta(2018)提出,小而密集的网络(small-dense model)在相同的内存占用时,并不能达到和大而稀疏的网络(large-sparse model)一样的准确度。体现了prune的重要性。

论文实验

  Scratch-E,训练所有prune的小模型使用相同的epochs;Scratch-B,使用相同的计算预算,即小模型使用更多的epochs训练,以保证相同的训练计算量。

Predefined structure pruning

  即预设裁剪方法,按照某种指标,在每一层裁剪相同比例的channel。

  在三种预设裁剪方法的实验上,Scratch 的结果都要比finetune要好。

   L 1 L_1 L1-norm base Filter Pruning,在每层中,确定百分比的较小 L 1 L_1 L1-norm的filters将会被裁剪。结果如下图所示:基于Scratch的结果,至少都达到了与fine-tune一样的效果;基于Scratch-B的结果要比fine-tune的要好一截。

  ThiNet,贪婪地裁剪掉对下一层激活值影响最小的channel。结果显示:Srcath-B都比fine-tune要好。对于VGG-Tiny模型而言,Scratch-E效果不好,可能是因为裁剪太多了,Scratch-E没有获得足够的训练计算量。(表中的数字表示为与unprune model的差距)

  Regression based Feature Reconstruction,裁减掉最小化下一层feature maps重构误差的channel,其采用LASSO回归,解决优化方法。结果显示:

Automatic Structured Pruning

  自动结构裁剪方法,即通过prune算法得到网络结构。

  Network Slimming,使用L1稀疏化BN层的scale factor,得到跨layer之间的channel 比较,以产生channel-wise的prune。结果显示:在大部分实验中,Scratch-B都比fine-tune要好;Scratch-E略微差一点,但仍在偏差之内。

  Sparse Structure Selection。prune的对象除了channel,也可以是ResNet的block,ResNeXt的group。结果显示:

非结构化裁剪

  在裁剪率较高(95%)的时候,Scratch-E离finetune有一些距离,Scratch-B至少和finetune一样。

网络裁剪可以作为网络结构搜索的一种方式

  作者通过实验证明了:使用相同的训练策略,通过prune得到的网络,达到和统一百分比prune的网络一样的准确率,至少可以减少5倍的参数量

  但在一些模型上,prune算法也存在prune算法得到的网络并不比统一prune得到的网络好的情况。这更多发生在ResNets和DenseNet上这些结构,这些结构各层的稀疏度和统一百分比prune有些类似。这可能是统一prune和prune算法表现相同的原因。(看数据集和任务,个人使用network slimming方法在pose检测上,效果比统一prune要好)

从prune得到的网络结构中获得模型设计指导

  下图中,Guided pruning是prune moel在每个stage(相同大小的feature map)上channel的均值作为模型建立的基础;Transferred Guided pruning是在另一个网络VGG-16在另一个数据集CIFAR-10上得到的Guided pruning模型指导放在VGG-19在CIFAR-100上的模型。
  下图左是结构化裁剪,下图右是非结构化裁剪。结果显示:就算是Transformed Guided Pruning都要比统一裁剪来得好,这表明我们可以不通过训练大模型来获得efficient model,我们也可以通过transfermed design pattern来获得。

彩票假设的实验

  结论:在结构化剪枝上,不管使用大lr还是小lr,“中奖彩票”初始化都不比随机初始化要好;在非结构化剪枝上,“中奖彩票”初始化所带来的的优势只存在于小lr上,但准确度不如大lr训练出来的精确。

  非结构化剪枝:“中奖彩票”只在 l r = 0.01 lr=0.01 lr=0.01时带来收益,但比 l r = 0.1 lr=0.1 lr=0.1要差。

  结构化剪枝:“中奖彩票”并不会比随机初始化要有更高的收益。

  中奖彩票不能在ResNet18和VGG上使用大学习率。在较小学习率的时候,原始的初始化是由帮助的,这可能是因为lr较小时,学到的模型与初始化并不远,较为类似的原因。

猜你喜欢

转载自blog.csdn.net/qq_19784349/article/details/107202447