【论文阅读】Rethinking the Value of Network Pruning

0,论文与代码

https://arxiv.org/abs/1810.05270
https://github.com/Eric-mingjie/rethinking-network-pruning

0,摘要
    网络剪枝被广泛用于降低低资源环境下深度模型的推理成本。一个典型的剪枝算法是一个三个阶段的管道,即训练(一个大模型),剪枝和微调。在剪枝过程中,按照一定的准则对冗余权值进行剪枝,同时保留重要权值,以最大限度地保持剪枝精度。在这项工作中,我们做了几个令人惊讶的观察,与通常的看法相矛盾。
对于所有最先进的结构化剪枝算法,我们检查,微调剪枝模型只给予可比或更差的性能比训练模型随机初始化的权值。
对于采用预先定义的目标网络结构的剪枝算法,可以摆脱完整的管道,直接从头开始训练目标网络。
我们对多个网络架构、数据集和任务的观察是一致的,这意味着:
1)训练一个大的、过参数化的模型,往往不需要得到一个有效的最终模型,
2)大型模型的“重要”权重通常对小型剪枝模型无效,
3)修剪后的架构本身,而不是一组继承的“重要”权重,对最终模型的效率更重要,这表明在某些情况下,修剪可以作为架构搜索范例有用。
我们的结果表明,在未来的结构修剪方法研究中,需要更仔细的基线评估。我们还与“彩票假设”(Frankle & Carbin, 2019)进行了比较,发现在最优学习速率下,Frankle & Carbin(2019)中使用的“中奖彩票”初始化并没有带来随机初始化的改善。

1,引入
    过参数化是深度神经网络的一个公认的特性(Denton et al., 2014;Ba & Caruana, 2014),这导致了高计算成本和高内存占用。作为补救措施,网络修剪(LeCun et al., 1990;Hassibi & Stork, 1993年;Han等,2015;Molchanov等人,2016;(Li et al., 2017)被认为是一种有效的技术,用于在计算预算有限的应用中提高深度网络的效率。典型的网络剪枝过程包括三个阶段:1)训练一个大的、过参数化的模型(有时存在预先训练好的模型),2)按照一定的标准对训练好的大模型进行剪枝,3)对剪枝后的模型进行微调以恢复丢失的性能。
    通常,在这个修剪过程背后有两个共同的信念。首先,我们认为从训练一个大的、过参数化的网络开始是很重要的(Luo et al.,2017;CarreiraPerpinán & Idelbayev, 2018),它提供了一个高性能的模型(由于表示优化实力)哪一个可以安全地删除一组冗余参数没有明显伤害的准确性。因此,人们通常认为这比从无开始直接训练一个更小的网络更好(Li et al., 2017;罗等,2017;He等,2017b;Yu等,2018)-一种常用的基线方法。其次,修剪后的架构及其相关的权值被认为是获得最终高效模型的关键(Han et al.2015)。因此,大多数现有的剪枝技术选择微调剪枝模型,而不是从头开始训练它。修剪后保留的权值通常被认为是至关重要的,因为如何准确选择重要权值集是文献中一个非常活跃的研究课题(Molchanov et al., 2016;Li et al., 2017;罗等,2017;He等,2017b;Liu等,2017;Suau等,2018年)。
在这里插入图片描述
    图1:典型的三阶段网络修剪通道。
