百科问答小站 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 网友的相关建议: 
      

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

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

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

个人愚见。




  

相关话题

  经过足够长的时间, AlphaGo 的棋谱能收敛到一张上吗? 
  如何评价 Exploring Simple Siamese Learning? 
  如何评价Momenta ImageNet 2017夺冠架构SENet? 
  什么是大模型?超大模型?Foundation Model? 
  在算力充沛,深度学习模型大行其道的今天,传统机器学习的未来在哪里? 
  谈谈机器学习在网络安全领域的局限性,以及是否乐观? 
  如何开发一个自己的 TensorFlow? 
  下一代 AI 框架长什么样? 
  学习SLAM需要哪些预备知识? 
  Batch Normalization 训练的时候为什么不使用 moving statistics? 

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





© 2024-12-31 - tinynew.org. All Rights Reserved.
© 2024-12-31 - tinynew.org. 保留所有权利