结构化剪枝论文翻译

摘要

深度卷积神经网络(CNNs)在许多现实应用中的部署很大程度上受到其高计算成本的阻碍。在本文中,我们提出了一种新的网络神经网络学习方案同时1)减小模型大小;2)减少运行时的内存占用;3)在不影响精度的前提下,降低计算操作的数量。这是通过一种简单而有效的方式在网络中增强通道级稀疏性(channel-level sparsity )来实现的。与许多现有的方法不同,本文提出的方法直接适用于现代CNN架构,将训练过程的开销降到最低,并且对生成的模型不需要特殊的sofiware/hardware加速器。我们称我们的方法为网络瘦身,它以大而广的网络为输入模式。但在训练过程中,不重要的通道会被自动识别并在随后进行修剪,从而产生具有同等精度的细长紧凑模型。我们用几种最先进的CNN模型,包括VGGNet、ResNet和DenseNet,在各种图像分类数据集上实证地证明了我们的方法的有效性。对于VGGNet,网络瘦身的多通道版本在模型大小上减少了20倍,在计算操作上减少了5倍。

相关工作

1在本节中,我们从五个方面对相关工作进行了讨论。
低秩分解
权重量化
权重修剪
结构修剪
网络学习

网络剪枝或瘦身

我们的目的是提供一个简单的方案来实现通道层稀疏深度cnn。在本节中,我们首先讨论通道水平稀疏性的优势和挑战,并介绍我们如何利用批处理标准化中的缩放层来有效地识别和删除网络中不重要的信道。

1通道水平稀疏性的优点。正如在之前的著作中所讨论的[35,23,1],稀疏性可以在不同的层次上实现,例如权重级、内核级、通道级或层级。细粒度级别(例如,重量级别)的稀疏性提供了最高的灵活性,而通用性带来了更高的压缩率,但它通常需要特殊的软件或硬件加速器来对稀疏模型[1]进行快速推断。相反,最粗糙的层级稀疏性不需要特殊的包来获得推理加速,但由于需要对一些完整的层进行修剪,它的灵活性较差。事实上,只有当深度足够大时,去除层才有效,例如,超过50层[35,18]。相比之下,通道级稀疏性在灵活性和易于实现之间提供了一个很好的折衷。它可以应用于任何典型的CNN网络或全连接网络(将每个神经元视为一个通道),得到的网络本质上是未剪枝网络的“精简”版本,可以在传统CNN平台上有效地进行推断。

2挑战。实现信道级稀疏性需要修剪与信道相关的所有传入和传出连接。这使得直接删除预训练模型上的权值的方法无效,因为不太可能通道输入或输出端的所有权值都恰好接近于零。在23[报道,剪枝通道在预先训练的resnet只能导致减少~10%的参数的数量。遭受准确性的损失。[35]通过在训练目标中强制实施稀疏正规化来解决这个问题。具体来说,在训练过程中,他们采用group LASSO ,将对应于同一信道的所有滤波器权值同时推向零。然而,这种方法需要计算额外的正则化项相对于所有滤波器权值的梯度,这不是无关紧要的。我们将介绍一个简单的想法来解决上述挑战,具体细节将在下面介绍。

3尺度因子和稀疏引起的惩罚。我们的想法是为每个通道引入一个比例因子gamma,它乘以该通道的输出。然后我们联合训练网络权值和这些尺度因子,并对后者进行稀疏正则化。最后利用小因子对这些通道进行修剪,并对修剪后的网络进行微调。具体来说,我们方法的训练目标是
在这里插入图片描述
(x,y)表示训练的输入和目标,W表示可训练的权重、前面求和对应正常训练的CNN的损失, g(-)是一个sparsity-induced处罚比例因素,入是平衡两个方面。在我们的实验中,我们选择g(s) =|sl,称为l1正则,常用于实现稀疏性。采用次梯度下降法对非光滑Ll惩罚项进行优化。另一种方法是用光滑-L1惩罚代替L1惩罚[30],以避免在非光滑点使用次梯度。
因为删除一个通道本质上就是删除该通道的所有传入和传出连接,所以我们可以直接得到一个狭窄的网络(见图1i,不需要使用任何特殊的稀疏计算包)。比例因子作为通道选择的代表。由于它们是与网络权值共同优化的,网络可以自动识别不显著的通道,并且可以安全地将其删除,而不会对泛化性能造成很大影响。

4利用BN层中的比例因子。批处理归一化已经被大多数现代CNNs作为一种标准方法来实现快速收敛和更好的泛化性能。BN规范激活的方式促使我们设计一种简单而有效的方法来整合通道层面的比例因子。特别是,BN层使用mini-batch 统计数据归一化内部激活。令Zin和zout为一个BN层的输入和输出,β为当前的minibatch, BN层进行如下变换:其中uβ和Σβ是输入激活在β上的平均值和标准偏差值,β和γ是可训练的仿射转换参数(尺度和位移),提供了将标准化激活线性转换回任何尺度的可能性。
在这里插入图片描述
通常的做法是在卷积层之后插入BN层,并带有通道方向的缩放/移动参数。因此。
我们可以直接利用BN层中的y参数作为网络瘦身所需的比例因子。它的最大优点是不增加网络开销。事实上,这可能也是我们可以学习有意义的信道修剪缩放因子的最有效的方法。下面方法都不行。
1),如果我们添加缩放层到一个CNN没有BN层。尺度因子的值对于评估通道的重要性没有意义,因为卷积层和尺度层都是线性变换。我们可以通过减小尺度因子的值而放大卷积中的权重来得到相同的结果。
2),如果我们在BN层之前插入一个缩放层,那么这个缩放层的缩放效应将被BN的归一化过程完全抵消。
3),如果我们在BN层之后插入缩放层,每个通道都有两个连续的缩放因子。

