本文主要是介绍【模型裁剪】——Rethinking the Value of Network Pruning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
论文:https://arxiv.org/pdf/1810.05270.pdf
code:https://github.com/Eric-mingjie/rethinking-network-pruning
转载自:https://blog.csdn.net/zhangjunhit/article/details/83506306
网络模型裁剪价值的重新思考
当前的深度学习网络模型一般都是 heavy computational cost,如何降低其计算量而尽可能保持网络性能是一个重要的研究课题。
标准的模型裁剪三部曲是:1)训练一个 large, over-parameterized network,得到最佳网络性能,以此为基准;2)基于一定的准则来裁剪大网络模型;3)在数据集上微调裁剪后的网络模型
在这个裁剪的过程中,存在两个 common beliefs:
1)一般认为一开始训练一个 large, over-parameterized network 是很重要的,以大模型的性能为基准进行裁剪,一般认为这个方式比从头训练一个小模型的方式是更好的。
2)一般认为裁剪后的网络模型结构及其参数权重都很重要。所以目前大部分方法都是在裁剪后的模型上进行微调,The preserved weights after pruning are usually considered to be critical
本文经过大量实验得出了两个较意外的结论:
1) 如果我们的目标小模型是事先确定的,那么可以直接在数据集上训练此模型,得到的性能是最佳的,不比微调的性能差
First, for pruning algorithms with predefined target network architectures (Figure 2), directly training the small target model
from random initialization can achieve the same, if not better, performance, as the model obtained from the three-stage pipeline. In this case, starting with a large model is not necessary and one could instead directly train the target model from scratch。
2)对于目标模型不是事先确定的情况,从头开始训练裁剪后的模型,其得到的网络性能也是最好的,不比微调的差。
for pruning algorithms without a predefined target network, training the pruned model from scratch can also achieve comparable or even better performance than fine-tuning. This observation shows that for these pruning algorithms,
what matters is the obtained architecture, instead of the preserved weights,
总结
- 该文章的主要思路是:剪枝相当于一种模型搜索,同时也用实验证明了,剪枝后的模型架构如果从0开始训练,能达到和剪枝模型一样的精度。
- 但是,剪枝+微调的路线,可以在只训练一个模型的情况下,通过剪枝+微调能得出多个小模型,如果从0开始训练,那么多个模型之间没有任何联系,都需要从头训练,耗时严重。所以剪枝技术还是有用的。
这篇关于【模型裁剪】——Rethinking the Value of Network Pruning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!