内容简介:这篇文章的主要观点在于想纠正人们之前的认识误区。当然这个认识误区和DL的发展是密不可分的。DL中最先提出的AlexNet是一个很大的模型。后面的研究者虽然也在不断发明新的网络结构(如inception,Global Pooling,ResNet等)来获得参数更少更强大的模型,但模型的size总还是很大。既然研究社区是从这样的“大”模型出发的,那当面对工程上需要小模型以便在手机等移动设备上使用时,很自然的一条路就是去除大模型中已有的参数从而得到小模型。也是很自然的,我们需要保留大模型中“有用的”那些参数,让
这篇文章 是ICLR 2019的投稿文章,最近也引发了大家的注意。在我的博客中,已经对此做过简单的介绍,请参考 论文总结 - 模型剪枝 Model Pruning 。
这篇文章的主要观点在于想纠正人们之前的认识误区。当然这个认识误区和DL的发展是密不可分的。DL中最先提出的AlexNet是一个很大的模型。后面的研究者虽然也在不断发明新的网络结构(如inception,Global Pooling,ResNet等)来获得参数更少更强大的模型,但模型的size总还是很大。既然研究社区是从这样的“大”模型出发的,那当面对工程上需要小模型以便在手机等移动设备上使用时,很自然的一条路就是去除大模型中已有的参数从而得到小模型。也是很自然的,我们需要保留大模型中“有用的”那些参数,让小模型以此为基础进行fine tune,补偿因为去除参数而导致的模型性能下降。
然而,自然的想法就是合理的么?这篇文章对此提出了质疑。这篇论文的主要思路已经在上面贴出的博文链接中说过了。这篇文章主要是结合作者开源的代码对论文进行梳理: Eric-mingjie/rethinking-network-pruning 。
FLOP的计算
代码中有关于PyTorch模型的FLOPs的计算,见 compute_flops.py 。可以很方便地应用到自己的代码中。
ThiNet的实现
实验比较
结论
几个仍然有疑问的地方:
-
作者已经证明在ImageNet/CIFAR等样本分布均衡的数据集上的结论,如果样本分布不均衡呢?有三种思路有待验证:
- prune模型需要从大模型处继承权重,然后直接在不均衡数据集上训练即可;
- prune模型不需要从大模型处继承权重, 但是需要先在ImageNet数据集上训练,然后再在不均衡数据集上训练;
- prune模型直接在不均衡数据集上训练(以我的经验,这种思路应该是不work的)
-
prune前的大模型权重不重要,结构重要,这是本文的结论之一。自动搜索树的prune算法可以看做是模型结构搜索,但是大模型给出了搜索空间的一个很好的初始点。这个初始点是否是任务无关的?也就是说,对A任务有效的小模型,是否在B任务上也是很work的?
-
现在的网络搜索中应用了强化学习/遗传算法等方法,这些方法怎么能够和prune结合?ECCV 2018中HanSong和He Yihui发表了AMC方法。
总之,作者用自己辛勤的实验,给我们指出了一个”可能的”(毕竟文章还没被接收)误区,但是仍然有很多乌云漂浮在上面,需要更多的实验。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ACL 2020:微软摘得最佳论文,Bengio论文获时间检验奖,大陆论文量第二
- AAAI 2019 四个杰出论文奖论文揭晓
- NAACL 2019最佳论文揭晓,谷歌BERT获最佳长论文
- ICML 最佳论文提名论文:理解词嵌入类比行为新方式
- 论文 | 解读72篇DeepMind深度强化学习论文(内有合集下载)
- [Github推荐]CVPR2019录用论文下载及可视化论文网站
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序设计方法(中文版)
Matthias Fellisen / 黄林鹏、朱崇恺 / 人民邮电出版社 / 2003-12 / 49.00元
《程序设计方法》以Scheme语言为基础介绍计算和程序设计的一般理论和实践。《程序设计方法》由8个部分和7个独立的章节(第8、13、18、24、29、33、38章)组成。8个部分主要讨论程序设计,独立章节则介绍一些与程序设计和计算相关的话题。《程序设计方法》第1至第3部分介绍了基于数据驱动的程序设计基础。第4部分介绍了程序设计中的抽象问题。第5部分和第6部分是与递归及累积相关的内容。《程序设计方法......一起来看看 《程序设计方法(中文版)》 这本书的介绍吧!