5通道修剪和微调。在通道级稀疏诱导的正正则化下进行培训。我们得到了一个模型,其中许多比例因子接近于零(见图I)。然后,我们可以通过删除所有的输入和输出连接以及相应的权重,以接近零的比例因子对信道进行修剪。我们使用一个跨所有层的全局阈值对通道进行修剪,该阈值定义为所有缩放因子值的某个百分比。例如,我们通过选择百分比阈值为70%,以较低的比例因子对70%的通道进行修剪。通过这样做,我们获得了一个更紧凑的网络,更少的参数和运行时内存。以及更少的计算操作。当剪枝率较高时,剪枝会暂时造成一定的精度损失。但这在很大程度上可以通过随后在修剪后的网络上的微调过程得到补偿。在我们的实验中,在很多情况下,经过微调的窄网络甚至可以达到比原始的未剪枝网络更高的准确率。

6多路方案。我们还可以将该方法从单通道的学习方案(利用稀疏正则化、剪枝和微调进行训练)扩展到多通道的学习方案。具体地说,一个网络瘦身过程的结果是一个狭窄的网络,我们可以再次应用整个训练过程学习一个更紧凑的模型。实验结果表明,这种多通方案在压缩率方面可以获得更好的结果。

7处理跨层连接和预激活结构。上面介绍的网络瘦身过程可以直接应用到大多数朴素的CNN架构中,如AlexNet 221和VGGNet 31]。**而当它应用于具有跨层连接和预激活设计的现代网络如ResNet[15]和DenseNet[17]时,则需要进行一些调整。**对于这些网络,一个层的输出可以看作是后续多个层的输入,其中一个BN层位于convolutional layer之前。在这种情况下,稀疏性是在一层的输入端实现的,也就是说,该层选择性地使用它接收到的通道子集。为了在测试时获得参数和计算节省,我们需要放置一个通道选择层来屏蔽我们已经识别的不重要的通道。

实验

我们在几个基准数据集上实证地证明了网络瘦身的有效性。我们实现我们的方法基于ResNets的公开可用Torch[5]实现[10]。有关代码可在以下网址查询
https://github.com/liuzhuang13/slimming.
在这里插入图片描述

数据集

网络模型

