说明
找出训练好的深度神经网络(DNN)的计算冗余部分是剪枝算法要解决的关键问题。许多算法都试图通过引入各种评估方法来预测修剪后的子网的模型性能 。在这个工作中,我们提出了一种称为EagleEye的剪枝方法,其中使用了一个基于自适应批归一化adaptive batch normalization 的简单而有效的评估组件,以揭示不同的修剪DNN结构与其最终确定精度之间的强相关性。这种强相关性使我们能够以最高的潜在准确率快速发现修剪后的候选对象,而无需实际对它们进行微调。该模块对一些已有的剪枝算法也具有通用性,便于插件化和改进。在我们的实验中,EagleEye获得了比所有研究的剪枝算法都要好的剪枝性能。具体而言,要修剪MobileNet V1和ResNet-50,EagleEye的性能要比所有比较方法高出3.8 % 3.8%3.8%。即使在更具挑战性的修剪MobileNet V1紧凑模型的实验中,EagleEye修剪了50%的操作(FLOP),可达到70.9%的精度。所有精度结果均为Top-1 ImageNet分类精度。
动机
作者发现,在现有的修剪管道中通常可以找到评估过程。这样的过程旨在揭示子网的潜力,以便选择最佳的剪枝候选者来提供最终的剪枝策略。图1直观地展示了这一概括。使用评估模块的优点是决策速度快,因为在大的搜索空间中训练所有子网以收敛以进行比较可能非常耗时,因此不切实际。此外作者发现,现有的论文中的评价方法并不是最优的。具体地说,它们要么不准确,要么很复杂。
为什么说不准确呢?
这意味着评估过程中的我们获取的“最优”子网在收敛时不一定具有很高的准确性[13,7,19]。这将在论文4.1节中由几个常用的相关系数衡量的相关性问题进行定量证明。此外,文章证明这种评估不准确的原因是对批归一化(BN)层使用次优统计值[10]。在这项工作中,我们使用一种所谓的自适应BN技术来解决这个问题,并有效地使我们提出的评估过程达到更高的相关性。
为什么复杂呢?
它指出了以下事实,即某些作品的评估过程依赖于棘手的或计算量大的组件,例如强化学习代理[7],辅助网络训练[22],知识提炼[8]等。这些方法需要仔细的超参数调整或对辅助模型的额外训练。这些要求可能导致难以重复结果,并且由于其高算法复杂度,这些修剪方法可能很耗时。
当前工作中的上述问题促使我们提出一种更好的修剪算法,该算法配备了更快,更准确的评估过程,最终有助于提供最先进的修剪性能
贡献
- 我们指出了在许多现有修剪方法中广泛发现的所谓的香草评估步骤(在第3.1节中进行了解释)的原因,导致修剪结果不佳。为了定量说明问题,我们是第一个将相关性分析引入修剪算法领域的。
- 在这项工作中,我们采用自适应批归一化技术进行修剪,以解决香草评估步骤中的问题。它是我们提出的称为EagleEye的修剪算法中的模块之一。我们提出的算法可以在仅几次推理的情况下有效地估计任何修剪模型的收敛精度。插入和改进现有的一些方法以提高性能也足够通用。
我们的实验表明,尽管EagleEye很简单,但与许多更复杂的方法相比,它可以实现最先进的修剪性能。在ResNet-50实验中,EagleEye的精度比比较算法高1.3%至3.8%,即使在修剪MobileNet V1紧凑型模型这一艰巨的任务中,EagleEye修剪的总体操作(FLOP)达到50%时,仍可达到70.9%的最高精度。这里的结果是ImageNet top-1分类准确性。
发现
在许多已经公开的领域中,修剪候选者评估准确性方面是直接进行比较的,选择精度较高的子网,并期望他在微调之后能够达到更高的精度。但是我们注意到,对剪枝后的网络直接用于推理,我们发现它的准确率会非常的低,而经过微调之后,准确率会达到相当好的效果。这不禁让我们想到了一个问题,就是尽管我们给的修剪率是随机的,为什么我们删除不重要的过滤器,他的准确率为什么会明显的下降?然后第二个问题就是最初修剪之后的准确率和最终的收敛准确率之间是否有有一种相关关系。我们把我们原来的这种评估方法称为香草评估,也就是得到几个不同剪枝策略,然后直接比较推理阶段它们的准确率高低,然后再得到选定最高的那个剪枝策略,经过微调,期许得到更高的准确率。
为什么会出现这种情况呢?
经过作者分析,发现是由于BN层所导致的。如果不进行微调,则修剪候选对象的参数是全尺寸模型中参数的子集。因此,逐层的特征图数据也受到更改的模型尺寸的影响。但是,香草评估仍然使用从全尺寸模型继承的批归一化(BN)。 BN层的过时的统计值最终将评估精度降低到令人惊讶的低范围,更重要的是,打破了评估精度(微调前的精度)与策略搜索空间中修剪候选者的最终收敛精度(微调后的精度)之间的相关性。简短的训练(也称为微调),将所有候选对象进行修剪,然后将他们进行比较,这是进行评估的更准确的方式[20,15]。但是,由于搜索空间的规模很大,即使是一个epoch的微调,基于训练的评估也非常耗时。
所以作者提出了自适应批量标准化(Adaptive Batch Normalization)去解决这个问题。
简单来说,意思就是当我们训练出一个完整的模型之后,我们会得到一个全局的滑动平均均值和方差。但是他对于已经修剪后的网络来说,这些全局的BN统计量,其实效果是并不好的,他们之间没有一种相关的关系,所以这会导致他的准确率比较低。所以我们正常采用的就是对BN统计信息进行再次的迭代更新,我们使用部分训练集进行迭代重新计算它的自适应值的期望和方差。这实际上就是让BN统计量重新适应已经修剪的网络,具体的操作方法就是对一个剪枝的网络,我们冻结他的参数,再进行迭代更新,但是我们要注意到一点,它只有前向传播,最后自适应的统计它的均值和期望。图4说明了应用自适应BN提供的评估精度与左图4的香草评估相比,相关性更强。