EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)

时间:2021-10-30 01:24:53


目录

  • 说明
  • 动机
  • 贡献
  • 方法
  • 发现
  • EagleEye剪枝算法
  • 实验
  • 实验1- 相关性的定量分析
  • 实验2-基于自适应BN的评估方法的通用性
  • 实验3-从修剪候选中选择最佳修剪策略的计算成本
  • 实验4-Effectiveness of our proposed method
  • 总结与讨论
说明

找出训练好的深度神经网络(DNN)的计算冗余部分是剪枝算法要解决的关键问题。许多算法都试图通过引入各种评估方法来预测修剪后的子网的模型性能 。在这个工作中,我们提出了一种称为EagleEye的剪枝方法,其中使用了一个基于自适应批归一化adaptive batch normalization 的简单而有效的评估组件,以揭示不同的修剪DNN结构与其最终确定精度之间的强相关性。这种强相关性使我们能够以最高的潜在准确率快速发现修剪后的候选对象,而无需实际对它们进行微调。该模块对一些已有的剪枝算法也具有通用性,便于插件化和改进。在我们的实验中,EagleEye获得了比所有研究的剪枝算法都要好的剪枝性能。具体而言,要修剪MobileNet V1和ResNet-50,EagleEye的性能要比所有比较方法高出EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)。即使在更具挑战性的修剪MobileNet V1紧凑模型的实验中,EagleEye修剪了50%的操作(FLOP),可达到70.9%的精度。所有精度结果均为Top-1 ImageNet分类精度。

动机

作者发现,在现有的修剪管道中通常可以找到评估过程。这样的过程旨在揭示子网的潜力,以便选择最佳的剪枝候选者来提供最终的剪枝策略。图1直观地展示了这一概括。使用评估模块的优点是决策速度快,因为在大的搜索空间中训练所有子网以收敛以进行比较可能非常耗时,因此不切实际。此外作者发现,现有的论文中的评价方法并不是最优的。具体地说,它们要么不准确,要么很复杂。

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)

为什么说不准确呢?

这意味着评估过程中的我们获取的“最优”子网在收敛时不一定具有很高的准确性[13,7,19]。这将在论文4.1节中由几个常用的相关系数衡量的相关性问题进行定量证明。此外,文章证明这种评估不准确的原因是对批归一化(BN)层使用次优统计值[10]。在这项工作中,我们使用一种所谓的自适应BN技术来解决这个问题,并有效地使我们提出的评估过程达到更高的相关性。

为什么复杂呢?

它指出了以下事实,即某些作品的评估过程依赖于棘手的或计算量大的组件,例如强化学习代理[7],辅助网络训练[22],知识提炼[8]等。这些方法需要仔细的超参数调整或对辅助模型的额外训练。这些要求可能导致难以重复结果,并且由于其高算法复杂度,这些修剪方法可能很耗时。

当前工作中的上述问题促使我们提出一种更好的修剪算法,该算法配备了更快,更准确的评估过程,最终有助于提供最先进的修剪性能。

贡献
  1. 我们指出了在许多现有修剪方法中广泛发现的所谓的香草评估步骤(在第3.1节中进行了解释)的原因,导致修剪结果不佳。为了定量说明问题,我们是第一个将相关性分析引入修剪算法领域的
  2. 在这项工作中,我们采用自适应批归一化技术进行修剪,以解决香草评估步骤中的问题。它是我们提出的称为EagleEye的修剪算法中的模块之一。我们提出的算法可以在仅几次推理的情况下有效地估计任何修剪模型的收敛精度。插入和改进现有的一些方法以提高性能也足够通用。
  3. 我们的实验表明,尽管EagleEye很简单,但与许多更复杂的方法相比,它可以实现最先进的修剪性能。在ResNet-50实验中,EagleEye的精度比比较算法高1.3%至3.8%,即使在修剪MobileNet V1紧凑型模型这一艰巨的任务中,EagleEye修剪的总体操作(FLOP)达到50%时,仍可达到70.9%的最高精度。这里的结果是ImageNet top-1分类准确性。
