接触剪枝是最近一段时间的事情,为了全面的系统的学习一下剪枝,笔者做了个论文综述。从2016年的韩松的deep compression 到最新的彩票假设,我主要是将剪枝可以分为三个大类。分别是不需要数据参与的硬剪枝,带数据参与训练的软剪枝,以及直接搜索结构的NAS。
一:硬剪枝
这类的剪枝算法通常从模型本身的参数出发,寻找或者设计出合适的统计量来表明连接的重要性。通过对重要性的排序等算法,删除部分不重要的连接,保留下来的模型即为剪枝模型。
这类算法的核心问题在于两个方面。第一,统计量的选择,由此有很多的论文研究并实验了许多。第二,训练过程中的稀疏训练。
《D EEP C OMPRESSION : C OMPRESSING D EEP N EURALN ETWORKS WITH P RUNING , T RAINED Q UANTIZATION AND H UFFMAN C ODING》
韩松的经典论文,该篇论文集成了模型压缩的剪枝,蒸馏以及量化。在剪枝方面,韩松等人是基于权重的绝对值大小来判断重要性。至于为什么选择这个统计量,可以参考韩松的另一篇论文《DSD》
《Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration》
该文章主要提出了Geometric Median(几何中位数),基于GM的统计,去除不重要的连接。
他们选用GM的出发点是基于对权重范数剪枝的思考。
《Learning Efficient Convolutional Networks through Network Slimming》
本文提出的基于conv层之后的BN的scale参数,利用该参数来衡量连接的重要性,同时论文也提出了基于BN参数的loss正则项,约束BN scale参数,来达到更好的稀疏目的,从而得到更为准确的评价。
二:软剪枝
相比较硬剪枝的直接统计,软剪枝主要为了减少硬剪枝的效果下降,在剪枝过程中带入参数训练。这一类的方法,有的是在训练全样本的过程中剪枝同步进行,有的是基于少量的样本的采样剪枝。
《Channel Pruning for Accelerating Very Deep Neural Networks》
该文章以两步走位基调,通道选择和特征图重构迭代进行,减少剪枝带来的累积误差。同时,本文以重构损失以及LASSO regression来约束训练过程,进行通道选择。但是,本文还是严格意义上还是属于推理阶段的剪枝,它只是少量的样本参与计算过程。
《Soft Filter Pruning for Accelerating Deep Convolutional Neural Networks》
这篇文章属于训练过程肿的剪枝过程,在这篇文章中,比较有新意的提出了剪枝通道置为0而不是直接删除,并在后续的过程中依旧参与训练,最后完成时再减去。
《 PRUNING C ONVOLUTIONAL N EURAL N ETWORKS FOR R ESOURCE E FFICIENT I NFERENCE》
本文从反向传播的角度,根据泰勒展开式,提出了衡量的标准。并提出了一种贪婪算法来选择通道剪枝。
三 架构搜索
在这一部分,首先需要提到的论文应该是《RETHINKING THE VALUE OF NETWORK PRUNING》,这篇文章研究的主题是,剪枝留下的结构重要还是权重重要,文章中表明的是结构重要。但是也有研究者认为是权重重要。我觉得这个问题应该从不同的角度来思考,认为权重重要的,应该是基于训练数据不可得,时间成本大,较快得到最优结果的角度。而任务结构的,主要还是觉得模型的本身能力在于结构的一种思考。
基于结构比较重要的思想,也有很多的相应的AutoMl的思想。
《MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning》
这篇论文基于元学习的思想,通过强化学习的方式来搜索生成结构中的合适的通道数。以此来达到一个结构搜索的目的。该方法通过元学习网络生成剪枝网络,以网络来生成网络的结构和参数,从而一下子可以获得带有参数的剪枝网络。
《THE LOTTERY TICKET HYPOTHESIS :FINDING SPARSE , TRAINABLE NEURAL NETWORKS》
这篇ICLR的最佳论文,其提出的彩票假设:在一系列的子网络中(彩票),最佳的结构(获奖彩票)在随机初始化的前提下能够获得和原始网络一样的精度。文章通过设置mask来生成小网络,并通过实验验证这个假设的正确性。
当然了,还有很多的论文研究剪枝相关的方向,比如剪枝本身,也比如从剪枝引申出的训练方式的改进,等等。不管从哪个方向研究,实验证明,运用落地才是最重要的。