【《经典卷积神经网络与剪枝压缩方法概述》7100字】_第1页
【《经典卷积神经网络与剪枝压缩方法概述》7100字】_第2页
【《经典卷积神经网络与剪枝压缩方法概述》7100字】_第3页
【《经典卷积神经网络与剪枝压缩方法概述》7100字】_第4页
【《经典卷积神经网络与剪枝压缩方法概述》7100字】_第5页
已阅读5页,还剩9页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

我国中小企业的技术创新研究)这篇论文给出了较为科学地通道选择办法,而不是以大欺小似的选取topk之类的,至少有了一个较为数学的解释。但是仍需要人工设计求解约束,较为麻烦。基于AutoML的剪枝方法2018年,He等人ADDINNE.Ref.{3C0A974D-A525-422D-A6A2-5238808F97B9}[42]提出了基于自动化机器学习(AutoML)的模型压缩方法,简称AMC。作者的创新点主要在第一次把自动化和强化学习的概念引进了模型压缩领域,能够利用强化学习来学习策略,然后再用学习到的策略来压缩网络,取到精度和延迟的平衡。在多层的深度学习卷积神经网络中,可以说每一层的冗余度都是不同的,所以不能一概而论使用某个固定值去压缩每层的网络,应该因层制宜地设计每层的压缩率。但是,对于动则上百层的神经网络而言,靠人工去给每一层都设计一个合适的压缩率是十分困难和不理智的。因为探索的空间太大,依靠人工经验往往无法得到最优的解。所以作者就依靠AutoML,即运用强化学习来实现这个自动化的压缩比率查找。图2.SEQ图2.\*ARABIC3AMC算法的总体概览Fig2.3OverviewofAMC图2.3为AMC算法的总体概览。左边表示的是将人工探索替换成了用AutoML来探索,达到自动化地搜索每层网络的压缩策略,省时省力且比人类更容易取得最优解。右边表示的就是把搜索压缩策略看成了一个强化学习问题,通过训练一个DDPG代理,使得其能够对更定的网络结构,即环境Environment,给出最优的压缩策略,即Action。在这之前,许多的研究剪枝的文章主要集中研究如何设计规则,挑选卷积神经网络中每一层中哪些通道是嘴不重要的,这些不重要的通道有多少个等等。这些规则都是人们根据之前的研究或者自己的经验和技巧所设计出来,不可否认会有一些规则在剪枝和模型压缩上有亮眼的表现。但是,在大多数的情况下,人为设计的规则还是比不上机器在所搜空间上尽可能去搜最优解来得可靠。所以,作者就想出了一个全自动化的方法,抛弃了之前的所谓的启发式方法,不管是剪裁多少通道,剪裁哪些通道,都统统交给强化学习去学习来解决。因为在卷积神经网络中,每一层卷积层里的通道数都非常多,而且其对裁剪通道的多少十分的敏感,所以需要一个连续的动作空间,所以作者从众多强化学习代理中选取了DDPG这一代理,最大的原因就是DDPG的输出空间是连续的而非离散的,这样就可以使用0到1的一个Action值来代表该层网络的压缩率。如前文所述,因为要求Action在0-1之间,所以AMC选取了DDPG作为代理,图1.4展示了通过DDPGAgent预测每一层稀疏率的预测算法流程。在实验结果中,对于MobileNetV1网络而言,作者在使其达到70.2%精度的前提下,通过AMC降低其两倍的FLOPs,比Google官网论文中的0.75xMobilenet的效果要好得多。此外,通过AMC,其在TitanXP加速比达到了1.53,在安卓手机加速比达到了1.95,如图2.5所示。作者提出的AMC利用强化学习自动地在空间搜索最优策略,不仅仅大大提高了模型压缩的效率,更提高了模型压缩的质量,在节省了人力和物力的情况下依旧取得非常好的压缩效果。但是整个过程需要经过search,export,finetune三个步骤,较为繁琐费时。图2.SEQ图2.\*ARABIC4AMCaction预测算法Fig2.4ThealgorithmofAMCactionpredict图2.SEQ图2.\*ARABIC5AMCMobilenetV1实验结果Fig2.5TheresultofAMConMobilenetV1对规则化剪枝方法的思考过参数化是深度神经网络的公认特性,该特性也导致深度卷积神经网络的高计算成本和高内存占用。作为一种补救措施,神经网络剪枝则可以降低过参数化所带来的计算成本和内存占用,使得在受限的计算资源下,尽量地提高深度卷积神经网络的计算和存储效率。如图2.6所示,经典的神经网络剪枝的过程可以被概括为三个主要步骤:1)设计和训练一个比较大的神经网络模型,此模往往会过参数化,2)根据人为设定的某些标准对训练好的模型进行剪枝,精简模型,3)对剪枝精简过后的模型进行微调,以恢复一部分其在剪枝过程所损失的精度。图2.SEQ图2.\*ARABIC6剪枝典型三步骤Fig2.6Channelpruningsteps一般来说,剪枝过程背后有两个共识:一,大家都认为首先训练一个大的过参数化模型很重要ADDINNE.Ref.{B23FA971-2BAB-4483-BBC6-052AE6755779}[7],因为这样会提供高性能模型(更强的表征和优化能力),而人们可以安全地删除冗余参数而不会对准确率造成显著损伤。因此,这种观点很普遍,人们认为该方法比从头开始直接训练更小的网络(一种常用的基线方法)更优秀。二,剪枝后的架构和相关的权重被认为是获得最终高效模型的关键。因此目前大多的神经网络剪枝方法都选择在剪完枝后去微调剪枝后的小模型,而不是从头再开始训练。原因是研究者们认为剪枝后保留下来的权重通常都是比较重要的,只需要在此权重基础上再进行微调即可。而Liu等人ADDINNE.Ref.{741DBEA4-A387-4A14-B2EF-82B3A5178F25}[60]认为上面提到的两种观点都未必正确。针对多个数据集及多个网络架构,他们对当前最优剪枝算法进行了大量的实验验证和评估,得出了两个与先前研究者们达成的共识不一样的实验观察结果。首先,对于具备预定义目标网络架构的剪枝算法(图2.7),从随机初始化直接训练小目标模型能实现与使用经典三步流程相同的性能。在这种情况下,就没有必要先训练大模型然后再千方百计地进行剪枝压缩到小模型了。而是可以直接一步到位,直接从头训练剪枝后的小模型。其次,与目前大多数神经网络的剪枝算法相比,从头开始训练剪枝后的模型也可以达到与剪枝完微调后相当甚至更好的性能。作者的这一研究表明,对于之前研究者们提出的林林总总的剪枝算法而言,其实最重要的不是剪枝之后保留了哪些通道,保留下了哪些参数,而是保留下了多少个通道,换言之,相对于权重而言,通道的数目,即网络的结构显得更为重要。尽管这些目标架构还是需要训练大模型才能获得。作者的结果和文献中结果的矛盾之处在于超参数的选择、数据增强策略和评估基线模型的计算力限制。该论文的结果表明,广大研究者们需要重新审视现有的网络剪枝算法。第一阶段的过参数化似乎不像之前想象得那么有效。此外,保留和继承剪枝前大网络的权重值非但不是最好的选择,而且还可能导致剪枝后的模型再重新训练过程中陷入到局部极小值,即使保留的这些大网络的权重按剪枝标准来看它们是重要的。该论文的结果显示自动化的剪枝算法的价值可能在于识别高效结构,其实相当于隐形地在搜索最优的网络结构,而不是选择网络中重要的权重。在作者的实验中,作者使用Scratch-E来表示用相同的epoch数训练小型剪枝模型,使用Scratch-B来表示用相同的计算预算来训练,例如,在ImageNet上,如果剪枝模型节省了超过两倍的FLOPs,只需要在训练Scratch-B的时候加倍epoch数,这相当于比大型模型训练有更少的计算预算。图2.SEQ图2.\*ARABIC7预定义和未预定义(自动发现)的目标架构之间的区别。稀疏度x是用户指定的,a、b、c、d由剪枝算法决定Fig2.7Differencebetweenpredefinedandautomaticallydiscoveredtargetarchitectures,inchannelpruningasanexample.Thepruningratioxisuserspecified,whilea,b,c,disdeterminedbythepruningalgorithm.Unstructuredsparsepruningcanalsobeviewedasautomatic.预定义的目标架构的实验结果如表2.3和表2.4所示。表2.SEQ表2.\*ARABIC3基于通道剪枝的L1范数(准确率)结果。「PrunedModel」指大模型修剪后的模型。模型配置和「PrunedModel」均来自原论文Table2.3Results(accuracy)forL1-normbasedfilterpruning.“PrunedModel”isthemodelprunedfromthelargemodel.ConfigurationsofModelandPrunedModelarebothfromtheoriginalpaper.DatasetModelUnprunedPrunedModelFine-tunedScratch-EScratch-BCIFAR-10VGG-1693.63(±0.16)VGG-16-A93.41(士0.12)93.62(±0.11)93.78(±0.15)ResNet-5693.14(土0.12)ResNet-56-A92.97(±0.17)92.96(±0.26)93.09(±0.14)ResNet-56-B92.67(±0.14)92.54(±0.19)93.05(±0.18)ResNet-11O93.14(士0.24)ResNet-110-A93.14(±0.16)93.25(±0.29)93.22(+0.22)ResNet-110-B92.69(士0.09)92.89(±0.43)93.60(±0.25)ImageNetResNet-3473.31ResNet-34-A72.5672.7773.03ResNet-34-B72.2972.5572.91表格2.4为ThiNetADDINNE.Ref.{145F6471-2150-4BEB-BF71-2FD8A6E326F2}[7]的(准确率)结果。VGG-GAP和ResNet50-30这些模型是按照Luo等人ThiNet论文中定义的配置环境修剪后的模型。为调节我们的实现所使用框架与原论文框架不同所造成的影响,作者对比了未修剪大型模型的准确率下降程度。例如,对于修剪后的模型VGG-Conv,1.23是相对于左侧的71.03而言的,71.03是原论文中未修剪模型VGG-16的准确率;2.75是相对于左侧的71.51而言的,71.51是作者的实现中VGG-16的准确率。表2.SEQ表2.\*ARABIC4ThiNetADDINNE.Ref.{ED4E01AA-6F5A-47A9-B87A-D35C878C8752}[7]实验准确率结果Table2.4Results(accuracy)forThiNetDatasetUnprunedStrategyPrunedModelImageNetVGG-16VGG-ComVGG-GAPVGG-Tiny71.03Fine-tuned-1.23-3.67-11.617151Scratch-E-2.75-4.66-14.36Scratch-B0.21-2.85-11.58ResNet-50ResNet50-30%ResNet50-50%Re%Net50-70%75.15Fine-tuned-6.72-4.13-3.1076.13Scratch-E-5.21-2.82-1.71Scratch-B-4.56-2.23-1.01作者虽然通过大量的实验,发现了网络的结构重要性高于权值,但是,作者并未针对这些发现提出新的剪枝算法。在网络模型压缩中,通道剪枝ADDINNE.Ref.{DF7CCB2D-D2C5-45CC-8624-AB6C1BF0F499}[45]是一种十分有效的压缩方式。比较常见的剪枝pipeline是:1):训练一个完整模型,2):减掉冗余的部分,3):微调或重新训练压缩的模型。表2.SEQ表2.\*ARABIC5NetworkSlimmingADDINNE.Ref.{AAF9B1BE-99B3-427F-9648-683345FCBD84}[46]的准确率结果Table2.5TheaccuracyofNetworkSlimmingDatasetModelUnprunedPruneRatioFine-tunedScratch-EScratch-BCIFAR-10VGG-1993.53(±0.16)70%93.60(土0.16)93.30(±0.11)93.81(±0.14)PreResNet-16495.04(土0.16)40%94.77(±0.12)94.70(±0.11)94.90(±0.04)60%94.23(±0.21)94.58(10.18)4.71(土0.21)DenseNet-4094.10(±0.12)40%94.00(±0.20)93.68(±0.18)94.06(±0.12)60%93.87(±0.13)93.58(土0.21)93.85(土0.25)CIFAR-100VGG-1972.63(土0.21)50%72.32(土0.28)71.94(土0.17)73.08(土0.22)PreResNet-16476.80(土0.19)40%6.22(土0.20)76.36(土0.32)76.68(±0.35)60%74.17(±0.33)75.05(土0.08)75.73(±0.29)DenseNet-4073.82(±0.34)40%73.35(±0.17)73.24(土0.29)73.19(±0.26)60%72.46(±0.22)72.62(土0.36)72.91(±0.34)ImageNetVGG-1170.8450%68.627071.18基于元学习的剪枝方法在以往的方法中,通道剪枝大多是数据驱动的稀疏化或者基于人工设计规则来选择保留哪些通道,减掉哪些通道。而最近的AutoML风格的剪枝方式ADDINNE.Ref.{8F411DDD-7D35-4F8D-88F2-156FD3FBF408}[42],通过一些反馈机制或利用强化学习来自动的进行剪枝。同时,以往的方法通常会保留之前完整模型中的参数;而最近也有一些研究表明ADDINNE.Ref.{03F05FEA-0AC4-4957-82D8-BE4A07990508}[60],剪枝之后模型的性能,并不是由这些继承来的参数决定的,而是由结构本身决定的。结合以上观点,Liu等人ADDINNE.Ref.{475DA333-4954-4611-B871-DD64E8C6817F}[43]提出了一种元学习的方法——MetaPruning,利用元学习训练一个PruningNetwork用来生成压缩网络的参数,而不是继承或者重新训练。MetaPruningADDINNE.Ref.{B207D718-2F08-4556-8E46-0B2723A00B6B}[43]提出来一个Metanetwork,名为PruningNet,可以生成所有候选的剪枝网络的权重,并直接在验证集上评估,有效的搜索最佳结构。因此此方法应该包含两个部分,一个就是PruningNet怎么来的,另一个就是PrunedNet怎么搜的。下面将逐一进行介绍。• PruningNet的训练:PruningNet是一个元学习网络,以一组网络编码向量(c1,c2,,,cl)为输入,输出则为剪枝网络的权重。一个PruningNet的训练方式如下图3.11所示。图1.11中,PruningNet由多个block组成,其中的每个block由两个全连接层组成。在前向过程中,PruningNet以网络编码向量(即剪枝网络的每层通道数)为输入,生成权重矩阵。同时,剪枝网络以网络编码向量中的数值为输出通道,并将生成的权重矩阵裁剪匹配剪枝网络的输入输出。对于一个batch的输入图像,我们可以计算带权重的剪枝网络的前向损失。在反向过程中,本文并不是更新剪枝网络的权重,而是计算PruningNet的梯度,更新PruningNet的权重(全连接层参数)。在整个训练过程中,由于所有的操作都是可微的,所以能够进行端到端的学习。通过随机生成不同的网络编码向量,可以得到不同的剪枝网络结构。图2.SEQ图2.\*ARABIC8PruningNet的随机训练方法Fig2.8TrainingofPruningNet• Pruned-networksearch-evolutionaryalgorithm:在该文中,网络向量编码为prunednetworks的基因。在硬约束的前提下,他们首先随机选择大量的基因并获得相关的剪枝网络的准确率。选择前topk的基因,对其做变异和交叉,生成新的基因。同时对不符合要求的基因添加约束来消除。如此迭代数次,最终可以得到既满足约束又获得最高准确率的基因。具体算法如图2.9所示:图2.SEQ图2.\*ARABIC9进化搜索算法Fig2.9Evolutionarysearchalgori

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论