热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【论文阅读笔记】《ASurveyofModelCompressionandAccelerationforDeepNeuralNetworks》

 论文:ASurveyofModelCompressionandAccelerationforDeepNeuralNetworks         深度神经网络模型压缩与加速综述 

 

论文:A Survey of Model Compression and Acceleration for Deep Neural Networks    

          深度神经网络模型压缩与加速综述

      摘要--深度卷积神经网络(CNN)目前在很多视觉识别任务中有非常良好的表现。然而,目前的深度卷积神经网络模型非常耗费计算资源和内存,面临着在终端部署和低延迟需求场景下难以应用的问题。因此,一种很自然的解决方案就是在保证分类准确率不显著下降的前提下对深度卷积神经网络进行压缩和加速。近年来,该领域有很大发展。我们将在本论文中介绍近期压缩和加速 CNN 模型的先进技术。这些技术可以大致分为四类:参数裁剪和共享(parameter pruning and sharing)、低秩分解(low-rank factorization)、迁移/压缩卷积滤波器(transfered/compact convolutional filter)和知识精炼(knowledge distillation)。参数修剪和共享的方法将在论文开头详细描述其他几类方法也都会在文中介绍。我们对每一类方法的性能、相关应用、优势和缺陷等进行独到的分析。然后本文将介绍几个最近的其他成功方法,如动态网络和随机深度网络(stochastic depths network)。之后,我们将研究评估矩阵(evaluation matrix)——用于评估模型性能和近期基准的主要数据集。最后,我们总结并讨论了现有的挑战和可能的发展方向。

1 参数裁剪和共享

可以进一步分为三类:

(1)模型量化和二进制化

通过减少权重所占存储空间来压缩网络。

      网络量化通过减少表示每个权重所需的比特数来压缩原始网络。Gong et al. [6] 和 Wu et al. [7] 对参数值使用 K 均值标量量化。Vanhoucke et al. [8] 展示了 8 比特参数量化可以在准确率损失极小的同时实现大幅加速。[9] 中的研究在基于随机修约(stochastic rounding)的 CNN 训练中使用 16 比特定点表示法(fixed-point representation),显著降低内存和浮点运算,同时分类准确率几乎没有受到损失。

       S. Han et al. [10] 提出的方法是首先修剪不重要的连接,重新训练稀疏连接的网络。然后使用权重共享量化连接的权重,再对量化后的权重和码本(codebook)使用霍夫曼编码,以进一步降低压缩率。如图 1 所示,该方法首先通过正常的网络训练来学习连接,然后再修剪权重较小的连接,最后重新训练网络来学习剩余稀疏连接的最终权重。  

 

 

图 1. [10] 中提到的三阶段压缩方法:修剪、量化(quantization)和霍夫曼编码。修剪减少了需要编码的权重数量,量化和霍夫曼编码减少了用于对每个权重编码的比特数。稀疏表示的元数据包含压缩率。压缩机制不会带来任何准确率损失。

      Y. Choi et al.  [11]认为海森(Hessian)权重可以用来确定网络参数的重要程度,并且提出了使聚类网络参数的平均Hessian加权量化误差最小化。 对于每个权重用1bit表示的二进制神经网络,也有许多直接训练二进制权值的CNN,例如BinaryConnect [12],BinaryNet [13]和XNORNetworks [14]。

缺陷:此类二元网络的准确率在处理大型 CNN 网络如 GoogleNet 时会大大降低。另一个缺陷是现有的二进制化方法都基于简单的矩阵近似,忽视了二进制化对准确率的影响。针对这个问题,[16]提出一个=具有对角Hessian近似的牛顿算法(a proximal Newton algorithm with diagonal Hessian approximation ),可以直接最小化关于二进制权重的损失,[17]通过随机二值化权重并将隐藏状态计算中的乘法转换为符号变化来减少训练阶段中浮点乘法的时间。

