论文链接:https://arxiv.org/pdf/2003.04566.pdf
动机:
现在压缩工作中,通过预定义的度量(metric)计算出的阈值进行模型剪枝,这种阈值忽略了不同层的变化和权值分布的不同,所以这种剪枝方法通常过剪枝和欠剪枝得到一个次优的结果。本篇论文中,作者提出了一个方法:最优阈值(OT,Optimal Thresholding),每层剪枝使用不同的阈值。通过使用OT,保证精度的同时,可以有效减掉那些不重要的通道;
方法:
Training with Sparsity
图2是个典型的剪枝过程,在图2中,作者首先要解决稀疏约束问题:
L,R,Θ分别是loss函数,用于稀疏的回归项,和训练参数。回归项用于减少模型尺寸约束的复杂度,计算和内存消耗。使用L1回归在bn层的scaling factors上,
Γ是scaling factor是的集合,λ控制稀疏的程度,|r|即为L1正则化,r是BN层参数scaling factor;
- Distribution of Scaling Factors
为了解决过剪枝和欠剪枝问题,网络层不同的分布也是一个预定义阈值的问题。拿VGG-14的第7和第10个bn层,重要权值的分组不是一致的;通过使用一个全局阈值,对于数值较小的scaling factors而言,属于一个灾难。例如作者想使用NS【14】剪枝73%,计算阈值很合适第7层BN层,但是对于第10层BN层而言就是过剪枝了。
在图4中,作者就展示了VGG-14的第八层scaling factors,
Optimal Thresholding for Pruning
作者发现可以忽视的scaling factors都比较小,权值平方和也比那些重要的scaling factor小;所以作者使用scaling factors的平方和大小作为判断scaling factors是否重要的依据,对于scaling factors的集合Γ:
和
作者发现最优阈值:
δ数值很小,可忽略。例如δ=1e-3时,rth通过1)对scaling factors升序排列,使用2)通过积累的平方和大于或等于δ发现第一个scaling factor。
最优阈值通过公式5得到,如图1中的绿线和图3和图4中箭头;
使用rth进行剪枝,如图2所示,当scaling factor 小于rth,相应通道将被剪掉;与NS方法相比,OT不会在剪枝过程中,使网络断掉;再剪枝后,模型将进行微调或从头开始训练,这个迭代过程如图2;
Dealing with skip connections.
作者通过在整个网络的BN上使用公式5计算了一个全局最优阈值rg。如果最后的BN层的scaling factors小于rg,就将整个分支移除。
在一些网络结构中,BN层与平行分支共享输入通道,不能简单的移除,对于这种结构,作者使用NS【14】的方法进行通道挑选移除不重要的通道;
文后思考:
1.该篇论文没有什么创新点,用的还是L1回归,而且对BN的scaling factor操作也是别人干过的工作;
2.文中很多细节介绍的也不太清楚,对于初读剪枝论文的朋友,会有一点点麻烦;
3.唯一一个亮点,可能是结合使用全局阈值和局部阈值吧;
来源:CSDN
作者:猫猫与橙子
链接:https://blog.csdn.net/qq_22764813/article/details/104905106