在CIFAR和SVHN数据集上,我们评估了三种流行的网络架构:VGGNet[31 ResNet[14和DenseNet 17。VGGNet最初是为ImageNet分类而设计的。在我们的实验中,从【36】中选取了原始的用于CIFAR数据集的VGGNet。对于ResNet,使用了带有瓶颈结构的164层预激活的ResNet (ResNet-164) 15]。对于DenseNet,我们使用40-laver DenseNet,增长率为12(DenseNet-40)。在ImageNet数据集上,我们采用11层(8-conv + 3 FC)“VGG-A”网络[31模型图的批处理规范化。我们删除了dropout层,因为我们使用了相对繁重的数据增强。为了修剪FC中的神经元,我们将它们视为空间大小为1x1的卷积通道。在MNIST数据集上,我们在与[35]1相同的3层全连接网络上评估了我们的方法。

训练、剪枝、微调

正常的训练。我们通常把从头开始训练所有的网络作为基线。所有的网络都使用SGD进行训练。

在CIFAR160 epoch和SVHN20 epoch数据集上,
小批量大小64进行训练。
初始学习率设置为0.1,然后在训练总次数的50%和75%时除以10,

在ImageNet60epoch和MNIST30epoch数据集上,
批大小为256,初始学习率为0.1,即在训练epoch的1/3和2/3分数后除以10。

我们用一个权重衰减为10-4,牛顿动量为0.9,没有减弱。采用【13】引入的权值初始化。我们的优化设置紧跟[10]的原始实现。在我们所有的实验中,我们将所有的通道缩放因子初始化为0.5,因为相比于【10】的默认设置,这提供了更高的精度。

带稀疏的训练。对于CIFAR和SVHN数据集,在进行信道稀疏正则化训练时,控制经验损失和稀疏度之间的平衡的超参数化器A通过10的-3次,10的-4次,10的-5次的网格搜索来确定。尤其对于VGGNet,我们选择λ=10的-4次,对于ResNet和DenseNet,我们选择λ=10-5。VGG-A ImageNet,我们设置入=10-5,所有其他设置都一样正常训练。

剪枝
在对稀疏度训练的模型进行信道剪枝时,需要确定缩放因子的剪枝阈值。与[23]中不同的层按不同的比率进行修剪不同,为了简单起见,我们使用了一个全局修剪阈值。修剪阈值由所有缩放因子的百分比决定,例如40%或60%的通道被修剪。修剪的过程通过构建一个新的更窄的网络和从带稀疏的训练模型上复制相应的权重实现

微调
经过修剪,我们得到一个更窄更紧凑的模型,然后进行微调。CIFAR。SVHN和MNIST数据集,微调使用相同的优化设置在训练。对于ImageNet数据集,由于时间限制,我们仅对修剪后的vgga进行了5个epoch的10-3学习率的微调。

结果

CIFAR和SVHN的结果显示为:我们用黑体字标记模型的所有最小检验误差。
参数和FLOPs减少。网络瘦身的目的是减少所需的计算资源。每个模型的最后一行已经修剪了> 60%的通道,同时仍然保持与基线相似的精度。参数保存最多可达10倍。失败率通常在50%左右。为了突出网络精简的效率,我们在图3中绘制了资源节省。可以看到,VGGNet有大量可以删除的冗余参数。在ResNet-164上,参数和触发器节省相对无关紧要,我们推测这是由于它的“瓶颈”结构已经在选择通道时起了作用。此外,在CIFAR-100上,降低率通常略低于CIFAR-10和SVHN,这可能是由于CIFAR-100包含更多的类。
在这里插入图片描述

正则化的效果。从表I我们可以观察到,在ResNet和DenseNet上,当40%的信道被修剪时,微调后的网络可以获得比原始模型更低的测试误差。例如,修剪40%信道的densen -40在CIFAR-10上的测试误差为5.19%,几乎比原始模型低1%。我们假设这是由于L1稀疏性对信道的正则化效应,它自然地提供了网络中间层的特征选择。我们将在下一节中分析这种影响。
ImageNet。在able 2中总结了ImageNet数据集的结果,当删除50%的通道时,参数节省超过5倍,而触发器节省仅为30.4%。这是因为所有计算密集型卷积层中只有378个(2752个)通道被修剪,而参数密集型全连接层中的5094个神经元(8192个)被修剪。值得注意的是,我们的方法可以在1000类ImageNet数据集上实现没有精度损失的节省,而其他有效的CNNs方法[2.231 35,28]大多报道了精度损失
在这里插入图片描述

MNIST。在MNIST数据集上,我们将我们的方法与结构稀疏学习(SSL)方法[35]inabe 3进行了比较,尽管我们的方法主要用于卷积层的通道剪枝,但它在全连通层的神经元剪枝上也有很好的效果。在这个实验中,我们观察到带有全局阈值的剪枝有时会完全删除一个层,因此我们在两个中间层中每一层修剪80%的神经元。我们的方法略优于[35],因为在删除更多参数的同时,测试错误略低。
在这里插入图片描述

在补充材料中,我们提供了一些额外的实验结果,包括(1)在CIFAR-10上一个紧凑的VGGNet的详细结构;(2)墙壁时钟时间和运行时内存节省的实践。(3)与之前的通道剪枝方法比较[23:

多通道方案的结果

我们使用VGGNet在CIFAR数据集上采用多通道方案。因为没有跳跃连接,修剪掉整个层将完全摧毁模型。因此,除了将百分比阈值设置为50%之外,我们还在每一层设置了一个限制,即最多可以修剪50%的通道。每次迭代模型的测试误差如表4所示。随着剪枝过程的进行,我们得到更多的和更紧凑的模型。CIFAR-10。经过训练的模型在迭代5中测试误差最小。该模型实现了20倍的参数减少和5倍的FLOPs减少,同时仍然实现了更低的测试误差。在cifar - 100。在迭代3之后,测试错误开始增加。这可能是因为它比CIFAR-10包含更多的类。因此,过于激进地修剪通道将不可避免地损害性能。然而,我们仍然可以删除近90%的参数和近70%的失败,而没有显著的准确性损失。
在这里插入图片描述

分析

网络瘦身中有两个关键的超参数,修剪百分比t和稀疏正则化项A的系数(见公式I),在本节中,我们将更详细地分析它们的作用。

剪枝百分比的影响

修剪率的影响。一旦我们得到一个经过稀疏正则化训练的模型,我们需要决定从模型中删除多少百分比的通道。如果我们砍掉的渠道太少,节省的资源就会非常有限。然而,如果我们删除太多的通道,可能会对模型造成破坏,而且可能无法通过微调恢复精度。我们训练DenseNet40模型与入=纯CIFAR-10给修剪不同比例的渠道的影响。结果如图5所示
在这里插入图片描述
从图5可以得出结论,只有当剪枝率超过阈值时,剪枝或微调模型的分类性能才会下降。微调过程通常可以补偿修剪可能造成的精度损失。只有当阈值超过80%时,微调模型的测试误差才会落后于基线模型。值得注意的是,在稀疏性训练下,即使没有微调,模型的表现也比原始模型要好。这可能是由于L1稀疏性对信道尺度因子的正则化效应。

通道稀疏正则化

信道稀疏正则化。L1稀疏项的目的是使许多比例因子接近于零。方程中的参数A与正常的训练损失相比具有显著性。在[图4中,我们绘制了不同A值的比例因子在整个网络中的分布。在这个实验中,我们使用一个在CIFAR-10数据集上训练过的VGGNet。
在这里插入图片描述

可以看到,随着A的增加,比例因子越来越集中在零附近。当入0。即. .不存在稀疏正则化,分布相对平坦。4 =打败。几乎所有的比例因子都落在一个接近于零的小区域内。这个过程可以看作是在深度网络的中间区域进行的特征选择,只选择尺度因子不可忽略的通道。我们通过热图进一步可视化这个过程。[图6显示了VGGNet中某一层在训练过程中缩放因子的大小。每个通道都以相同的权重开始;随着培训随着时间的推移,一些通道的缩放系数变大(亮)而另一些变小(暗)。

结论

我们提出了网络瘦身技术来学习更紧凑的cnn。该方法直接将稀疏诱导的正则化方法强加于批处理归一化层的尺度因子上,从而在训练过程中自动识别不重要的通道并进行剪枝。在多个数据集上,我们已经证明,该方法能够显著降低计算成本(高达20倍)的先进网络,没有精度损失。更重要的是,该方法同时减少了模型大小、运行时内存和计算操作,同时将训练过程的开销降到最低,并且生成的模型不需要特殊的库/硬件来进行有效的推理。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值