百科问答小站 logo
百科问答小站 font logo



为什么要压缩模型,而不是直接训练一个小的CNN? 第1页

  

user avatar   simonxdong 网友的相关建议: 
      

很多人都提到了 Lottery 和 Rethinking 这两篇文章

,确实,这两篇文章扎实的实验给了很多非常有趣的结论。


要理解这个问题,这两篇文章绝对是不可不说的!


看了下大家的回答,其实这个问题可以这么去概括一下。

Lottery 这篇文章最重要的结论是:

一个网络,我train到收敛,然后我剪枝,剪枝之后呢,我把那些还没有被剪的参数重新初始化到刚开始初始化的样子,然后再train,发现效果还挺好,有时候甚至更好。

其实,Rethinking 这篇文章也是差不多的结论,只是有一点不同:

剪枝之后,Lottery 要把未被剪的参数重新变成之前初始化的样子,而 Rethinking 则更简单一些,不需要变成之前初始化的样子,你随便再随机初始化也是一样的。

有人说这两篇文章是矛盾的,但是我觉得其实并不矛盾,因为两篇文章其实都在揭示一个重要的点,那就是 pruning 的真正作用也许是在发现更好的(稀疏)结构,而不是在参数上。

后来 Rethinking 的作者 @刘壮 也在这个回答里面做了回应zhihu.com/question/3232,发现是其实这个结论不同其实是因为 learning rate 不同。考虑到 deep learning 本来就是有太多细小而且难以解释和把握的变量,我们这里可以认为:

是否重新变成之前初始化的样子其实影响不大。


好了,到这里两篇 paper 基本上是可以达成共识了,我们来总结一下

  1. 对于结构化剪枝,剪枝看起来就是真的没啥必要了。因为结构化剪枝,剪掉的filter,那就是真的剪掉了,可以完全不考虑。
  2. 对于非结构化剪枝,剪枝既没用也有用。说没用:根据我们前面的分析,继承或者不继承剪枝前或者初始化时的参数其实影响不大,所以我们只需要从头开始训练一个稀疏网络就行了(见 @雨宫夏一 的回答);说有用:因为非结构化剪枝里面,剪掉的参数实际上是被置成了0 。但是,0 也算参数,其实也能 somehow 有点贡献。

如果你 train 两个网络,一个网络是不稀疏的网络,另外一个网络是稀疏网络,让两个网络的 非零 参数的数量一样,很明显稀疏网络要好一些。但是这么比较其实不公平,因为后者的参数量其实更多(0也算参数)。其他回答中之所以有一定争议,其实是因为本身这个问题有多种角度去看:

  • 继承参数是否有意义? (这个问题上面两篇文章已经回答了,意义不大)
  • 继承结构是否有意义?
  • 稀疏化的结构本身是否有意义?

后面两个问题还需要更多的实验来看。


user avatar   chen-jia-yu-65-36 网友的相关建议: 
      

模型压缩的最终目的是得到更小性能更好的小模型,之所以不直接训练一个小模型,是因为之前的已有技术没办法让小模型得到好的性能。

模型压缩的方式,本质上是去冗余,也就意味着大多数时间资源都花费在最终不需要的部分,如果能够直接训练小模型得到更好的性能,当然是再好不过了。

通过最近几年的一些发展,有一些成熟的方法,可以直接训练小模型得到好的性能。

最近NetAug就明确提出,小模型是欠拟合的,需要网络增强技术提升性能(大模型相反,大模型过拟合,需要正则化)。

Large Model vs Tiny Model

NetAug指出大模型过拟合,需要通过dropout等正则化技术和数据增强来提升精度;而小模型是欠拟合的,需要增强网络技术,正则化技术对小网络是有害的。

如上图所示ResNet50(大模型)正则化后,精度都有所提升,NetAug会掉点;而MobileNetV2-Tiny(小模型)正则化会掉点,NetAug会提升精度。

Constructing Augmented Models

如左图所示,构建一个最大的增强模型(包含需要的小模型,参数共享),其他增强模型从最大增强模型中采样。这种参数共享构建supernet的方式,之前在one-shot NAS中非常流行,详细可以看我之前的文章:NAS: One-Shot

如右图所示,NetAug通过调整width构建其他增强模型,比起通过调整depth构建增强模型,训练开销更小。构建增强模型引入augmentation factor r和diversity factor s两个超参数,假设我们需要的小模型其中一个卷积宽度是w,最大增强模型的卷积宽度就是rxw,s表示从w到rw宽度之间等间距采样s个增强模型卷积宽度。比如r=3,s=2,那么widths=[w, 2w, 3w]。