在这里插入图片描述
    图2:以通道修剪为例,预定义的目标架构和自动发现的目标架构之间的区别。修剪比例x由用户指定,而a、b、c、d由修剪算法确定。非结构化稀疏修剪也可以看作是自动的。
    这项工作中,我们证明了上面提到的两个信念对于结构化剪枝方法并不一定是正确的,结构化剪枝方法在卷积信道或更大的层次上剪枝。基于广泛的经验评估的最新修剪算法在多个数据集与多个网络架构,我们作出两个惊人的观察。首先,对于预定义目标网络架构的结构化剪枝方法(图2),直接对随机初始化的小目标模型进行训练,可以达到与三级管道得到的模型相同甚至更好的性能。在这种情况下,没有必要从一个大型模型开始,可以直接从头开始训练目标模型。其次,对于具有自动发现目标网络的结构化剪枝方法,从零开始训练剪枝模型也可以取得与微调相当甚至更好的性能。这一观察结果表明,尽管需要训练大模型来找到目标架构,但对于这些修剪方法来说,更重要的可能是获得的架构,而不是保留的权重。有趣的是,对于一种去除单个参数的非结构化剪枝方法(Han et al., 2015),我们发现,从零开始的训练基本上可以在小尺度数据集上实现类似的剪枝和微调精度,但在大规模的ImageNet基准测试中无法做到。请注意,在某些情况下,如果一个预先训练好的大型模型已经可用,那么对其进行修剪和微调可以节省获得高效模型所需的训练时间。我们的一些结果和文献中报道的结果之间的矛盾可能被不太仔细选择的超参数、数据增加方案和评估基线方法的不公平计算预算所解释。
     我们的结果提倡对现有结构化网络剪枝算法的重新思考。在第一阶段的训练中,似乎过度参数化并不像之前认为的那样有益。此外,从一个大模型继承权值不一定是最优的,而且可能使修剪后的模型陷入一个坏的局部最小值,即使权值根据普林准则被认为是“重要的”。相反,我们的结果表明,自动结构剪枝算法的价值有时在于识别有效的结构和执行隐式架构搜索,而不是选择“重要”的权重。对于大多数修剪通道/过滤器的结构化修剪方法,这相当于搜索每一层的通道数量。在第5节中,我们通过精心设计的实验来讨论这个观点,并展示了修剪模型中的模式可以为高效架构提供设计指导。
     本文的其余部分组织如下:在第2节中,我们介绍了网络剪枝的背景和相关工作;在第3节中,我们描述了从头开始训练修剪模型的方法;在第4节中,我们对各种修剪方法进行了实验,并展示了我们对预定义或自动发现的目标架构的两种修剪方法的主要结果;在第5节中,我们讨论了自动剪枝方法在搜索高效网络结构中的价值;在第6节中,我们比较了最近提出的“彩票假说”(Frankle & Carbin, 2019);在第七部分,我们讨论了一些启示,并对全文进行了总结。

