模型压缩的目的是减小模型计算量(FLOPs or MACC)、减小模型参数量/体积、减小模型的推理时间(latency)。主要方法有知识蒸馏、紧凑网络设计、剪枝、量化、低秩近似等。今天分享一篇通道剪枝相关的论文。商汤出品,CVPR 2020 Oral。
论文传送门:http://arxiv.org/abs/2005.03354v1
商汤官方解读:https://zhuanlan.zhihu.com/p/146721840
Introduction
CNN是过参数化的,通道剪枝可以加速和压缩模型,去除不重要的通道使得模型更加高效、紧凑。通道剪枝可以被视为在原始网络中寻找一个最优的子结构的问题。典型的剪枝程式:预训练大模型 - 通道/权重剪枝 - 微调小模型。有一篇论文指出,剪枝后的模型结构是其性能表现的核心因素,而不是继承的所谓的重要的权重。这一发现表明通道剪枝的本质是找到良好的剪枝结构,即逐层通道数目。
搜索空间很大,如何高效的搜索?本文提出了DMCP,给定限制条件下可以端到端优化的通道剪枝算法。作者将通道剪枝建模为一个马尔可夫过程,马尔可夫过程中的状态
Related Work
神经网络结构搜索(NAS):一种与此相似的技术是NAS,例如DARTS。DARTS使用一组可学习的权重来设置每个候选操作的概率的参数,层的输出是概率和相应操作的特征图的线性组合。训练后,选择概率最高的候选操作构成最终架构。但是,DARTS是在小型代理任务上执行,然后将搜索到的结构迁移到大规模目标任务上。ProxylessNAS 通过仅采样两条路径来搜索大规模目标任务上的体系结构,从而避免了使用代理任务。但是DARTS中提出的可微方法并不能直接应用在剪枝过程中,原因在于:两者的所搜空间是不同的、DARTS总的各个操作是相互独立的而剪枝中存在一些隐含的逻辑关系。
通道剪枝:可以被分为硬剪枝(直接去除通道)和软剪枝(通道系数设置为0)。硬剪枝方法间的差异存在于剪枝标准的不同,例如权重标准,输出中零的平均百分比或每个通道对最终损失的影响。比如一种做法是采用BN中的比例因子作为通道重要程度的度量,稀疏训练后去除相对不重要的通道。软修剪方法主要是使修剪的通道为零或接近于零,以减少这些通道的影响。比如一种做法是首先通过层内准则和计算的层比率将一些滤波器置零,然后会逐渐增加置零的滤波器的比例,直到达到给定的计算预算为止。本文的方法可以归为软剪枝,与别的方法相比,本文方法最大的区别在于简化了搜索空间:
Method
本文将通道剪枝建模为马尔可夫过程,如上图所示,这是一个有向无环图。状态