方法

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)概括了一个典型的神经网络和修剪管道方法,对全尺寸网络进行修剪,然后经过微调,使丢失的精度得到恢复。它用公式可表达为如下所示
EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)其中EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)是一个限制条件,可以是参数量,延迟性或者操作方式等。修剪比例EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)的组合(称为修剪策略)应用于完整尺寸模型。修剪率的所用可能性组合形成一个搜索空间。当我们对网络进行进行剪枝时,再给定的限制条件C下,可能有几个修剪策略(不同剪枝率的可能性组合)都满足,然后我们对搜索策略进行一定的微调,然后再测试集中判断哪个的准确率更高。我们就把它定性为最优的修剪策略。

发现

在许多已经公开的领域中,修剪候选者评估准确性方面是直接进行比较的,选择精度较高的子网,并期望他在微调之后能够达到更高的精度。但是我们注意到,对剪枝后的网络直接用于推理,我们发现它的准确率会非常的低,而经过微调之后,准确率会达到相当好的效果。这不禁让我们想到了一个问题,就是尽管我们给的修剪率是随机的,为什么我们删除不重要的过滤器,他的准确率为什么会明显的下降?然后第二个问题就是最初修剪之后的准确率和最终的收敛准确率之间是否有有一种相关关系。我们把我们原来的这种评估方法称为香草评估,也就是得到几个不同剪枝策略,然后直接比较推理阶段它们的准确率高低,然后再得到选定最高的那个剪枝策略,经过微调,期许得到更高的准确率。

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)


为什么会出现这种情况呢?

经过作者分析,发现是由于BN层所导致的。如果不进行微调,则修剪候选对象的参数是全尺寸模型中参数的子集。因此,逐层的特征图数据也受到更改的模型尺寸的影响。但是,香草评估仍然使用从全尺寸模型继承的批归一化(BN)。 BN层的过时的统计值最终将评估精度降低到令人惊讶的低范围,更重要的是,打破了评估精度(微调前的精度)与策略搜索空间中修剪候选者的最终收敛精度(微调后的精度)之间的相关性。简短的训练(也称为微调),将所有候选对象进行修剪,然后将他们进行比较,这是进行评估的更准确的方式[20,15]。但是,由于搜索空间的规模很大,即使是一个epoch的微调,基于训练的评估也非常耗时。

所以作者提出了自适应批量标准化(Adaptive Batch Normalization)去解决这个问题。

简单来说,意思就是当我们训练出一个完整的模型之后,我们会得到一个全局的滑动平均均值和方差。但是他对于已经修剪后的网络来说,这些全局的BN统计量,其实效果是并不好的,他们之间没有一种相关的关系,所以这会导致他的准确率比较低。所以我们正常采用的就是对BN统计信息进行再次的迭代更新,我们使用部分训练集进行迭代重新计算它的自适应值的期望和方差。这实际上就是让BN统计量重新适应已经修剪的网络,具体的操作方法就是对一个剪枝的网络,我们冻结他的参数,再进行迭代更新,但是我们要注意到一点,它只有前向传播,最后自适应的统计它的均值和期望。图4说明了应用自适应BN提供的评估精度与左图4的香草评估相比,相关性更强。

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)


作为另一个证据,作者也比较BN统计值与真实统计值之间的距离。作者将从验证数据集采样的EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)视为真实的统计量,记为EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读),因为它们是测试阶段的真实统计值。值得注意的是,微调还缓解了BN统计数据不匹配的问题,因为训练过程本身会重新计算前向通过中的BN统计值,从而解决了不匹配问题。但是,BN统计信息不是可训练的值,而是仅在推断时间内计算的采样参数。我们的自适应BN正是通过在推理步骤中进行重新采样来针对此问题的,这实现了相同的目标,但是与微调相比,计算成本更低。这是我们声称自适应BN在修剪评估中比基于微调的解决方案更有效的主要原因。

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)