(2)剪枝和共享

     网络剪枝和共享已经被用于降低网络复杂度和解决过拟合问题。有一种早期应用的剪枝方法称为偏差权重衰减法( the Biased Weight Decay)[18],其中最优脑损伤(The Optimal Brain Damage)[19]和最优脑手术(the Optimal Brain Surgeon [20])的方法基于损失函数的 Hessian 矩阵减少连接的数量,他们的研究表明这种剪枝方法的精确度比基于重要性的剪枝方法更高。

      这个方向最近的趋势是在预先训练的CNN模型中修剪冗余的,非信息量的权重。 例如,Srinivas和Babu [21]研究了神经元之间的冗余,并提出了一种无数据修剪方法去除多余的神经元。Han er al. [22]建议减少整个网络中的参数和操作总数。 Chen et al. [23]提出了一个HashedNets模型,该模型使用低成本的散列函数将权重分组为哈希表进行参数共享。文献[10]中的深度压缩方法去掉冗余连接并量化权重,然后使用霍夫曼编码对量化权重进行编码。 在[24]中,提出了一种基于软重量共享的简单正则化方法,其中包括在一个简单(重新)训练过程中的量化和修剪。 值得注意的是,上述修剪方案通常会在CNN中产生连接修剪。

    越来越多的学者对训练稀疏性限制的紧凑型CNN(compact CNNs with sparsity constraints )感兴趣,这些稀疏性约束通常在优化问题中作为L0或L1范数被引入。[25]中的工作对卷积滤波器施加了组稀疏约束(group sparsity constraint ),以实现结构化的脑损伤(structured brain Damage ),即以分组方式修剪卷积核。[26 ]在训练阶段引入了一组神经元上的稀疏正则化器,学习紧凑CNNs,可以减少卷积核的数量。[27]在每层上增加了一个结构稀疏正规化器,以减少普通的滤波器、通道甚至层。在滤波器级修剪中,所有上述工作都使用了L2 L1范数正则化器。[28]中的工作使用l1范数来选择和修剪不重要的过滤器。

缺陷:剪枝和共享方法存在一些潜在的问题。首先,若使用了 L1 或 L2 正则化,则剪枝方法需要更多的迭代次数才能收敛,此外,所有的剪枝方法都需要手动设置层的敏感度,即需要精调超参数,在某些应用中会显得很冗长繁重。

(3)设计结构化矩阵

       在只包含全连接层的网络中,参数数量可达到10亿[4],因此,研究全连接层的参数冗余是非常重要的,这通常是内存消耗方面的瓶颈所在。如果一个 m x n 阶矩阵只需要少于 m×n 个参数来描述,就是一个结构化矩阵(structured matrix)。通常这样的结构不仅能减少内存消耗,还能通过快速的矩阵-向量乘法和梯度计算显著加快推理和训练的速度。遵循这个方向,[29] [30]中的工作提出了一种基于循环预测的简单而有效的方法,同时保持了很低的错误率。给定一个向量r=,循环矩阵可以定义为:

                        

      这样内存消耗的复杂的从变为,该循环结构还可以使用快速傅立叶变换(FFT)来加速计算。

      在[31]中,引入了一种新颖的自适应快速变换来重新参数化完全连接层的矩阵向量乘法。[32]中的工作表明了简化的新概念在结构矩阵理论中的有效性。 他们提出的方法可以扩展到各种其他结构化矩阵类,包括与多维卷积[34]有关的块级和多级Toeplitz样[33]矩阵。

缺点:这种方法的一个潜在问题是结构约束会导致精度损失,因为约束可能会给模型带来偏差。另一方面,很难找到一个合适的结构矩阵。 没有理论推导出来。