2,背景
    深卷积网络的近期成功(LeCunetal.,1998;Dengetal.,2009; girshicketal ., 2014;Long et al., 2015;He et al., 2016;2017a)伴随着计算资源需求的增加。具体来说,模型大小、内存占用、计算操作的数量和功耗是在一些资源受限的环境中抑制深度神经网络使用的主要方面。这些大型模型无法在嵌入式系统上进行实时存储和运行。为了解决这一问题,已经提出了许多方法,如权值的低秩近似(Denton et al., 2014;Lebedev等人,2014)、重量量化(courbariauxauxetal .,2016;Rastegarietal.,2016)、knowledge蒸馏(Hintonetal.,2014;Romero等人,2015)和网络修剪(Han等人,2015;其中,网络修剪因其具有竞争性的性能和兼容性而备受关注。
    网络修剪方法的一个主要分支是个体权重修剪,它可以追溯到最优脑损伤(LeCun et al., 1990)和最优脑外科医生(Hassibi & Stork, 1993),他们基于损失函数的Hessian来修剪权重。最近,Han等人(2015)提出对网络权值进行小幅度修剪,并将该技术进一步纳入“深度压缩”管道(Han等,2016b),以获得高度压缩的模型。Srinivas和Babu(2015)提出了一种迭代去除冗余神经元的无数据算法。Molchanov等人(2017)使用变量遗漏(P. Kingma等人,2015)来删除冗余权重。Louizos等人(2018)通过基于随机门的l0 -范数正则化来学习稀疏网络。然而,这些非结构化修剪方法的一个缺点是,得到的权重矩阵是稀疏的,如果没有专用的硬件/库,就无法实现压缩和加速(Han et al., 2016a)。
    相比之下,结构化修剪方法在通道甚至层的层面上进行修剪。由于原始的卷积结构仍然保留,不需要专用的硬件/库来实现好处。在结构化剪枝方法中,通道剪枝是最常用的一种,因为它在最细粒度的层次上运行,同时仍然适合传统的深度学习框架。一些启发式方法包括基于相应的滤波器权值范数(Li et al., 2017)和输出中零的平均百分比(Hu et al., 2016)对通道进行剪枝。群体稀疏性也被广泛应用于训练后的修剪过程的平滑(Wen et al., 2016;Alvarez & Salzmann, 2016;Lebedev & Lempitsky出版社,2016年;周等,2016)。Liu et al.(2017)和Ye et al.(2018)在训练过程中对信道尺度因子施加稀疏性约束,然后将其大小用于信道剪枝。Huang和Wang(2018)使用类似的技术来修剪粗糙的结构,如残余块。He et al. (2017b)和Luo et al.(2017)通过最小化下一层的特征重构误差来确定保留哪些通道。类似地,Yu等人(2018)优化了最终响应层的重构误差,并传播了每个通道的“重要性分数”。Molchanov等人(2016)使用泰勒扩展来近似每个通道对最终损失的影响,并相应地进行修剪。Suau等人(2018)分析了每一层内部的内在相关性,并删除冗余信道。Chin等人(2018)提出了一种分层补偿滤波剪枝算法来改进常用的启发式剪枝度量。He等人(2018a)提出允许在训练过程中恢复经过修剪的过滤器。林et al。(2017);Wang et al.(2017)根据当前输入对网络中的某些结构进行修剪。
    我们的工作也与剪枝算法的一些最新研究有关。Mittal等人(2018)表明,随机通道修剪(Anwar & Sung, 2016)的性能可以与各种更复杂的修剪标准相媲美,证明了网络模型的可塑性。在非结构化剪枝的背景下,彩票假设(Frankle & Carbin, 2019)推测,某些连接加上它们随机初始化的权值,在隔离训练时可以获得与原始网络相当的精度。我们在第6节对Frankle和Carbin(2019)与本研究进行了比较。Zhu & Gupta(2018)表明,训练一个小密度模型无法达到与修剪后的大稀疏模型具有相同内存占用的精确度。在这项工作中,我们揭示了结构化网络修剪方法的一个不同的、相当令人惊讶的特征:使用继承权值对修剪后的模型进行微调,并不比从头训练更好;得到的精简架构更有可能带来好处。

2 方法
在本节中,我们将详细描述从头开始训练一个小目标模型的方法。
    目标修剪架构。首先,我们将网络修剪方法分为两类。在一个剪枝管道中,目标剪枝模型的架构可以由人工(即预先定义的)或剪枝算法(即自动)来决定(见图2)。当人工预先定义目标架构时,一个常见的标准是每一层的通道剪枝比率。例如,我们可能想要修剪50%的通道在每一层的VGG。在这个在这种情况下,无论修剪了哪些特定的通道,修剪后的目标架构都是相同的,因为修剪算法只在局部删除每一层中最不重要的50%的通道。在在实践中,每一层的比率通常是通过经验研究或启发式选择。预定义的结构化修剪包括Li et al.(2017)、Luo et al.(2017)、He et al. (2017b)和He等et al。(2018)
    当目标架构被一个剪枝算法自动确定时,它通常是基于一个剪枝标准来比较结构(例如,通道)的重要性跨层。自动结构化剪枝的例子包括Liu等人(2017)、Huang和Wang(2018)、Molchanov等人(2016)和Suau等人(2018)。
    非结构化剪枝(Han等,2015;Molchanov等人,2017年;Louizos等人,2018)也属于自动方法的类别,其中修剪权值的位置由训练过程和修剪算法决定,通常不可能在训练开始前预定义零的位置。带有继承权重的修剪模型并不比从头开始训练更好;得到的精简架构更有可能带来好处。
    数据集,网络架构和剪枝方法。在网络修树文献中,CIFAR-10、CIFAR-100 (Krizhevsky, 2009)和ImageNet (Deng et al., 2009)数据集是事实上的基准,而VGG (Simonyan & Zisserman, 2015)、ResNet (He et al., 2016)和DenseNet (Huang et al., 2017)是常用的网络架构。我们评估了Li et al.(2017)、Luo et al.(2017)、He et al. (2017b)、He et al. (2018a)四种预定义的修剪方法,以及两种自动结构化修剪方法Liu et al.(2017)、Huang & Wang(2018)和一种非结构化修剪方法(Han et al., 2015)。对于前六种方法,我们使用与原始论文相同的(目标模型、数据集)对进行评估,以保持我们的结果具有可比性。对于最后一个(Han et al., 2015),我们使用了前面提到的建筑,因为原始论文中的建筑已经不再是最先进的了。在CIFAR数据集上,我们用5个随机种子运行每个实验,并报告准确性的均值和标准差。
    训练预算。一个关键的问题是,我们应该从零开始训练这个经过修剪的小模型多长时间。单纯地训练大模型的epoch数目可能是不公平的,因为小的剪枝模型在一个epoch中需要的计算量要少得多。或者,我们可以同时为修剪后的模型和大型模型计算浮点运算(FLOPs),并为修剪后的模型选择训练epoch的数量,这样可以产生与训练大型模型相同的计算量。请注意,对于CIFAR/ImageNet分类任务中常用的逐步衰减学习率调度,如何训练模型达到“完全收敛”还不清楚。
    在我们的实验中,我们使用__Scratch-E__表示训练的小修剪模型相同的时代,和__Scratch-B__表示训练相同数量的计算预算(ImageNet,如果修剪模式节省了超过2×失败,我们只训练Scratch-B时代的数量增加一倍,这意味着更少的计算预算比大模型训练)。当扩展Scratch-B中的epoch数时,我们也按比例扩展了学习速率衰减时间表。有人可能会说,我们应该为更少的时代训练小目标模型,因为它可能收敛得更快。然而,在实践中,我们发现在合理范围内增加训练时间很少是有害的。在我们的实验中,我们发现在大多数情况下,Scratch-E就足够了,而在其他情况下,需要Scratch-B来获得与精细调优相当的精度。注意,我们的评估使用与大型模型训练相同的计算,而没有考虑微调的计算,因为在我们评估的方法中,微调不会花费太长时间;如果有什么不同的话,这仍然有利于精简和微调管道。
    实现。为了使我们的设置尽可能接近原始论文,我们使用了以下协议:1)以前的剪枝方法的训练设置是公开的,例如Liu等人。(2017)、黄、王(2018)、何等。(2018a),我们采用原始实现;2)否则,对于更简单的修剪方法,如Li等人。(2017)和Han等人。(2015),我们重新实施了三阶段剪枝程序,总体上取得了与原始论文相似的结果;3)对于剩下的两种方法(Luo等人,2017;He等人,2017b),修剪后的模型是公开的,但没有训练设置,因此我们选择从头开始重新训练大目标模型和小目标模型。有趣的是,我们重新训练的大模型的精度比原始论文中报道的要高。这可能是由于深度学习框架的不同:我们使用Pythorch(Paszke等人,2017年),而原始论文使用的是Caffe(Jia等人,2014年)。在这种情况下,我们可以根据不同的模型来调整模型的精度。
    我们使用标准的训练超参数和数据增强方案,这两种方法都用于标准图像分类模型(He et al.,2016;Huang et al.,2017)和网络修剪方法(Li et al.,2017;Liu et al.,2017;Huang&Wang,2018;He et al.,2018a)。该优化方法是基于Nesterov动量的SGD算法,采用逐步衰减学习速率。
    对于随机权重初始化,我们采用(He et al.,2015)中提出的方案。对于根据遗传权重进行微调的模型结果,我们要么使用原始论文中发布的模型(上文案例3),要么遵循在训练大模型时使用最低学习率对模型进行微调的常见做法(Li等人,2017;He等人,2017b)。对于CIFAR,培训/微调需要160/40个周期。对于ImageNet,训练/微调需要90/20个周期。要复制结果和有关设置的更详细的知识,请参阅我们的代码:https://github.com/Eric-mingjie/rehing-network-prunning。

