当前位置: 首页 > 科技观察

评论论文:深度神经网络当前模型压缩和加速方法的快速浏览

时间:2023-03-21 14:23:06 科技观察

大型神经网络具有大量的层和节点,因此考虑如何减少它们所需的内存和计算量非常重要,特别适用于在线学习和增量学习等实时应用。此外,近期智能穿戴设备的流行也为研究人员在资源(内存、CPU、功耗和带宽等)有限的便携式设备上部署深度学习应用提供了机会。高效的深度学习方法可以显着影响分布式系统、嵌入式设备和用于人工智能的FPGA等。一个典型的例子是ResNet-50[5],它有一个50层的卷积网络,需要超过95MB的存储空间,以及计算每幅图像所需的浮点乘法时间。如果剪掉一些多余的权重,可以节省大约75%的参数和50%的计算时间。对于手机、FPGA等只有几兆级资源的设备,如何使用这些方法压缩模型很重要。实现这一目标需要结合多个学科来寻找解决方案,包括但不限于机器学习、优化、计算机体系结构、数据压缩、索引和硬件设计。在本文中,我们回顾了压缩和加速深度神经网络的工作,这些工作受到了深度学习社区的广泛关注,并在近年来取得了长足的进步。我们将这些方法分为四类:参数剪枝和共享、低秩分解、移位/压缩卷积滤波器和知识细化等。基于参数剪枝和共享的方法侧重于探索模型参数的冗余部分并尝试去除冗余和不重要的参数。基于低秩分解技术的方法使用矩阵/张量分解来估计深度CNN中信息量最大的参数。基于transferred/compactconvolutionalfilters的方法,设计了一种特殊结构的卷积滤波器,降低了存储和计算的复杂度。另一方面,知识蒸馏学习一个精炼的模型,即训练一个更紧凑的神经网络来重现大型网络的输出。在表1中,我们简要总结了这四种方法。通常参数剪枝和共享、低秩分解和知识细化方法可以通过全连接层和卷积层在DNN中使用,它们可以获得有竞争力的性能。此外,使用迁移/压缩过滤器的方法仅适用于全卷积神经网络。低秩分解和移位/压缩过滤器的方法提供了一个端到端的管道,它们很容易直接在CPU/GPU环境中实现。虽然参数剪枝和共享使用不同的方法,如矢量量化、二进制编码和系数约束来执行这些任务,但通常它们需要花费几个处理步骤才能达到最终目标。表1.不同的模型压缩方法至于训练协议,基于参数剪枝/共享和低秩分解的模型可以从预训练模型中提取或从头开始训练,更加灵活和高效。而传输/压缩过滤器和知识细化模型仅支持从头开始训练。这些方法是独立设计的,又相互补充。例如,传输层和参数剪枝/共享可以一起使用,模型量化/二值化可以与低秩分解一起使用,以实现进一步的加速。该论文的作者详细描述了每一类方法,包括特征、优势和缺陷。1.参数剪枝和共享根据减少冗余(信息冗余或参数空间冗余)的方式,这些技术可以进一步分为三类:模型量化和二值化、参数共享和结构矩阵。1.量化和二值化网络量化通过减少表示每个权重所需的位数来压缩原始网络。龚等。[6]和吴等人。[7]对参数值使用K均值标量量化。范霍克等人。[8]表明8位参数量化可以在精度损失最小的情况下实现显着的加速。[9]中的研究在基于随机舍入的CNN训练中使用了16位定点表示,这显着减少了内存和浮点运算,而分类精度损失很小。[10]中提出的方法是先剪掉不重要的连接,重新训练稀疏连接的网络。然后使用权重来共享量化连接的权重,然后对量化权重和码本进行霍夫曼编码,进一步降低压缩率。如图1所示,该方法首先通过正常的网络训练学习连接,然后修剪权重较小的连接,最后重新训练网络以学习剩余稀疏连接的最终权重。缺点:这种二元网络在处理GoogleNet等大型CNN网络时,准确率会大大降低。另一个缺点是现有的二值化方法都是基于简单的矩阵逼近,忽略了二值化对精度损失的影响。图1图1.[10]中提到的三级压缩方法:剪枝、量化和霍夫曼编码。修剪减少了需要编码的权重数量,量化和霍夫曼编码减少了用于编码每个权重的比特数。稀疏表示的元数据包括压缩率。压缩机制不会带来任何精度损失。2.剪枝和共享网络剪枝和共享已被用于降低网络复杂度和解决过拟合问题。有一种早期应用的剪枝方法叫做BiasedWeightDecay,OptimalBrainDamage和OptimalBrainSurgeon方法基于损失函数的Hessian矩阵来减少连接数,他们的研究表明这种剪枝方法的准确率高于基于重要性的修剪方法(例如权重dDecay方法)。缺点:修剪和共享方法存在一些潜在问题。首先,如果使用L1或L2正则化,剪枝方法需要更多的迭代才能收敛。此外,所有的剪枝方法都需要手动设置层的敏感度,即需要对超参数进行微调。在某些应用程序中会非常冗长和繁重。3.设计一个结构化矩阵如果一个mxn阶的矩阵需要少于mxn个参数来描述,它就是一个结构化矩阵。通常这样的结构不仅可以减少内存消耗,还可以通过快速矩阵向量乘法和梯度计算显着加快推理和训练速度。2.低秩分解和稀疏性典型的CNN卷积核是4D张量。需要注意的是,这些张量中可能存在大量的冗余。基于张量分解的想法可能是一种非常有潜力的减少冗余的方法。全连接层也可以看作一个二维矩阵,低秩分解也是可行的。所有的近似都是逐层完成的。在一个层被低秩滤波器逼近后,该层的参数是固定的,而前面的层已经用重建误差准则重建。微调。这是压缩2D卷积层的典型低秩方法,如图2所示。图2图2.CNN模型压缩的低秩近似。左:原始卷积层。右图:用于低秩约束的秩为K的卷积层。表2表2.低秩模型及其基线模型在ILSVRC-2012数据集上的性能比较。缺点:低秩方法非常适合模型压缩和加速,它们补充了深度学习的最新发展,例如dropout、整流单元和maxout。然而,低秩方法的实现并不容易,因为它涉及计算量大的因式分解操作。另一个问题是当前的方法逐层执行低秩逼近并且不能执行非常重要的全局参数压缩,因为不同的层具有不同的信息。最后,分解需要大量的再训练才能收敛。3.迁移/压缩卷积滤波器使用迁移卷积层来压缩CNN模型的灵感来自于[42]中的工作,该工作引入了等变群理论。令x为输入,Φ(·)为网络或层,T(·)为变换矩阵。那么等变概念可以定义为:用变换矩阵T(·)对输入x进行变换,然后送入网络或层Φ(·),得到的结果与先将x映射到网络后的表示结果一致然后转换映射。根据这一理论,将变换矩阵应用于层或过滤器Φ(·)以压缩整个网络模型是合理的。表3.在CIFAR-10和CIFAR-100数据集上基于传输卷积滤波器的不同方法的性能比较陷阱:将传输信息应用于卷积滤波器的方法需要解决几个问题。首先,这些方法的性能可与宽/扁平架构(如VGGNet)相媲美,但无法与窄/特殊架构(如GoogleNet、ResidualNet)相媲美。其次,转移假设有时太强而无法指导算法,导致某些数据集上的结果不稳定。知识改进据我们所知,Caruana等人。[49]首先提出使用知识转移(KT)来压缩模型。他们通过整合由强分类器标记的假数据来训练压缩模型,并再现原始大型网络的输出。然而,他们的工作仅限于浅层网络。这个想法最近在[50]中被扩展为知识蒸馏(KD),它可以将深度和广泛的网络压缩成浅层模型,模仿复杂模型可以实现的目标。KD的基本思想是通过softmax学习teacher输出的类别分布,将大teacher模型的知识缩减为更小的模型。[51]中的工作引入了KD压缩框架,通过遵循学生-教师范式来减少深度网络的训练负荷,该范式通过软化教师的输出来惩罚学生。该框架将深度网络(教师)的集合压缩为相同深度的学生网络。为了实现这一点,学生被训练来预测教师的输出,即真实的分类标签。尽管它很简单,但KD方法在各种图像分类任务中也显示出可喜的结果。缺点:基于KD的方法可以使更深的模型变得更浅,并显着降低计算成本。但也存在一些缺点,如KD方法只能用于具有Softmax损失函数的分类任务,阻碍了其应用。另一个缺点是模型的假设有时过于严格,以至于其性能有时不如其他方法。表4.不同代表性研究中使用的模型压缩基线模型讨论和挑战深度模型的压缩和加速技术处于早期阶段,以下挑战仍然存在:大多数当前最先进的方法都建立在精心设计的基础上CNN在模型基础上,这限制了更改配置(例如,网络结构和超参数)的自由度。为了处理更复杂的任务,还需要更可靠的模型压缩方法。剪枝是压缩和加速CNN的有效方法。大多数当前的修剪技术旨在减少神经元之间的连接。另一方面,剪枝通道可以直接减小特征图的宽度,压缩模型。这很有效,但也具有挑战性,因为减少通道会显着改变下一层的输入。确定如何解决这些类型的问题也很重要。如前所述,结构化矩阵和传输卷积滤波器方法必须为模型配备人类先验知识,这对模型的性能和稳定性有重大影响。重要的是研究如何控制强加先验知识的影响。知识蒸馏(KD)方法有很多好处,例如无需特定硬件或实现即可直接加速模型。开发基于KD的方法并探索如何提高性能仍然是值得的。各种小型平台(例如移动设备、机器人、自动驾驶汽车)的硬件限制仍然是阻碍深度CNN扩展的主要问题。如何充分利用有限的可用计算资源以及如何为这些平台设计特定的压缩方法仍然是挑战。论文:ASurveyofModelCompressionandAccelerationforDeepNeuralNetworks论文链接:https://arxiv.org/abs/1710.09282深度卷积神经网络(CNN)在很多视觉识别任务中都取得了非常准确的表现。但是目前的深度卷积神经网络模型消耗了大量的计算资源和内存,面临着难以应用于终端部署和低时延需求场景的问题。因此,一个自然的解决方案是在不显着降低分类精度的情况下压缩和加速深度卷积神经网络。近年来,该领域取得了长足的发展。在本文中,我们描述了最近用于压缩和加速CNN模型的最先进技术。这些技术可以大致分为四类:参数修剪和共享、低秩分解、转移/紧凑卷积滤波器和知识蒸馏。).论文开头会详细介绍参数剪枝和共享的方法,论文中也会介绍其他几种方法。我们对每种方法的性能、相关应用、优缺点进行了独特的分析。然后本文介绍了其他几种最近成功的方法,例如动态网络和随机深度网络。之后,我们将检查评估矩阵——用于评估模型性能和最近基准的主要数据集。最后,我们总结和讨论了存在的挑战和可能的发展方向。【本文为栏目组织《机器之心》微信公众号《机器之心(id:almosthuman2014)》原文翻译】点击此处查看作者更多好文