一、摘要

深度神经网络已被应用在许多应用中,并在计算机视觉领域表现出非凡的能力。然而,高效的实时部署复杂的网络架构十分具有挑战性,需要大量的计算资源和能耗成本。这些挑战可以通过网络压缩等优化来克服。网络压缩通常可以在几乎没有精度损失的情况下实现,在某些情况下,准确性甚至可能会提高。本文对两种类型的网络压缩进行了调查:剪枝和量化。剪枝可以归类为静态(如果它是离线执行的)或动态(如果它是在运行时执行的)。我们比较了剪枝技术并描述了用于删除冗余计算的标准。我们讨论了元素方面(element-wise)、通道方面(channel-wise)、形状方面(shape-wise)、滤波方面(filter-wise)、层方面(layer-wise)甚至网络方面(network-wise)的剪枝的权衡。量化通过降低数据类型的精度来减少计算。权重、偏差和激活通常可以量化为 8 位整数,尽管也讨论了较低位宽的实现,包括二进制神经网络。剪枝和量化都可以单独使用或组合使用。我们比较了当前的技术,分析了它们的优缺点,在许多框架上展示了压缩网络精度结果,并为压缩网络提供了实用指导。
image.png

二、剪枝

网络剪枝是减少内存大小和带宽的重要技术。 在 1990 年代初期,开发了剪枝技术以将经过训练的大型网络减少为较小的网络,而无需重新训练。这使得神经网络可以部署在嵌入式系统等受限环境中。剪枝去除对结果的准确性没有显着影响的冗余参数或神经元。当权重系数为零、接近零或被复制时,可能会出现这种情况。剪枝因此降低了计算复杂度。 如果重新训练剪枝过的网络,它提供了逃避先前局部最小值并进一步提高准确性的可能性。
image.png
静态剪枝在推理之前离线执行所有剪枝步骤,而动态剪枝在运行时执行。 虽然类别之间存在重叠,但在本文中,我们将使用静态剪枝和动态剪枝对网络剪枝技术进行分类。

2.1 静态剪枝

静态剪枝是一种网络优化技术,它在训练之后和推理之前从网络中离线移除神经元。 在推理过程中,不会对网络进行额外的修剪。 静态修剪通常包含三个部分:1)选择要修剪的参数,2)修剪神经元的方法,以及 3)可选的微调或再训练 [92]。 重新训练可以提高剪枝网络的性能,以达到与未剪枝网络相当的精度,但可能需要大量的离线计算时间和能量。

2.2 动态剪枝

image.png
文章链接:https://arxiv.org/pdf/2101.09671v3.pdf