4,实验
    在本节中,我们展示了我们的实验结果,比较了从零开始训练剪枝模型和从继承权重进行微调的情况,对于预定义和自动(图2)结构化修剪,以及基于幅值的非结构化修剪方法(Han等人,2015)。我们将对一种剪枝方法(软滤波剪枝(He et al.,2018a))的结果和讨论放在附录a中,并在附录B中包含了从图像分类到目标检测的转移学习的实验。

4.1预定义的结构化修剪
    基于L1-范数的滤波器剪枝(Lietal.,2017)是卷积网络滤波器/信道剪枝的最早工作之一。在每一层中,L1范数较小的滤波器会被剪除一定比例。表1显示了我们的结果。删减模型列显示了预定义目标模型的列表(请参见(Li et al.,2017)了解每个模型的配置详细信息)。我们观察到,在每一行中,scratch-training模型至少达到了与微调模型相同的精度,在大多数情况下scratch-B略高于scratch-E。在ImageNet上,这两个Scratch-B模型都比经过微调的模型要好得多。
在这里插入图片描述
    表1:L 1-基于范数的过滤器修剪的结果(精度)(Li等人,2017年)。“剪枝模型”是从大模型中剪除的模型。模型和剪枝模型的配置都是在原论文的基础上进行的。
    ThiNet (Luo et al., 2017)贪婪地删除了对下一层激活值影响最小的通道。如表2所示,对于vga -16和ResNet-50, Scratch-E和Scratch-B几乎总是能够获得比微调后的模型更好的性能,而且通常是显著的优势。唯一的例外是vga - tiny的Scratch-E,其中模型被非常积极地从vgr -16中删除(FLOPs减少了15倍),结果大大降低了Scratch-E的培训预算。该模型的Scratch-B的训练预算也比原来的大模型小7倍,但可以达到与微调模型相同的精度水平。
    基于回归的Feature Reconstruction(He et al., 2017b)通过最小化下一层Feature map Reconstruction error来精简通道。与ThiNet (Luo et al., 2017)相比,该优化问题采用LASSO回归求解。结果如表3所示。同样,就大模型的相对精度下降而言,粗糙训练的模型要比精细调整的模型好。
