工程科学学报,第41卷,第10期:1229-1239,2019年10月 Chinese Journal of Engineering,Vol.41,No.10:1229-1239,October 2019 D0I:10.13374/j.issn2095-9389.2019.03.27.002;http://journals..usth.eu.cn 深度神经网络模型压缩综述 李江昀12),赵义凯2),薛卓尔),蔡铮),李擎12) 1)北京科技大学自动化学院,北京1000832)工业过程知识自动化教育部重点实验室,北京100083 ☒通信作者,E-mail:Liqing(@ics.usth.edu.cn 摘要深度神经网络近年在计算机视觉以及自然语言处理等任务上不断刷新已有最好性能,已经成为最受关注的研究方 向.深度网络模型虽然性能显著,但由于参数量巨大、存储成本与计算成本过高,仍然难以部署到硬件受限的嵌入式或移动设 备上·相关研究发现,基于卷积神经网络的深度模型本身存在参数冗余,模型中存在对最终结果无用的参数,这为深度网络模 型压缩提供了理论支持.因此,如何在保证模型精度条件下降低模型大小已经成为热点问题.本文对国内外学者近几年在模 型压缩方面所取得的成果与进展进行了分类归纳并对其优缺点进行评价,并探讨了模型压缩目前存在的问题以及未来的发 展方向. 关键词深度神经网络:模型压缩:深度学习:网络剪枝:网络蒸馏 分类号TPI183 A survey of model compression for deep neural networks LI Jiang-yun',ZHAO Yi-kai,XUE Zhuo-er,CAl Zheng),LI Qing) 1)School of Automation Electrical Engineering,University of Science and Technology Beijing,Beijing 100083,China 2)Key Laboratory of Knowledge Automation for Industrial Processes,Ministry of Education,Beijing 100083,China Corresponding author,E-mail;Liqing@ies.ustb.edu.en ABSTRACT In recent years,deep neural networks (DNN)have attracted increasing attention because of their excellent performance in computer vision and natural language processing.The success of deep learning is due to the fact that the models have more layers and more parameters,which gives them stronger nonlinear fitting ability.Furthermore,the continuous updating of hardware equipment makes it possible to quickly train deep learning models.The development of deep learning is driven by the greater amounts of available annotated or unannotated data.Specifically,large-scale data provide models with greater learning space and stronger generalization ability.Although the performance of deep neural networks is significant,they are difficult to deploy in embedded or mobile devices with limited hardware due to their large number of parameters and high storage and computing costs.Recent studies have found that deep models based on a convolutional neural network are characterized by parameter redundancy as well as parameters that are irrelevant to the final model results,which provides theoretical support for the compression of deep network models.Therefore,determining ways to reduce model size while retaining model precision has become a hot research issue.Model compression refers to the reduction of a trained model through some operation to obtain a lightweight network with equivalent performance.After model compression,there are fewer network parameters and usually a reduction in the computation required,which greatly reduces the computational and storage costs and enables the deployment of the model in restricted hardware conditions.In this paper,the achievements and progress made in recent years by domestic and foreign scholars with respect to model compressionwere classified and summarized and their advantages and disadvantages were evaluated,including network pruning,parameter sharing,quantization,network decomposition,and network distillation.Then,existing problems and the future development of model compression were discussed. KEY WORDS deep neural networks;model compression;deep learning;network pruning;network distilling 收稿日期:2019-03-27 基金项目:国家自然科学基金资助项目(61671054):北京市自然科学基金资助项目(4182038)
工程科学学报,第 41 卷,第 10 期:1229鄄鄄1239,2019 年 10 月 Chinese Journal of Engineering, Vol. 41, No. 10: 1229鄄鄄1239, October 2019 DOI: 10. 13374 / j. issn2095鄄鄄9389. 2019. 03. 27. 002; http: / / journals. ustb. edu. cn 深度神经网络模型压缩综述 李江昀1,2) , 赵义凯1,2) , 薛卓尔1) , 蔡 铮1) , 李 擎1,2) 苣 1)北京科技大学自动化学院, 北京 100083 2) 工业过程知识自动化教育部重点实验室, 北京 100083 苣通信作者, E鄄mail: Liqing@ ies. ustb. edu. cn 摘 要 深度神经网络近年在计算机视觉以及自然语言处理等任务上不断刷新已有最好性能,已经成为最受关注的研究方 向. 深度网络模型虽然性能显著,但由于参数量巨大、存储成本与计算成本过高,仍然难以部署到硬件受限的嵌入式或移动设 备上. 相关研究发现,基于卷积神经网络的深度模型本身存在参数冗余,模型中存在对最终结果无用的参数,这为深度网络模 型压缩提供了理论支持. 因此,如何在保证模型精度条件下降低模型大小已经成为热点问题. 本文对国内外学者近几年在模 型压缩方面所取得的成果与进展进行了分类归纳并对其优缺点进行评价,并探讨了模型压缩目前存在的问题以及未来的发 展方向. 关键词 深度神经网络; 模型压缩; 深度学习; 网络剪枝; 网络蒸馏 分类号 TP183 收稿日期: 2019鄄鄄03鄄鄄27 基金项目: 国家自然科学基金资助项目(61671054); 北京市自然科学基金资助项目(4182038) A survey of model compression for deep neural networks LI Jiang鄄yun 1,2) , ZHAO Yi鄄kai 1,2) , XUE Zhuo鄄er 1) , CAI Zheng 1) , LI Qing 1,2) 苣 1) School of Automation & Electrical Engineering, University of Science and Technology Beijing, Beijing 100083, China 2) Key Laboratory of Knowledge Automation for Industrial Processes, Ministry of Education, Beijing 100083, China 苣Corresponding author, E鄄mail: Liqing@ ies. ustb. edu. cn ABSTRACT In recent years, deep neural networks (DNN) have attracted increasing attention because of their excellent performance in computer vision and natural language processing. The success of deep learning is due to the fact that the models have more layers and more parameters, which gives them stronger nonlinear fitting ability. Furthermore, the continuous updating of hardware equipment makes it possible to quickly train deep learning models. The development of deep learning is driven by the greater amounts of available annotated or unannotated data. Specifically, large鄄scale data provide models with greater learning space and stronger generalization ability. Although the performance of deep neural networks is significant, they are difficult to deploy in embedded or mobile devices with limited hardware due to their large number of parameters and high storage and computing costs. Recent studies have found that deep models based on a convolutional neural network are characterized by parameter redundancy as well as parameters that are irrelevant to the final model results, which provides theoretical support for the compression of deep network models. Therefore, determining ways to reduce model size while retaining model precision has become a hot research issue. Model compression refers to the reduction of a trained model through some operation to obtain a lightweight network with equivalent performance. After model compression, there are fewer network parameters and usually a reduction in the computation required, which greatly reduces the computational and storage costs and enables the deployment of the model in restricted hardware conditions. In this paper, the achievements and progress made in recent years by domestic and foreign scholars with respect to model compressionwere classified and summarized and their advantages and disadvantages were evaluated, including network pruning, parameter sharing, quantization, network decomposition, and network distillation. Then, existing problems and the future development of model compression were discussed. KEY WORDS deep neural networks; model compression; deep learning; network pruning; network distilling
·1230· 工程科学学报.第41卷,第10期 近几年,深度学习山受到极大关注,在图像处 更少,计算量通常也会减少,这使得计算开销与存储 理、自然语言处理、语音处理等方面都取得了成功应 开销大大降低,为模型部署在受限的硬件条件下提 用,已经成为机器学习中的热点领域.深度学习的 供了可能.当前存在的模型压缩方法大致可以分为 热潮源于多伦多大学的Krizhevsky等[2)在2012年 六种方式:网络剪枝(network pruning)、参数共享 的图像视觉识别比赛(imagenet large scale visual rec- (parameters sharing)、量化(quantization)、网络分解 ognition competition,ILSVRC)上,通过搭建深度神经 (network decomposition)、网络蒸馏(network distil- 网络(convolutional neural networks,.CNN),即Alex- ling)和紧凑网络设计(compact network design).本 Nt最终在图像分类以及图像定位上取得最优精 文尽可能详尽地整理了近几年在深度网络模型压缩 度,远超过其他基于传统机器学习的方法.自此,深 领域的工作,并对每种方法给出具体评价,同时对深 度学习受到学术界和工业界前所未有的追捧.后来 度网络模型压缩当前存在的问题以及未来发展方向 的图像视觉识别比赛中,VGG)、GoogLeNet!4]、Res- 进行探讨,最后对全文进行总结 Nets)、DenseNet!等网络陆续出现,并不断刷新比 1F 网络剪枝 赛最佳性能,尤其是在图像识别任务上ResNet的准 确率首次超越人类.深度学习之所以会取得成功, 网络剪枝[)是深度神经网络压缩中一种广泛 一方面是因为模型具有更深层数和更多参数,这使 使用的方法.网络剪枝早期是用来删除网络中冗余 得模型具有更强大的非线性拟合能力:另一方面是 参数,降低网络复杂度,从而提高网络泛化能力,并 因为硬件设备不断更新为深度学习模型快速训练提 防止过拟合.网络剪枝从剪枝粒度可以分为:单个 供了可能:此外,更多可获得的标注或未标注数据推 权重(weight)剪枝、核内权重(intra kernel weight)剪 动了深度学习的发展,具体来说,大规模数据意味着 枝、卷积核(kernel)剪枝、通道(channel/feature map/ 模型将有更大的学习空间以及更强大的泛化能力. filter)剪枝以及隐层(Layer)剪枝.不同剪枝方法虽 尽管深度网络模型在许多任务上都取得了不俗 然从思想上类似,但是在实际操作过程中区别很大, 表现,但这仅仅是在科研层面上进行的实验与尝试, 最终效果也不尽相同.以下子章节将对这几种剪枝 如果考虑到实际应用将其移植到嵌入式或者移动设 方法进行详细叙述. 备上,它将会受到多方面约束:1)模型参数量巨大: 1.1单个权重剪枝 比如AlexNet模型大小约200M,VGG-16[]模型大 在1989年,LeCun等fo]提出将网络中所有权 小超过500M,并且随着网络的不断加深,许多模型 重参数都看作单个参数的最优脑损伤(optimal brain 可以达到1G或2G甚至更大,如此大的模型对于实 damage,OBD)方法.优化时基于对角假设、极值假 际应用是巨大挑战:2)模型计算量大:由于深度神 设和二次假设利用二阶导数近似参数显著性移除网 经网络模型中存在着大量卷积运算,仅仅运行一次 络中不重要的权重来提高网络精度和泛化能力. 前向传播计算量都很巨大,比如ResNet50s]计算量 Hassibi等1-12]基于最优脑损伤方法,提出增加基于 达到3.8亿次,ResNet1:52[s)计算量甚至达到1l.3 手术恢复权重更新步骤的最优脑手术(optimal brain 亿次.而这仅仅是基础网络计算量,如果针对具体 surgeon,OBS)方法.Han等B]提出仅仅学习网络中 任务设计的最终模型计算量还要更大.即使使用图 重要连接可以在不影响网络最终精度情况下降低模 像处理单元)(graphic processing unit,GPU)或者神 型参数量与计算量.基于此方法,Han等[14]进一步 经网络处理单元(neural network processing unit, 提出三阶段流水线式深度压缩方法,包括剪枝、量化 NPU)等进行加速,也依然无法满足商用需求:3)电 和霍夫曼编码.为了加速网络计算,Srinivas等us]提 能消耗大:网络运行时持续的内访问存和计算资源 出使用稀疏计算训练神经网络,通过引入额外门变 的大量使用都导致耗电量巨大.对于硬件资源有限 量进行参数选择,最终网络精度与正常训练结果相当 的嵌入式或者移动设备来说,深度神经网络直接应 1.2核内权重剪枝 用在时间与空间上都受到巨大约束].因此,如何 上一节中的单个权重剪枝为非结构化剪枝,这 在保证模型效果的前提下对模型进行压缩已经成为 使得所有层变为稀疏分布.这将导致三个问题:仅 了一个热点问题,这使得深度网络模型压缩快速地 仅对部分参数进行剪枝并不能显著降低计算量与参 发展起来 数量:剪枝部分参数将会得到稀疏网络,而目前对稀 模型压缩是指对在保证模型精度情况下对模型 疏操作加速支持的库非常有限:得到的稀疏数据结 进行精简的方法.经过模型压缩后的网络参数量会 构将会需要额外存储开销尤其对于低精度权重
工程科学学报,第 41 卷,第 10 期 近几年,深度学习[1] 受到极大关注,在图像处 理、自然语言处理、语音处理等方面都取得了成功应 用,已经成为机器学习中的热点领域. 深度学习的 热潮源于多伦多大学的 Krizhevsky 等[2] 在 2012 年 的图像视觉识别比赛(imagenet large scale visual rec鄄 ognition competition,ILSVRC)上,通过搭建深度神经 网络( convolutional neural networks,CNN),即 Alex鄄 Net 最终在图像分类以及图像定位上取得最优精 度,远超过其他基于传统机器学习的方法. 自此,深 度学习受到学术界和工业界前所未有的追捧. 后来 的图像视觉识别比赛中,VGG [3] 、GoogLeNet [4] 、Res鄄 Net [5] 、DenseNet [6]等网络陆续出现,并不断刷新比 赛最佳性能,尤其是在图像识别任务上 ResNet 的准 确率首次超越人类. 深度学习之所以会取得成功, 一方面是因为模型具有更深层数和更多参数,这使 得模型具有更强大的非线性拟合能力;另一方面是 因为硬件设备不断更新为深度学习模型快速训练提 供了可能;此外,更多可获得的标注或未标注数据推 动了深度学习的发展,具体来说,大规模数据意味着 模型将有更大的学习空间以及更强大的泛化能力. 尽管深度网络模型在许多任务上都取得了不俗 表现,但这仅仅是在科研层面上进行的实验与尝试, 如果考虑到实际应用将其移植到嵌入式或者移动设 备上,它将会受到多方面约束:1)模型参数量巨大: 比如 AlexNet 模型大小约 200 M,VGG鄄鄄 16 [3] 模型大 小超过 500 M,并且随着网络的不断加深,许多模型 可以达到 1 G 或 2 G 甚至更大,如此大的模型对于实 际应用是巨大挑战;2) 模型计算量大:由于深度神 经网络模型中存在着大量卷积运算,仅仅运行一次 前向传播计算量都很巨大,比如 ResNet50 [5] 计算量 达到 3郾 8 亿次,ResNet152 [5] 计算量甚至达到 11郾 3 亿次. 而这仅仅是基础网络计算量,如果针对具体 任务设计的最终模型计算量还要更大. 即使使用图 像处理单元[7] (graphic processing unit, GPU)或者神 经网 络 处 理 单 元 ( neural network processing unit, NPU)等进行加速,也依然无法满足商用需求;3)电 能消耗大:网络运行时持续的内访问存和计算资源 的大量使用都导致耗电量巨大. 对于硬件资源有限 的嵌入式或者移动设备来说,深度神经网络直接应 用在时间与空间上都受到巨大约束[8] . 因此,如何 在保证模型效果的前提下对模型进行压缩已经成为 了一个热点问题,这使得深度网络模型压缩快速地 发展起来. 模型压缩是指对在保证模型精度情况下对模型 进行精简的方法. 经过模型压缩后的网络参数量会 更少,计算量通常也会减少,这使得计算开销与存储 开销大大降低,为模型部署在受限的硬件条件下提 供了可能. 当前存在的模型压缩方法大致可以分为 六种方式:网络剪枝( network pruning)、参数共享 (parameters sharing)、量化( quantization)、网络分解 (network decomposition)、网络蒸馏( network distil鄄 ling)和紧凑网络设计(compact network design). 本 文尽可能详尽地整理了近几年在深度网络模型压缩 领域的工作,并对每种方法给出具体评价,同时对深 度网络模型压缩当前存在的问题以及未来发展方向 进行探讨,最后对全文进行总结. 1 网络剪枝 网络剪枝[9] 是深度神经网络压缩中一种广泛 使用的方法. 网络剪枝早期是用来删除网络中冗余 参数,降低网络复杂度,从而提高网络泛化能力,并 防止过拟合. 网络剪枝从剪枝粒度可以分为:单个 权重(weight)剪枝、核内权重(intra kernel weight)剪 枝、卷积核(kernel)剪枝、通道(channel / feature map / filter)剪枝以及隐层(Layer)剪枝. 不同剪枝方法虽 然从思想上类似,但是在实际操作过程中区别很大, 最终效果也不尽相同. 以下子章节将对这几种剪枝 方法进行详细叙述. 1郾 1 单个权重剪枝 在 1989 年,LeCun 等[10] 提出将网络中所有权 重参数都看作单个参数的最优脑损伤(optimal brain damage,OBD)方法. 优化时基于对角假设、极值假 设和二次假设利用二阶导数近似参数显著性移除网 络中不重要的权重来提高网络精度和泛化能力. Hassibi 等[11鄄鄄12]基于最优脑损伤方法,提出增加基于 手术恢复权重更新步骤的最优脑手术(optimal brain surgeon,OBS)方法. Han 等[13]提出仅仅学习网络中 重要连接可以在不影响网络最终精度情况下降低模 型参数量与计算量. 基于此方法,Han 等[14] 进一步 提出三阶段流水线式深度压缩方法,包括剪枝、量化 和霍夫曼编码. 为了加速网络计算,Srinivas 等[15]提 出使用稀疏计算训练神经网络,通过引入额外门变 量进行参数选择,最终网络精度与正常训练结果相当. 1郾 2 核内权重剪枝 上一节中的单个权重剪枝为非结构化剪枝,这 使得所有层变为稀疏分布. 这将导致三个问题:仅 仅对部分参数进行剪枝并不能显著降低计算量与参 数量;剪枝部分参数将会得到稀疏网络,而目前对稀 疏操作加速支持的库非常有限;得到的稀疏数据结 构将会需要额外存储开销尤其对于低精度权重. ·1230·
李江昀等:深度神经网络模型压缩综述 ·1231· 针对以上非结构化剪枝的问题,Anwar等I16]率 可以解决传统剪枝方法的局部重要性判断以及无法 先提出了结构化剪枝的概念.方法的主要思想是定 弥补的剪枝过程,原理类似于随机神经元失活 义显著性变量并进行贪婪剪枝,提出核内定步长粒 1.3卷积核剪枝与通道剪枝 度将细粒度剪枝转化为粗粒度剪枝如通道剪枝或卷 卷积核剪枝与通道剪枝都属于粗粒度剪枝,剪 积核剪枝.核内定步长粒度核心思想为作用在同一 枝后模型使用现有硬件与计算库即可进行训练,并 输入特征图上的卷积核必须采用相同的步长和偏 且最终可以获得更高压缩率与更短计算时间.虽然 置,作用在不同特征图上的卷积核步长与偏置可以 两种剪枝方式出发点并不一样,但其本质上是一致 不同.进行贪婪剪枝时,提出使用进化粒子滤波器 的,特征图与卷积核具有对应关系,减去某一个特征 决定网络连接重要性,使用此方法可以保证网络准 图的同时与其相连的卷积核也将被一起移除 确率下降更低.Wen等[]提出了结构稀疏化的学 i等2】提出基于卷积核剪枝的压缩技术.主 习方法去对深度神经网络的结构如卷积核、通道、层 要思想是对网络输出精度影响较小的卷积核进行剪 深度等进行正则化.此方法可以从一个更大的深度 枝,通过移除网络中那些卷积核以及其所连接的特 神经网络学习到一个更紧凑的模型来减少参数量和 征图,网络计算量大幅度降低.假设网络第i个卷 计算量,而且可以获得对深度神经网络硬件友好的 积层的输入通道数为n:,h,/w:分别表示输入特征图 结构化稀疏方式来加速网络验证并可以提高最终分 的宽和高,通过卷积层得到的输出特征图通道数为 类精度 n:+1,h:+1/o:+1分别表示输出特征图的宽和高,卷积 Lin等8]提出结构化稀疏正则化.此方法结合 核的宽和高均为k,那么卷积核矩阵F:∈ 两种不同的结构化稀疏方式,充分协调全局输出与 Rxxx,进行卷积运算的计算量为n+1n,2h+1 局部剪枝操作去自适应的剪枝滤波器.此外,提出 w:+1·根据图1所示,当一个滤波器F,被剪枝掉, 基于拉格朗日乘法器的交替更新机制在提升网络结 它所对应的特征图x+,也将被移除,这减少了 构化稀疏性与优化识别损失之间进行更替.Go n,2h+10:+1次计算量.此外,下一层中与被剪枝掉 等9]提出一种新的模型压缩方法称为“动态网络手 特征图所对应的滤波器也将被移除,这又减少几+2 术”(dynamic network surgery),它可以通过网络训 k2h:+2心:+2的计算量.为了衡量每层滤波器重要性, 练动态地进行网络剪枝.与之前使用贪婪方式进行 提出通过计算每一层滤波器权重绝对值之和,然后 剪枝的方法比,此方法将连接拼接的思想结合到整 移除那些求和值较小的滤波器以及所对应特征图的 个网络剪枝过程中可以有效避免错误剪枝且使其成 方法.为了在多个层同时进行剪枝,又提出独立剪 为连续过程.Jia等[2o】提出Drop Prunning剪枝技 枝和贪婪剪枝两种方式.对于剪枝后网络训练也提 术,此方法也采用标准的迭代剪枝-重训练的策略, 出两种训练方式,分别为多次剪枝操作后再训练与 提出在每一个剪枝阶段都使用策略,随机删除一部 剪枝和重训练交替进行,针对不同难度网络采用不 分不重要权重和随机恢复一些被剪枝权重,此方法 同训练方式 卷积核矩阵 F 图1减去一个滤波器及其对应的特征图[2)] Fig.I Pruning a filter and its corresponding feature map(2] Hu等[2]提出网络修剪(network trimming),通 多滤波器之间的激活是高度不相关的,因此利用这 过对在大型数据集上神经元的输出分析来减掉不重 点来剔除大量只具有少量信息的滤波器而不影响模 要部分来迭代地优化网络.Tian等s]发现,在最后 型性能.Luo等2]提出将滤波器剪枝当作一个优化 一个卷积层中,经过线性判别分析(linear discrimi-- 问题,并且揭示对滤波器进行剪枝需要基于从下一 nant analysis,LDA)分析发现对于每一个类别,有很 层计算得到统计信息而非当前层,这是此方法与其
李江昀等: 深度神经网络模型压缩综述 针对以上非结构化剪枝的问题,Anwar 等[16] 率 先提出了结构化剪枝的概念. 方法的主要思想是定 义显著性变量并进行贪婪剪枝,提出核内定步长粒 度将细粒度剪枝转化为粗粒度剪枝如通道剪枝或卷 积核剪枝. 核内定步长粒度核心思想为作用在同一 输入特征图上的卷积核必须采用相同的步长和偏 置,作用在不同特征图上的卷积核步长与偏置可以 不同. 进行贪婪剪枝时,提出使用进化粒子滤波器 决定网络连接重要性,使用此方法可以保证网络准 确率下降更低. Wen 等[17] 提出了结构稀疏化的学 习方法去对深度神经网络的结构如卷积核、通道、层 深度等进行正则化. 此方法可以从一个更大的深度 神经网络学习到一个更紧凑的模型来减少参数量和 计算量,而且可以获得对深度神经网络硬件友好的 结构化稀疏方式来加速网络验证并可以提高最终分 类精度. Lin 等[18]提出结构化稀疏正则化. 此方法结合 两种不同的结构化稀疏方式,充分协调全局输出与 局部剪枝操作去自适应的剪枝滤波器. 此外,提出 基于拉格朗日乘法器的交替更新机制在提升网络结 构化稀疏性与优化识别损失之间进行更替. Guo 等[19]提出一种新的模型压缩方法称为“动态网络手 术冶(dynamic network surgery), 它可以通过网络训 练动态地进行网络剪枝. 与之前使用贪婪方式进行 剪枝的方法比,此方法将连接拼接的思想结合到整 个网络剪枝过程中可以有效避免错误剪枝且使其成 为连续过程. Jia 等[20] 提出 Drop Prunning 剪枝技 术,此方法也采用标准的迭代剪枝鄄鄄重训练的策略, 提出在每一个剪枝阶段都使用策略,随机删除一部 分不重要权重和随机恢复一些被剪枝权重,此方法 可以解决传统剪枝方法的局部重要性判断以及无法 弥补的剪枝过程,原理类似于随机神经元失活. 1郾 3 卷积核剪枝与通道剪枝 卷积核剪枝与通道剪枝都属于粗粒度剪枝,剪 枝后模型使用现有硬件与计算库即可进行训练,并 且最终可以获得更高压缩率与更短计算时间. 虽然 两种剪枝方式出发点并不一样,但其本质上是一致 的,特征图与卷积核具有对应关系,减去某一个特征 图的同时与其相连的卷积核也将被一起移除. Li 等[21] 提出基于卷积核剪枝的压缩技术. 主 要思想是对网络输出精度影响较小的卷积核进行剪 枝,通过移除网络中那些卷积核以及其所连接的特 征图,网络计算量大幅度降低. 假设网络第 i 个卷 积层的输入通道数为 ni,hi / wi 分别表示输入特征图 的宽和高,通过卷积层得到的输出特征图通道数为 ni + 1 ,hi + 1 / wi + 1分别表示输出特征图的宽和高,卷积 核 的 宽 和 高 均 为 k, 那 么 卷 积 核 矩 阵 Fi 沂 R ni 伊 ni + 1 伊 k 伊 k ,进行卷积运算的计算量为 ni + 1 ni k 2 hi + 1 wi + 1 . 根据图 1 所示,当一个滤波器 Fi,j被剪枝掉, 它所对应的特征图 xi + 1,j 也将被移除, 这减少了 ni k 2 hi + 1wi + 1次计算量. 此外,下一层中与被剪枝掉 特征图所对应的滤波器也将被移除,这又减少 ni + 2 k 2 hi + 2wi + 2的计算量. 为了衡量每层滤波器重要性, 提出通过计算每一层滤波器权重绝对值之和,然后 移除那些求和值较小的滤波器以及所对应特征图的 方法. 为了在多个层同时进行剪枝,又提出独立剪 枝和贪婪剪枝两种方式. 对于剪枝后网络训练也提 出两种训练方式,分别为多次剪枝操作后再训练与 剪枝和重训练交替进行,针对不同难度网络采用不 同训练方式. 图 1 减去一个滤波器及其对应的特征图[21] Fig. 1 Pruning a filter and its corresponding feature map [21] Hu 等[22] 提出网络修剪( network trimming),通 过对在大型数据集上神经元的输出分析来减掉不重 要部分来迭代地优化网络. Tian 等[23] 发现,在最后 一个卷积层中,经过线性判别分析( linear discrimi鄄 nant analysis, LDA)分析发现对于每一个类别,有很 多滤波器之间的激活是高度不相关的,因此利用这 点来剔除大量只具有少量信息的滤波器而不影响模 型性能. Luo 等[24]提出将滤波器剪枝当作一个优化 问题,并且揭示对滤波器进行剪枝需要基于从下一 层计算得到统计信息而非当前层,这是此方法与其 ·1231·
·1232· 工程科学学报.第41卷,第10期 他方法的重要区别.He等2]提出软滤波器剪枝加 非结构化的连续体显式调整.Cheng等[]提出使用 速深度神经网络的推断。此方法允许被剪掉滤波器 循环推测方法去代替全连接层中卷积线性预测.此 在训练中继续更新,这使得网络有更大模型容量与 循环结构可以持续减少内存占用并可以使用快速傅 优化空间,并且可以减少对预训练模型依赖,使得模 里叶变换来加速计算,大大降低模型空间复杂度. 型能从头训练 以上三种方法均是基于结构化矩阵方式来减少内存 He等2]提出一种递归两阶段通道剪枝算法去 消耗并加速网络的推理以及训练速度 有效地对每层进行剪枝.首先利用lass0回归方法 Chen等[)]提出利用网络本身冗余去实现模型 对卷积通道进行选择性删除,然后利用最小二乘重 压缩的哈希网络.此方法利用低成本哈希函数随机 构删除之前网络响应.进一步将此方法推广到多分 地将有连接权重分组到哈希桶中,同一个哈希桶内 支情况,在保证性能前提下降低模型参数量与计算 参数将共享同一值,这些参数可以使用反向传播进 量.H血等[2]认为存在的剪枝方法直接重构特征图 行调整.哈希程序不需要额外内存消耗并可以大大 误差来进行通道选择,这忽略了特征图特征和语义 提高网络的速度.Shi等[34]在哈希网络基础上进一 分布以及通道对整体表现的真正贡献,因此提出同 步提出函数哈希网络.对于网络每一层,使用多个 时利用基础模型输出以及被剪枝的分类损失函数去 低成本哈希函数在压缩空间取值,然后使用小重构 监督每层通道选择,尤其引入附加损失去编码基础 网络去恢复那一层输出.Han等1)使用k均值聚类 模型和被剪枝模型特征图内特征与语义分布差异, 的方法进行参数共享.首先修剪不重要连接,重新 通过同时考虑重构误差、附加损失和分类损失,被剪 训练稀疏连接网络,然后使用权重共享连接权重,再 枝后模型精度获得极大提高.Zhuang等[2]提出一 对量化后的权重和码本使用霍夫曼编码,以进一步 个简单有效判别力驱动的通道剪枝去选择真正有助 降低压缩率.如图2所示,对训练好的模型,使用k 于判别力的通道.引入判别力驱动损失函数去增加 均值聚类算法确定每一层共享权重数值,所有属于 网络中间层判别力并通过考虑附加损失和重构误差 同一簇权重共享相同权值,但是对不同层权值不共 去选择出每层最有判别力通道,最后提出一种贪婪 享.将n个原始权重W={w1,w2,…,wn}划分到k 算法去进行通道选择以及参数优化.He与Han[2] 个聚类中C={c1,c2,…,cn},n≥k,最小化簇内平 提出一种自动深度压缩方法,利用强化学习去采样 方和(within-cluster sum of squares,WCSS): 设计空间实现了更高的模型压缩率 argmin∑∑lw-c,2 (1) 评价:网络剪枝是为了移除网络中冗余参数,从 i=1 weci 而降低网络复杂度,提高网络泛化能力.因此最重 Wu等3]提出对权重使用k均值算法,通过仅 要的问题就是如何确定网络中哪些参数是冗余的, 记录k个聚类中心以及权重分配指数进行权值共享 不论是哪种剪枝方式都必须要面对此问题.为此, 压缩算法.Lu等6]提出对循环神经网络(recurrent 许多方法已经被提出来,但是目前并没有明确准则 neural networks,RNN)使用低秩分解与参数共享机 来解决此问题.大多数方法都需要反复实验来确 制减少循环结构冗余.i等)提出权重采样网 定,这造成人力与物力的极大浪费.此外,剪枝后的 络,从一个紧密可学习参数集中采样来学习模型参 网络有可能需要额外的存储开销以及计算库,这对 数.这种方式天然迫使网络参数共享,且可以同时 于模型在嵌入式或者移动设备上部署造成影响. 提升权重与计算共享,最终结合权值量化可以在模 2参数共享 型大小以及计算量上取得巨大下降.Yang等)提 出卷积滤波器表示的权重共享方法进行模型压缩. 参数共享或者权值共享主要思想就是让网络中 该方法通过学习三维张量滤波器(filter summary, 多个参数共享同一值,但是具体实现方式不尽相同. S),减少卷积层参数个数.将卷积滤波器作为重叠 Appuswamy等[o]推导了高效能神经形态结构中网 三维块从张量滤波器中提取,并在它们重叠区域将 络表示与块托普利兹卷积矩阵之间关系,并在此基 附近滤波器加入张量滤波器共享权重. 础上利用一组结构化卷积矩阵来实现深度卷积网络 评价:参数共享主要是让网络中多个参数共享 并取得显著效果.Sindhwani等[3]提出统一框架来 一值.此方法从原理上可以极大的降低模型参数 学习一大类以低秩为特征的结构参数矩阵.结构化 量,但是在实际操作过程中,通常会需要进行k均值 转换允许快速函数和梯度评估,并跨越丰富参数共 聚类,模型最终结果与聚类效果息息相关.而且,如 享配置范围,其统计建模能力可以沿着从结构化到 果过分追求模型压缩比,使用参数共享后模型精度
工程科学学报,第 41 卷,第 10 期 他方法的重要区别. He 等[25] 提出软滤波器剪枝加 速深度神经网络的推断. 此方法允许被剪掉滤波器 在训练中继续更新,这使得网络有更大模型容量与 优化空间,并且可以减少对预训练模型依赖,使得模 型能从头训练. He 等[26]提出一种递归两阶段通道剪枝算法去 有效地对每层进行剪枝. 首先利用 lasso 回归方法 对卷积通道进行选择性删除,然后利用最小二乘重 构删除之前网络响应. 进一步将此方法推广到多分 支情况,在保证性能前提下降低模型参数量与计算 量. Hu 等[27]认为存在的剪枝方法直接重构特征图 误差来进行通道选择,这忽略了特征图特征和语义 分布以及通道对整体表现的真正贡献,因此提出同 时利用基础模型输出以及被剪枝的分类损失函数去 监督每层通道选择,尤其引入附加损失去编码基础 模型和被剪枝模型特征图内特征与语义分布差异, 通过同时考虑重构误差、附加损失和分类损失,被剪 枝后模型精度获得极大提高. Zhuang 等[28] 提出一 个简单有效判别力驱动的通道剪枝去选择真正有助 于判别力的通道. 引入判别力驱动损失函数去增加 网络中间层判别力并通过考虑附加损失和重构误差 去选择出每层最有判别力通道,最后提出一种贪婪 算法去进行通道选择以及参数优化. He 与 Han [29] 提出一种自动深度压缩方法,利用强化学习去采样 设计空间实现了更高的模型压缩率. 评价:网络剪枝是为了移除网络中冗余参数,从 而降低网络复杂度,提高网络泛化能力. 因此最重 要的问题就是如何确定网络中哪些参数是冗余的, 不论是哪种剪枝方式都必须要面对此问题. 为此, 许多方法已经被提出来,但是目前并没有明确准则 来解决此问题. 大多数方法都需要反复实验来确 定,这造成人力与物力的极大浪费. 此外,剪枝后的 网络有可能需要额外的存储开销以及计算库,这对 于模型在嵌入式或者移动设备上部署造成影响. 2 参数共享 参数共享或者权值共享主要思想就是让网络中 多个参数共享同一值,但是具体实现方式不尽相同. Appuswamy 等[30] 推导了高效能神经形态结构中网 络表示与块托普利兹卷积矩阵之间关系,并在此基 础上利用一组结构化卷积矩阵来实现深度卷积网络 并取得显著效果. Sindhwani 等[31] 提出统一框架来 学习一大类以低秩为特征的结构参数矩阵. 结构化 转换允许快速函数和梯度评估,并跨越丰富参数共 享配置范围,其统计建模能力可以沿着从结构化到 非结构化的连续体显式调整. Cheng 等[32]提出使用 循环推测方法去代替全连接层中卷积线性预测. 此 循环结构可以持续减少内存占用并可以使用快速傅 里叶变换来加速计算,大大降低模型空间复杂度. 以上三种方法均是基于结构化矩阵方式来减少内存 消耗并加速网络的推理以及训练速度. Chen 等[33]提出利用网络本身冗余去实现模型 压缩的哈希网络. 此方法利用低成本哈希函数随机 地将有连接权重分组到哈希桶中,同一个哈希桶内 参数将共享同一值,这些参数可以使用反向传播进 行调整. 哈希程序不需要额外内存消耗并可以大大 提高网络的速度. Shi 等[34] 在哈希网络基础上进一 步提出函数哈希网络. 对于网络每一层,使用多个 低成本哈希函数在压缩空间取值,然后使用小重构 网络去恢复那一层输出. Han 等[14]使用 k 均值聚类 的方法进行参数共享. 首先修剪不重要连接,重新 训练稀疏连接网络,然后使用权重共享连接权重,再 对量化后的权重和码本使用霍夫曼编码,以进一步 降低压缩率. 如图 2 所示,对训练好的模型,使用 k 均值聚类算法确定每一层共享权重数值,所有属于 同一簇权重共享相同权值,但是对不同层权值不共 享. 将 n 个原始权重 W = {w1 ,w2 ,…,wn }划分到 k 个聚类中 C = { c1 ,c2 ,…,cn },n垌k,最小化簇内平 方和(within鄄cluster sum of squares, WCSS): argmin C 移 k i = 1 移w沂ci |w - ci | 2 (1) Wu 等[35]提出对权重使用 k 均值算法,通过仅 记录 k 个聚类中心以及权重分配指数进行权值共享 压缩算法. Lu 等[36]提出对循环神经网络 (recurrent neural networks,RNN) 使用低秩分解与参数共享机 制减少循环结构冗余. Jin 等[37] 提出权重采样网 络,从一个紧密可学习参数集中采样来学习模型参 数. 这种方式天然迫使网络参数共享,且可以同时 提升权重与计算共享,最终结合权值量化可以在模 型大小以及计算量上取得巨大下降. Yang 等[38] 提 出卷积滤波器表示的权重共享方法进行模型压缩. 该方法通过学习三维张量滤波器 ( filter summary, FS),减少卷积层参数个数. 将卷积滤波器作为重叠 三维块从张量滤波器中提取,并在它们重叠区域将 附近滤波器加入张量滤波器共享权重. 评价:参数共享主要是让网络中多个参数共享 一值. 此方法从原理上可以极大的降低模型参数 量,但是在实际操作过程中,通常会需要进行 k 均值 聚类,模型最终结果与聚类效果息息相关. 而且,如 果过分追求模型压缩比,使用参数共享后模型精度 ·1232·
李江昀等:深度神经网络模型压缩综述 ·1233. 权重 聚类索引 32位浮点数 2位无符号整型数 聚类中心 微调过来的聚类中心 209 -0.98 1.48 0.09 2.00 1.96 0.05 -0.14 -1.08 2.12 1.50 1.48 聚类 091 192 0 -1.03 0.00 0.04 乘以 187 0 1.53 1.49 3 -1.00 学习率 -0.97 梯度 -0.03 -0.01 0.03 0.02 0.03 012 0.02 007 04 0.01 0.01 0.02 0.12 0.03 0.01 0.02 0.02 分组 降维 -0.01 0.02 0.04 0.01 0.02 -0.01 0.01 0.04 -0.02 0.04 0.07 -0.02 0.01 -0.02 -0.01 -0.02 0.01 0.01 0.03 图2 通过标量量化与中心体微调实现权重共享[4) Fig.2 Weight sharing by sealar quantization (top)and centroid fine-tuning bottom)(4) 会明显下降 络,分别为二值权重网络(binary-weight-networks)和 3量化 同或网络(XNOR-networks).二值权重网络通过对 滤波器权重进行二值量化节省32倍内存.同或网 量化主要思想是降低权重所需要的比特数来压 络对输入以及滤波器权重均进行二值量化,结果可 缩原始网络,主要包括低精度和重编码两类方法. 以提速58倍,减少内存32倍.Li等]对同或网络 对于卷积神经网络来说,网络模型权重都是单精度 改进,将卷积神经网络网络层输入进行高精度二值 浮点型32位.低精度方法使用更低位数的浮点数 量化,从而实现高精度二值网络计算,同或网络也是 或整型数对其进行训练、测试或存储:重编码方法对 对每个卷积神经网络网络层权值和输入进行二值 原有数据进行重新编码,采用更少的位数对原有数 化,这样整个卷积神经网络计算都是二值化,计算速 据进行表示,实现了模型的压缩. 度快,占内存小.Hwang与Sung[4s]提出基于重训练 低精度:Gupta等〔]基于随机修约的卷积神经 的反向传播优化定点设计.定点网络使用3值权重 网络训练中使用16比特定点表示法,显著降低内存 和3位表示信号,结果与浮点型网络相比精度下降 和浮点运算,同时分类准确率几乎没有受到损失. 很微弱.Hou等6)提出具有对角近似牛顿算法直 Han等人[4]提出对数据冗余精度进行裁剪.原本 接最小化二值化权值损失的海森近似.底层近端步 的32位精度浮点数由“1,8,23”结构构成,根据预 骤有封闭形式解决方案,二阶信息可以从Adam优 训练得到的全精度神经网络模型中的数据分布分别 化器已经计算的二阶矩有效获得.Lee等[an]提出基 对阶码和位数的长度进行适当的减少.实验表明, 于迭代解决L1正则化最小二乘和L2约束最小二乘 对于大部分人物来说,6比特或者8比特的数据已 问题的稀疏编码算法.此算法明显加快稀疏编码速 经足够保证测试的准确率.目前工业界对于8位整 度,并获得比之前更大的稀疏码本.Gudovskiy与 型或者16位半精度浮点数量化技术已经成熟,比如 Rigazio)提出用于无乘法卷积神经网络推理的普 TensorFlow-lite[o]和Nvidia的TensorRT均已经支持 遍低精度结构ShiftCNN.ShiftCNN基于2的幂加权 8位整型数据的网络训练以及存储. 表示,因此只执行移位和加法操作.Meller等[9]提 重编码:Courbariaux等[al-]提出在运行时使用 出适当因子分解可以显著降低量化引起的退化.一 二值化权重和激活二值化神经网络.网络训练时, 个给定网络有许多因子分解,它们在不改变网络功 二值化权重与激活用来计算参数梯度,并在前传过 能情况下改变网络权重.Xu等提出基于强化学 程中用位运算代替算术运算大大降低内存大小 习的动态网络量化框架,由位宽控制器与量化器组 Rastegari等[s]提出两个标准卷积神经网络近似网 成.利用策略梯度训练一个中间体通过位宽控制器
李江昀等: 深度神经网络模型压缩综述 图 2 通过标量量化与中心体微调实现权重共享[14] Fig. 2 Weight sharing by scalar quantization (top) and centroid fine鄄tuning (bottom) [14] 会明显下降. 3 量化 量化主要思想是降低权重所需要的比特数来压 缩原始网络,主要包括低精度和重编码两类方法. 对于卷积神经网络来说,网络模型权重都是单精度 浮点型 32 位. 低精度方法使用更低位数的浮点数 或整型数对其进行训练、测试或存储;重编码方法对 原有数据进行重新编码,采用更少的位数对原有数 据进行表示,实现了模型的压缩. 低精度:Gupta 等[39] 基于随机修约的卷积神经 网络训练中使用 16 比特定点表示法,显著降低内存 和浮点运算,同时分类准确率几乎没有受到损失. Han 等人[14]提出对数据冗余精度进行裁剪. 原本 的 32 位精度浮点数由“1,8,23冶 结构构成,根据预 训练得到的全精度神经网络模型中的数据分布分别 对阶码和位数的长度进行适当的减少. 实验表明, 对于大部分人物来说,6 比特或者 8 比特的数据已 经足够保证测试的准确率. 目前工业界对于 8 位整 型或者 16 位半精度浮点数量化技术已经成熟,比如 TensorFlow鄄lite [40]和 Nvidia 的 TensorRT 均已经支持 8 位整型数据的网络训练以及存储. 重编码:Courbariaux 等[41鄄鄄42] 提出在运行时使用 二值化权重和激活二值化神经网络. 网络训练时, 二值化权重与激活用来计算参数梯度,并在前传过 程中用位运算代替算术运算大大降低内存大小. Rastegari 等[43]提出两个标准卷积神经网络近似网 络,分别为二值权重网络(binary鄄weight鄄networks)和 同或网络(XNOR鄄networks). 二值权重网络通过对 滤波器权重进行二值量化节省 32 倍内存. 同或网 络对输入以及滤波器权重均进行二值量化,结果可 以提速 58 倍,减少内存 32 倍. Li 等[44] 对同或网络 改进,将卷积神经网络网络层输入进行高精度二值 量化,从而实现高精度二值网络计算,同或网络也是 对每个卷积神经网络网络层权值和输入进行二值 化,这样整个卷积神经网络计算都是二值化,计算速 度快,占内存小. Hwang 与 Sung [45]提出基于重训练 的反向传播优化定点设计. 定点网络使用 3 值权重 和 3 位表示信号,结果与浮点型网络相比精度下降 很微弱. Hou 等[46] 提出具有对角近似牛顿算法直 接最小化二值化权值损失的海森近似. 底层近端步 骤有封闭形式解决方案,二阶信息可以从 Adam 优 化器已经计算的二阶矩有效获得. Lee 等[47]提出基 于迭代解决 L1 正则化最小二乘和 L2 约束最小二乘 问题的稀疏编码算法. 此算法明显加快稀疏编码速 度,并获得比之前更大的稀疏码本. Gudovskiy 与 Rigazio [48]提出用于无乘法卷积神经网络推理的普 遍低精度结构 ShiftCNN. ShiftCNN 基于 2 的幂加权 表示,因此只执行移位和加法操作. Meller 等[49] 提 出适当因子分解可以显著降低量化引起的退化. 一 个给定网络有许多因子分解,它们在不改变网络功 能情况下改变网络权重. Xu 等[50] 提出基于强化学 习的动态网络量化框架,由位宽控制器与量化器组 成. 利用策略梯度训练一个中间体通过位宽控制器 ·1233·