EagleEye剪枝算法

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)


第一步:Strategy generation. 再在给定的限制条件下(参数量,延迟性或者操作方式),生成了若干个剪枝策略(每一层的剪枝率组成的向量EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读))。我们也可以采用其他策略生成方法,例如强化学习,进化算法等。

第二步:Filter pruning. 过滤器修剪过程会根据前一个模块生成的修剪策略修剪完整尺寸的训练模型。与普通的过滤器修剪方法类似,首先根据过滤器的L1范数对其进行排名,然后将最不重要的过滤器的r永久修剪掉。在此过程之后,可以将来自搜索空间的经过修剪的候选修剪对象准备好传递到下一个评估阶段。

第三步:The adaptive-BN-based candidate evaluation module. 基于自适应BN的候选者评估模块为从先前模块移交的修剪后的候选者提供BN统计信息适应和快速评估。给定一个经过修剪的网络,它将冻结所有可学习的参数,并遍历训练集中的少量数据以计算自适应BN统计量。接下来,我们对所有的子网络,在训练集的一小部分验证集进行准确率评估,我们在选择准确率较高的进行微调。

实验
实验1- 相关性的定量分析
实验2-基于自适应BN的评估方法的通用性

所提出的基于自适应BN的评估方法具有足够的通用性,可以插入并改进一些现有方法。例如,我们将其应用于AMC [7],这是一种基于强化学习(RL)机制的自动修剪方法。作者对这种方法的操作方式和结果进行了说明。

实验3-从修剪候选中选择最佳修剪策略的计算成本

作者提出的基于自适应BN的修剪评估将子网准确度的预测转换为非常快速且可靠的过程,因此与其他基于重型评估的算法相比,EagleEye花费的时间更少完成整个修剪过程。在这一部分中,作者将比较各种最新修剪算法的执行成本,以证明我们方法的效率。表2比较了1000个潜在的修剪候选者中选择最佳修剪策略的计算成本。在所用的方法中,EagleEye是最有效的方法。

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)

实验4-Effectiveness of our proposed method

为了证明EagleEye的有效性,作者将其与在CIFAR-10小型数据集和大型ImageNet数据集上测试的MobileNetV1和ResNet-50模型上的几种最新修剪方法进行了比较。

EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)


EagleEye: Fast Sub-net Evaluation for Efficient Neural Network Pruning(论文阅读)


ResNet表3左侧显示,在CIFAR-10数据集的Top-1准确性方面,EagleEye优于所有比较方法。为了进一步证明所提方法的鲁棒性,作者比较了在不同FLOP约束下在ImageNet数据集上ResNet-50的top-1准确性。对于每个FLOP约束(3G,2G和1G),将生成1000个修剪策略。然后,将基于自适应BN的评估方法应用于每个候选项。我们只对排名前2位的候选网络进行微调,并提供最佳的修剪模型。结果表明,EagleEye在表4中列出的比较方法中取得了最佳结果。

ThiNet对每个层的通道进行统一的修剪,而不是寻找一个最优的修剪策略,这会严重影响性能。MetaPruning训练了一个称为“ PruningNet”的辅助网络,以预测修剪模型的权重。但是,采用的原始评估方法可能会误导对修剪策略的搜索。如表4所示,在修剪目标不同的情况下,作者提出的算法优于所有比较方法。

MobileNet我们对MobileNetV1的紧凑模型进行实验,并将修剪结果与"过滤修剪"和直接缩放的模型进行比较。右表3显示,在所有情况下,EagleEye修剪效果均最佳。

总结与讨论

作者所提方法的亮点是一种基于自适应批归一化的快速准确的评估过程。与其他方法相比,作者所提的方法考虑到了与最终微调的收敛准确性的相关性,这是一种比较准确的剪枝策略选择方法,他可以作为一个模块或者插件用于一些剪枝方法中。