Rethinking the Value of Network Pruning_ICLR2019

近期本小白在公司实习,组内有写paper reading的优良传统,一来自己总结,二来便于大家交流。感觉这个习惯非常好,于是乎想了想干脆同步发到自己博客上来,便于以后自己整理。

 

URL: https://arxiv.org/abs/1810.05270

code:https://github.com/Eric-mingjie/rethinking-network-pruning

TL;DR
这篇文章不同于大多数提出新方法的模型压缩文章,作者对先前众多论文中用到的先修剪再微调的channel pruning方法进行深入研究之后,提出了一些重要的发现。
1)训练一个较大的、过参数化的模型对于得到一个最终的高效模型不是必须的;
2)学习大模型中的重要weights对于所得到的轻量化模型并没有作用;
3)修剪所得到的模型架构才是至关重要的,而不是所保留的原始参数,这在某种程度上可以视为一种隐式模型架构搜索。

Method
为了验证自己的结论,作者设计了一系列的验证策略,另外针对不同的模型修剪方法制定了对应的策略,主要针对预定于目标架构的修剪方法、自动架构修剪和非结构化的架构修剪。
为了对比的严谨性,作者尽量按照原论文中公布的参数配置进行实验;同时对于从头开始训练的模型,由于模型变得更加轻量化,作者制定了保留原有epoch数和epoch数加倍这两种策略。

Experiment Detail
作者进行了大量的验证实验,并且专门写了一章和同时间段提出的模型修剪方法“Lottery Ticket Hypothesis”进行了对比,这一波着实有点刚,后来“Lottery Ticket Hypothesis”获得了best paper,看来是没刚过,不过这两篇论文同时都中了ICLR2019。 

作者在论文中对比了之前很多论文中提出来的方法,几乎把原有的模型修剪方法怼了个遍,其中还包括作者自己在ICCV17上提出的方法,果然大佬狠起来,连自己都害怕。

以下是对比实验结果。

Rethinking the Value of Network Pruning_ICLR2019_第1张图片

Rethinking the Value of Network Pruning_ICLR2019_第2张图片

Rethinking the Value of Network Pruning_ICLR2019_第3张图片

Rethinking the Value of Network Pruning_ICLR2019_第4张图片

Rethinking the Value of Network Pruning_ICLR2019_第5张图片

作者通过对比实验得出结论:
1)对于有预定义的目标网络架构的结构化修剪方法,直接训练一个小网络可以达到先修剪再微调后相同甚至更好的效果(只是可能需要训练更多的epoch来实现收敛); 对于自动发现目标架构的结构化修剪方法结论同样成立
2) 从大模型继承权重不一定是最优的,并且可能会使得模型陷入不良的局部最小值,即使这些权重是被修剪标准视为是重要的。自动化结构修剪算法的价值在于识别有效结构并进行隐式架构搜索。对于大多数的结构搜索方法而言,这个相当于搜索每一层的channel数

Thoughts
这篇论文的作者实验过程中发现了模型修剪过后,微调得到的效果和重新从头训练几乎相同,于是便做了多组实验证明这一结论,推翻了包括自己的方法在内的很多方法,提出对参数修剪的一个新的认识:参数修剪的实际作用在于得到架构而非权值。这一观点确实令人眼前一亮,有利于大家后续更好地设计压缩方法。另外作者也承认小模型不像大模型那样容易收敛,从头开始训练可能需要更多的epoch或者其他的训练条件,如果已经有训练好的大模型的话,还是直接压缩来的快。

 

你可能感兴趣的:(深度模型压缩)