在这里插入图片描述    表2:ThiNet结果(准确性)(Luo et al., 2017)。诸如“VGG-GAP”和“ResNet50-30%”等名称是经过修剪的模型,其配置在Luo等人(2017)中定义。为了适应我们的实现和原始论文之间不同框架的影响,我们比较了未经修剪的大模型的相对精度下降。例如,对于修剪后的vggg - conv模型,−1.23相对于左边的71.03,这是原始论文中未修剪的大型模型vggg -16的报道精度;- 2.75相对于左边的71.51,这是我们实现的vgg16的精度。
在这里插入图片描述
    表3:回归特征重构结果(准确率)(He et al., 2017b)。He等人(2017b)定义了诸如“VGG-16-5x”的修剪模型。与表2类似,我们比较了未经修剪的大型模型的相对精度下降。

4.2 自动结构修剪
    网络瘦身(Liu et al., 2017)在训练过程中对批处理归一化层(Ioffe & Szegedy, 2015)的信道向尺度因子增加了l1稀疏性,之后对尺度因子较低的信道进行修剪。由于通道尺度因子是跨层比较的,因此这种方法会自动生成发现的目标架构。如表4所示,对于所有的网络,从零开始训练的小模型都可以达到与微调模型相同的精度。更具体地说,我们发现Scratch-B始终优于(10个实验中有8个)经过微调的模型,而Scratch-E稍微差一些,但大部分仍在标准偏差范围内。
在这里插入图片描述    表4:网络瘦身的结果(准确性)(Liu等人,2017年)。剪枝占整个网络的百分比。每种模型的比率都与原稿相同。

    稀疏结构选择(Huang & Wang, 2018)也使用稀疏尺度因子对结构进行修剪,可以看作是网络瘦身的一种泛化。以外的其他渠道,修剪可以在剩余块在ResNeXt ResNet或组(谢et al ., 2017)。我们检查剩余块的修剪,其中ResNet-50被修剪为ResNet-41、ResNet-32和ResNet-26。表5显示了我们的结果。平均而言,Scratch-E优于修剪后的模型,对于所有模型来说,Scratch-B优于两者。在这里插入图片描述    表5:使用稀疏结构选择的残块修剪结果(精度)(Huang&Wang,2018)。在最初的论文中,不需要进行微调,所以使用了“修剪”列,而不是以前的“微调”列。

4.3基于非结构化量级的剪枝(HANETAL ., 2015)
    基于数量的非结构化权重剪枝(Han et al., 2015)也可以被视为自动发现架构,因为精确零的位置无法在再训练前确定,但我们使用另一小节强调它与结构化剪枝的区别。因为我们评估的所有网络架构都是全卷积的(除了最后的全连接层),为了简单起见,我们只删除卷积层中的权值。在对修剪后的稀疏模型进行从头训练之前,我们根据这一层中保留的非零权值的数量,对初始权值的高斯分布的标准差进行了重新缩放。这是为了像in (He et al., 2015)那样保持一个恒定的后向梯度信号的尺度,然而,在我们的观察中,与未进行尺度变换的对应信号相比,这并没有带来什么增益。