2 低秩分解与稀疏性

   使用矩阵/张量分解以估计深层 CNN 中最具信息量的参数。

   CNN中的耗时主要来自卷积运算,减少卷积层会提高压缩率以及整体加速。一个典型的 CNN 卷积核是一个 4D 张量,需要注意的是这些张量中可能存在大量的冗余。而基于张量分解的思想是减少冗余的很有潜力的方法。全连接层也可以当成一个 2D 矩阵,同样可以进行低秩分解。

      长时间以来,使用低阶滤波器来加速卷积,例如高维DCT(离散余弦变换)和使用张量积的小波系统分别由1D DCT变换和1D小波构成。Rigamonti et al. [35]提出学习可分离的1D滤波器,遵循字典学习的想法。关于一些简单的DNN模型,在[36]中提出了一些卷积核的低秩近似和聚类方案。 他们为单个卷积层实现了2倍的加速,分类精度下降了1%。在[37 ]中提出了不同的张量分解方案,在文本识别中有4.5×加速,精度下降了1%。低秩近似是逐层完成的,在一个层经过低秩滤波器近似之后,该层的参数就被固定了,而之前的层已经用一种重构误差标准微调过。这是压缩 2D 卷积层的典型低秩方法,如图所示

                               

        针对核张量(kernel tensors ),[38]提出了典型的张量分解(Canonical Polyadic (CP) decomposition ),他们的工作使用非线性最小二乘法来计算CP分解。在[39]中,提出了一种新的从一开始就用于训练低秩约束CNNs的低秩张量分解算法,它使用BN来转换内部隐藏单元的**。

        通常,[39]提出的CN和BN分解方案可以在一开始就训练CNNs,然而他们之间没有什么区别,例如,在CP分解中找到***的低秩近似并不合适,有时可能不存在***秩K(K是秩数)近似。 而对于BN方案,分解总是存在的。我们还比较了表II中两种方法的性能。

                                                                                           

       通过实际的加速和压缩率来衡量它们的性能。 可以看到,BN方法可以实现略好的加速率,而CP版本提供更高的压缩率。

       全连接层可视为2D矩阵,因此上述方法也可应用于此。关于在完全连接的层中利用低秩的几个经典work,例如Misha et al. [40]使用低秩方法减少了深层模型中的动态参数数量。 [41]探索DNN中最终加权层的低阶矩阵分解以进行声学建模

缺陷:低秩方法很适合模型压缩和加速,该方法补充了深度学习的近期发展,如 dropout、修正单元(rectified unit)和 maxout。但是,低秩方法的实现并不容易,因为它涉及计算成本高昂的分解操作。另一个问题是目前的方法逐层执行低秩近似,无法执行非常重要的全局参数压缩,因为不同的层具备不同的信息。最后,分解需要大量的重新训练来达到收敛。

 

3 迁移/压缩卷积滤波器

设计特殊结构的卷积滤波器以减少存储和计算的复杂度。

     CNN对输入图像的特征提取具有一定的旋转平移不变的性质,这是能够训练非常深的网络的关键,不会出现严重的过拟合,虽然目前还缺少一个强有力的理论,但有大量实证支持,即平移不变性质和参数共享对良好的预测结果是很重要的。使用转移卷积滤波(transferred convolutional filters )器来压缩CNN模型的想法是由[42]的工作所推动的,它引入了等变群理论(equivariant group theory )。使 x 作为输入,Φ(·) 作为网络或层,T (·) 作为变换矩阵。则等变概念可以定义为:

                                                               

        使用变换矩阵 T (·) 转换输入 x,然后将其传送至网络或层Φ(·),其结果和先将 x 映射到网络再变换映射后的表征结果一致。根据该理论,将变换矩阵应用到层或滤波器Φ(·) 来对整个网络模型进行压缩是合理的。

 

缺陷:将迁移信息应用到卷积滤波器的方法需要解决几个问题。首先,这些方法的性能可与宽/平坦的架构(如 VGGNet)相媲美,但是无法与较窄/特殊的架构(如 GoogleNet、Residual Net)相比。其次,迁移假设有时过于强大以致于无法指导算法,使得在某些数据集上的结果不稳定。

4 知识精炼

        训练一个更加紧凑的神经网络以再现大型网络的输出结果

       据我们所知,Caruana et al.[49] 首先提出利用知识迁移(KT)来压缩模型。他们通过集成强分类器标注的伪数据训练了一个压缩模型,并再现了原大型网络的输出结果。然而他们的工作仅限于浅层网络。这个想法近来在 [50] 中扩展为知识精炼(Knowledge Distillation/KD),它可以将深度和宽度的网络压缩为浅层模型,该压缩模型模仿了复杂模型所能实现的功能。KD 的基本思想是通过软 softmax 学习教师输出的类别分布而降大型教师模型(teacher model)的知识精炼为较小的模型。