训练阶段,NetAug在每个step采样一个增强模型进行辅助训练。NetAug训练额外开销相比baseline增加了16.7%,推理额外开销为0。

Effectiveness of NetAug for Tiny Deep Learning

可以看到,NetAug和KD是正交的,可以在KD基础上继续提升性能。

在流行的小模型和NAS模型基础上,NetAug可以继续提升性能,但是对于大模型(ResNet50)来说,NetAug是有害的。

上图清晰的揭示了本文提出的结论,小模型欠拟合,NetAug可以提升性能;大模型过拟合,NetAug是有害的。

总结

NetAug vs OFA

NetAug和之前的OFA非常相似,OFA先构建一个大模型,然后训练这个大模型,最后通过搜索的方式得到小模型。

从上表可以看到,在OFA搜索得到模型的基础上,NetAug还可以继续提升性能,也验证了NetAug可以进行网络增强的作用。

OFA和NetAug其实是一体两面:一个是自上而下通过supernet搜索最好的子网络,另一个是自下而上通过supernet辅助训练小网络。一个是终点未知,找最优终点(类似搜索);另一个是终点已知,增强终点性能(类似动态规划)。

OFA的问题在于,大量的时间资源花费在可能跟最终目的无关的子模型上,而NetAug的优势在于,已知想要的小模型,通过supernet来提升小模型的精度。

小模型欠拟合,需要增加而外的监督信息(NetAug、KD、multi-task learning);大模型过拟合,需要正则化。

NetAug和KD的差别在于,KD是通过outer network来辅助训练(提供信息),而NetAug是通过inner network来辅助训练(共享参数)。

至此,小模型可以通过NetAug、KD、multi-task learning三种技术增加额外的监督信号,对小模型进行网络增强。无论是模型压缩还是直接训练小模型,只要能得到更小更好的小模型,就达到目的了。

Reference

1.NAS: One-Shot

2.ONCE-FOR-ALL: TRAIN ONE NETWORK AND SPE- CIALIZE IT FOR EFFICIENT DEPLOYMENT

3.NETWORK AUGMENTATION FOR TINY DEEP LEARNING


欢迎关注 Smarter ,构建CV世界观,输出优质内容

欢迎加入Smarter交流群,添加微信「cjy094617」,备注「学校-方向」即可


user avatar   nameoverflow 网友的相关建议: 
      

女王:求求题主放过我,我可不敢有什么政绩。。。


user avatar   bearbee-2 网友的相关建议: 
      

克劳备忘录也好,凯南电报也好,有两大共同点。首先,都是以现实主义的眼光去分析双方的关系。然后,给出的建议都是阳谋,并不是什么不可告人的阴谋,执行起来需要的不是鸡鸣狗盗的小聪明,而是惊人的意志力。

而美国现在战略界现实主义被边缘化,我推测,布热津斯基,基辛格那帮人应该写过不少。不过没所谓,美国能执行大战略的时代过去了。现在这一代精英上半年能管下半年就已经很了不起了。一个需要两代人以上持之以恒去完成的大战略,搞出来他们也执行不了。

冷战时期,从杜鲁门艾森豪威尔到肯尼迪尼克松,最后到李根老布什,个人性格和政治偏好差距不要太大,但是都忠实地完成了他们历史任务,沿着围堵政策做下去。这种战略定力和延续性,世间少见。在中国领导集团上能看见一些相似的东西,但是我们离得距离太近,反而看不清。但在美国精英层身上完全看不到这一点。

个人愚见。




  

相关话题

  2018年了,MXNet 发展的如何了? 
  如何用FPGA加速卷积神经网络(CNN)? 
  马上计算机研一,想问一下机器学习、深度学习…大家都是怎么入门的? 
  为什么现在很多人不看好商汤科技? 
  能否使用神经网络来判断奇偶数? 
  nlp有哪些值得完整实现一遍的算法? 
  深度学习中有哪些数据增强方法? 
  如何评价 Exploring Simple Siamese Learning? 
  Transformer在工业界的应用瓶颈如何突破? 
  国内哪些公司在用caffe、torch、TensorFlow、paddle等框架,哪些在用自研框架? 

前一个讨论
如何评价Hinton组的新工作SimCLR?
下一个讨论
神经网络中的能量函数是如何定义的?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利