在这里插入图片描述    表6:非结构化修剪结果(准确率)(Han et al., 2015)。“修剪比率”表示所有卷积权值集合中被修剪的参数的百分比。
    如表6所示,在较小尺度的CIFAR数据集上,当剪枝比例较小(≤80%)时,Scratch- e有时会达不到调优结果,而Scratch- B的性能至少与后者相当。然而,我们观察到,在某些情况下,当修剪比例很大(95%)时,微调可以比从头开始训练更好。在大规模ImageNet数据集上,我们注意到Scratch-B结果大多比微调结果差很多,尽管精确度相当高。这可能是由于在高度稀疏网络(CIFAR)上进行直接训练的难度增加,或者是由于数据集本身的规模/复杂性(ImageNet)。另一个可能的原因是,与结构化修剪相比,非结构化修剪显著改变了权重分布(详见附录F)。搔抓训练行为的差异也说明了结构化修剪与非结构化修剪的重要区别

5,网络剪枝作为架构搜索

    虽然我们已经证明,对于结构化的修剪,在修剪架构中继承的权重并不比随机的好,但是修剪架构本身却带来了效率方面的好处。在本节中,我们通过比较获得的剪枝模型和统一剪枝模型来评估自动网络剪枝算法的架构搜索的价值(图2)。需要注意的是,网络剪枝与建筑学习之间的联系在之前的工作中也已经做过(Han et al., 2015;Liu等,2017;戈登等人,2018年;Huang et al., 2018),但据我们所知,我们是第一个分离继承权值的影响,通过从头训练两者,将剪枝得到的结构与均匀剪枝得到的结构单独比较。

    修剪体系结构的参数效率。在图3(左)中,我们比较了通过自动通道剪枝方法(网络瘦化(Liu et al., 2017))得到的架构参数效率,并采用了一种朴素的预定义剪枝策略,该策略在每一层中均匀地剪枝相同百分比的通道。所有的架构都是从随机初始化训练的相同的纪元数。我们看到,架构了网络参数减肥更有效,因为他们可以达到同样水平的精度使用5×参数少于均匀修剪架构。对于非结构化的基于量的剪枝(Han et al., 2015),我们进行了类似的实验,如图3(右)所示。在此,我们以固定的概率均匀地稀疏所有的权重,这种方法得到的架构的效率比剪枝架构低得多。
在这里插入图片描述图3:修剪架构不同方法获得的,一切从头开始训练,平均超过5分。通过自动剪枝方法得到的架构(左:网络瘦身(Liu et al., 2017),右:非结构化剪枝(Han et al., 2015))比均匀剪枝通道或整个网络中的权值稀疏化具有更好的参数效率。
在这里插入图片描述
    表7:通过网络瘦身,在vga -16上裁剪60%的通道(共13个对流层)得到的网络架构。宽度和宽度*是原始和修剪架构中的通道数,平均运行5次。
在这里插入图片描述    图4:非结构化剪枝VGG-16中所有3×3卷积核在某层阶段的平均稀疏度模式。颜色越深就越有可能保持体重。
    我们还发现通道/权值修剪的架构呈现出非常一致的模式(见表7和图4)。这表明原始的大型模型可能是为任务冗余设计的,而修剪算法可以帮助我们提高效率。这也证实了自动剪枝方法在评估架构上搜索有效模型的价值。
在这里插入图片描述

    图5:通过不同方法获得的精简架构,全部从头开始训练,平均运行5次以上。左图:网络瘦身对CIFAR-10进行pre renet-164修剪的结果(刘等,2017)。中间和右边:通过非结构化修剪在CIFAR-100上修剪的PreResNet-110和DenseNet-40的结果(韩等人,2015)。
    更多的分析。然而,也有一些情况,通过剪枝得到的体系结构并不优于通过均匀剪枝得到的体系结构。我们在图5中展示了这样的结果,其中通过剪枝(蓝色)获得的架构并不比统一剪枝架构(红色)更有效。这种现象更可能发生在ResNets和DenseNets等现代架构上。当我们研究这些剪枝架构的稀疏模式时(见附录G中的表18、19和20),我们发现它们在各个阶段都表现出近乎一致的稀疏模式,这可能是它只能与一致剪枝媲美的原因。相比之下,对于VGG,剪枝稀疏模式总是优于一致的稀疏模式,如图3和图6所示。我们也在附录G的表21中显示了网络瘦身后VGG (Liu et al., 2017)的稀疏模式,它们并不均匀。与ResNet和DenseNet相比,我们可以看到VGG的冗余在各层之间是相当不平衡的。在这种情况下,网络剪枝技术可以帮助我们更好地识别冗余。
    可归纳的设计原则从修剪体系结构。考虑到自动发现的架构在VGG网络上具有参数效率,人们可能会想:我们能否从它们中获得关于如何设计更好架构的可推广原则?我们做了几个实验来回答这个问题。