[51] 中的工作引入了 KD 压缩框架,即通过遵循学生-教师的范式减少深度网络的训练量,这种学生-教师的范式即通过软化教师的输出而惩罚学生。该框架将深层网络(教师)的集成压缩为相同深度的学生网络。为了完成这一点,学生学要训练以预测教师的输出,即真实的分类标签。尽管 KD 方法十分简单,但它同样在各种图像分类任务中表现出期望的结果。[52]中的工作旨在通过利用深度神经网络来解决网络压缩问题。 它提出了一种方法来训练薄而深的网络,称为FitNets,以压缩宽而浅(但仍然很深)的网络。 该方法扩展了思路,以允许更薄更深的学生模型。 为了从教师网络的中间表现中学习,FitNet使学生模仿了教师的全部特征地图。 但是,这样的假设太严格了,因为师生的能力可能差别很大。 在某些情况下,FitNet可能会对性能和收敛性产生不利影响。 所有上述方法都在MNIST,CIFAR-10,CIFAR-100,SVHN和AFLW基准数据集上进行了验证,仿真结果表明这些方法匹配或超过教师的表现,而要求显着减少参数和乘法。

缺点:基于 KD 的方法能令更深的模型变得更加浅而显著地降低计算成本。但是也有一些缺点,例如 KD 方法只能用于具有 Softmax 损失函数分类任务,这阻碍了其应用。另一个缺点是模型的假设有时太严格了,以至于其性能有时比不上其它方法。

讨论与挑战

深度模型的压缩和加速技术还处在早期阶段,目前还存在以下挑战:

1、大多数目前的顶尖方法都建立在设计完善的 CNN 模型的基础上,这限制了改变配置的***度(例如,网络结构和超参数)。为了处理更加复杂的任务,还需要更加可靠的模型压缩方法。

2、剪枝是一种压缩和加速 CNN 的有效方式。目前大多数的剪枝技术都是以减少神经元之间的连接设计的。另一方面,对通道进行剪枝可以直接减小特征映射的宽度并压缩模型。这很有效,但也存在挑战,因为减少通道会显著地改变下一层的输入。确定这类问题的解决方式同样很重要。

3、正如之前所提到的,结构化矩阵和迁移卷积滤波器方法必须使模型具有人类先验知识,这对模型的性能和稳定性有显著的影响。研究如何控制强加先验知识的影响是很重要的。

4、知识精炼(knowledge distillation/KD)方法有很多益处比如不需要特定的硬件或实现就能直接加速模型。开发基于 KD 的方法并探索如何提升性能仍然值得一试。

5、多种小型平台(例如,移动设备、机器人、自动驾驶汽车)的硬件限制仍然是阻碍深层 CNN 扩展的主要问题。如何全面利用有限的可用计算资源以及如何为这些平台设计特定的压缩方法仍然是个挑战。 

参考机器之心https://www.jiqizhixin.com/articles/2017-10-29

 



推荐阅读
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • 每日精选Codeforces训练题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)
    题目涉及三种不同类型的算法问题:1119E(贪心算法)、821C(栈模拟)和645D(拓扑排序)。其中,1119E的问题背景是有n种不同长度的棍子,长度分别为2^0, 2^1, …, 2^(n-1),每种棍子的数量为a[i]。任务是计算可以组成的三角形数量。根据三角形的性质,任意两边之和必须大于第三边。该问题可以通过贪心算法高效解决,通过合理选择棍子组合来最大化三角形的数量。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 本文介绍了并查集(Union-Find算法)的基本概念及其应用。通过一个具体的例子,解释了如何使用该算法来处理涉及多个集合的问题。题目要求输入两个整数 n 和 m,分别表示总人数和操作次数。算法通过高效的合并与查找操作,能够快速确定各个元素所属的集合,适用于大规模数据的动态管理。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 在Android平台中,播放音频的采样率通常固定为44.1kHz,而录音的采样率则固定为8kHz。为了确保音频设备的正常工作,底层驱动必须预先设定这些固定的采样率。当上层应用提供的采样率与这些预设值不匹配时,需要通过重采样(resample)技术来调整采样率,以保证音频数据的正确处理和传输。本文将详细探讨FFMpeg在音频处理中的基础理论及重采样技术的应用。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 2018 HDU 多校联合第五场 G题:Glad You Game(线段树优化解法)
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356在《Glad You Game》中,Steve 面临一个复杂的区间操作问题。该题可以通过线段树进行高效优化。具体来说,线段树能够快速处理区间更新和查询操作,从而大大提高了算法的效率。本文详细介绍了线段树的构建和维护方法,并给出了具体的代码实现,帮助读者更好地理解和应用这一数据结构。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
author-avatar
手机用户2502918237
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有