在这里插入图片描述    图6:通过不同的方法获得的经过修剪的架构,都是从零开始训练的,平均运行5次。“引导修剪/ Sparsification”意味着在每一层都使用平均稀疏模式阶段设计网络;“转移引导剪枝/稀疏化”是指利用CIFAR-10上的剪枝vga -16获得的稀疏模式,设计CIFAR 100上的vgg-19网络。遵循修剪架构提供的设计指导方针,我们可以获得更好的参数效率,即使指导方针是从另一个数据集和模型传输的。
    对于网络瘦身,我们利用剪枝架构中每层阶段(feature map size相同的层)的平均通道数来构建一组新的架构,我们称之为“Guided Pruning”;对于基于数量的剪枝,我们分析剪枝体系结构中的稀疏模式(图4),并应用它们构建一组新的稀疏模型,我们称之为“引导稀疏化”。结果如图6所示。可以看出,无论是网络瘦身(图6左)还是非结构化修剪(图6右),架构引导设计(绿色)的效果与修剪后的架构(蓝色)相当。
    有趣的是,这些指导设计模式有时可以转移到不同的VGG变体和/或数据集。在图6中,我们提取了CIFAR-10上VGG-16的剪枝架构模式,并将其应用于CIFAR-100上高效VGG-19的设计。这些架构集被称为“转移引导剪枝/稀疏化”。我们可以观察到,它们(棕色)有时可能比直接修剪(蓝色)的建筑稍差,但明显优于统一修剪/稀疏化(红色)。在这种情况下,我们不需要训练一个大模型来获得一个有效的模型,因为转移的设计模式可以帮助我们直接获得效率。
    讨论卷积架构搜索方发。网络架构搜索的热门技术包括强化学习(Zoph & Le,2017;Baker等人,2017)和进化算法(谢& Yuille,2017;刘等,2018a)。在每次迭代中,训练和评估一个随机初始化的网络来指导搜索,搜索过程通常需要数千次迭代来找到目标架构。相比之下,使用网络修剪作为体系结构搜索只需要一次训练,但是搜索空间被限制在大型网络内的所有“子网”的集合中,而传统方法可以搜索更多的变化,例如激活函数或不同的层顺序。
    最近,Gordon等人(2018)使用了类似于Network Shemings(刘等人,2017)的修剪技术来自动化网络架构的设计;他等人(2018c)使用强制学习来修剪通道,并自动压缩架构。另一方面,在网络架构搜索文献中,共享/继承训练参数(Pham等人,2018;刘等,2018b)在搜索期间已经成为减少训练预算的流行方法,但是一旦找到目标体系结构,仍然从头开始训练以最大化精确度。

6 彩票假说的实验

7,讨论和总结
    我们的结果鼓励对结构化修剪方法进行更加仔细和公平的基线评估。除了高精度之外,从零开始训练预定义的目标模型比传统的网络剪枝过程具有以下好处:a)由于模型更小,我们可以使用更少的GPU内存训练模型,并且可能比训练原始的大模型更快;b)不需要实现修剪标准和过程,这有时需要逐层微调(罗等人,2017)和/或需要针对不同的网络架构进行定制(李等人,2017;刘等,2017);c)我们避免调整修剪过程中涉及的额外超参数。
    我们的结果确实支持自动结构化剪枝在某些情况下能找到高效架构的观点。然而,如果修剪和微调的准确性可以通过从头开始训练被修剪的模型来实现,那么对照一致修剪的基线来评估被修剪的架构(两者都是从头开始训练)也是很重要的,以证明该方法在识别高效架构中的价值。如果统一修剪的模型没有变坏,人们也可以跳过管道,从头开始训练它们。
    即使修剪和微调在准确性方面未能超过上述基线,但在某些情况下,使用这种传统智慧可能比从头开始训练快得多:a)当预先训练的大型模型已经给出,并且很少或没有可用的训练预算时;我们还注意到,只有当该方法不需要修改大型模型训练过程时,才能使用预先训练的模型;b)需要获得不同尺寸的多个模型,或者人们不知道理想的尺寸是多少,在这种情况下,人们可以训练一个大的模型,然后按照不同的比率对其进行删减。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值