神经网络压缩技术的出现缓解了深度神经网络模型在资源受限设备中的应用难题, 如移动端或嵌入式设备. 但神经网络压缩技术在压缩处理的自动化、稀疏度与硬件部署之间的矛盾、避免压缩后模型重训练等方面存在困难. 本文在回顾经典神经网络模型和现有神经网络压缩工具的基础上, 总结参数剪枝、参数量化、低秩分解和知识蒸馏四类压缩方法的代表性压缩算法的优缺点, 概述压缩方法的评测指标和常用数据集, 并分析各种压缩方法在不同任务和硬件资源约束中的性能表现, 展望神经网络压缩技术具有前景的研究方向.
The development of neural network compression relieves the difficulty of deep neural networks running on resource-restricted devices, such as mobile or embedded devices. However, neural network compression encounters challenges in automation of compression, conflict of the sparsity and hardware deployment, avoidance of retraining compressed networks and other issues. This paper firstly reviews classic neural network models and current compression toolkits. Secondly, this paper summarizes advantages and weaknesses of representative compression methods of parameter pruning, quantization, low-rank factorization and distillation. This paper lists evaluating indicators and common datasets for the performance evaluation and then analyzes compression performance in different tasks and resource constraints. Finally, promising development trends are stated in this paper as references for promoting the neural network compression technique.
随着硬件的发展, 如图形处理单元(GPU)[
本文将对模型压缩技术中的代表方法进行介绍与分析. 但是, 诸如MobileNet、Inception、SqueezeNet等采用紧致的卷积核或高效的计算方式来搭建深度神经网络的轻量化模型设计方法不在本文讨论范围内. 不同于在预训练网络上进行处理, 轻量化模型设计方法另辟蹊径. 轻量化模型设计方法采用紧致的卷积核或高效的计算方式来搭建深度神经网络, 而不是由预训练神经网络进行神经元或神经元连接的删减来实现模型压缩.
本节主要介绍经典的神经网络模型, 这些代表性模型通常应用于评测新兴压缩方法的性能, 此外本节汇总集成最新模型压缩方法的各个压缩工具包的特性, 并简述模型压缩方法在硬件部署方面的进展.
随着LeNet的提出, 卷积神经网络进入了大众的视野. 在此基础上形成了AlexNet网络, 该经典网络结构与LeNet-5的结构类似, 但网络层次进一步加深. 目前演变出的多种卷积神经网络, 如VGG、GoogleNet、ResNet等, 虽然模型性能越来越好, 但网络的层数和计算量也随之增大, 不利于边缘设备或云端的部署.
在2014年的ImageNet挑战赛中脱颖而出的VGG网络[
ResNet网络[
深度网络模型的资源需求汇总
主干网络 | 参数
|
模型内存
|
计算量
|
AlexNet | 60 | 233 | 0.7 |
VGG19 | 144 | 548 | 19.6 |
ResNet152 | 60 | 230 | 11.3 |
GoogleNet | 7 | 27 | 1.6 |
MobileNetV1 | 4.2 | 16 | 0.58 |
ShuffleNet(1.5) | 2.9 | 11 | 0.29 |
ShuffleNet(×2) | 4.4 | 16.7 | 0.52 |
MobileNetV2 | 3.4 | 12.9 | 0.3 |
为了在资源受限的设备上部署深度神经网络, 轻量化模型设计的思路应运而生, 随即产生了MobileNet网络[
随着神经网络模型压缩方法的发展, 已经孕育出一系列承载最新成果的压缩方法工具包,
结构化压缩方法在上述压缩工具包中得到更多应用的因素之一, 是模型压缩方法在硬件平台的部署会受到矩阵稀疏性粒度的影响. 如
现有神经网络压缩工具包
工具包 | 发布者 | 支持语言 | 支持框架 | 支持方法 |
NNI | 微软 | Python | Pytorch, MXNet, Tensorflow, Caffe2 | 剪枝和量化 |
Tensorflow Lite | 谷歌 | Java, Swift, Objective-C,
|
Tensorflow | 剪枝和量化 |
Distiller | Intel | Python | Pythorch | 剪枝、量化、知识蒸馏 |
DNNDK | xilinx | C/C++ | Caffe\
|
剪枝和量化 |
PaddleSlim | 百度 | Python, C++ | — | 剪枝、量化、知识蒸馏 |
Pocketflow | 腾讯 | Python | Tensorflow | 剪枝、量化、知识蒸馏 |
矩阵稀疏性的粒度与稀疏矩阵存储格式
为了高效的支持压缩后模型的硬件部署, 软硬件结合的压缩方法设计已成为当前发展的趋势之一, 已有诸多设计专用硬件处理架构的研究被发表. 为了将模型压缩方法的代表性算法Deep compression[
本节将逐一介绍各类模型压缩方法的代表性算法与优缺点, 内容涵盖参数剪枝、低秩分解、参数量化和知识蒸馏4类主流压缩方法.
各类压缩方法在特定任务及场景中表现出不同的压缩性能, 在选用压缩方法时可以依据应用需求来选择. 例如知识蒸馏方法适用于小型或者中型数据集上的应用, 由于压缩后的学生模型可以从教师模型中提取知识, 在数据集不大时, 也能取得鲁棒的性能; 剪枝和量化则更适合于要求模型表现稳定的应用场景或内存有限的设备, 因为这两种方法具有合理的压缩比, 精度损失小, 也能减小计算中内存使用量.
剪枝方法依据一定标准来衡量网络结构的重要性, 通过移除不重要的网络结构来降低计算量和权重数量, 加速推理. 以基于稀疏约束的剪枝方法[
各类神经网络压缩方法总结
方法 | 适用范围 | 重训练 | 基于预训练模型/从零开始训练 | 压缩机制 |
剪枝 | 卷积层/全连接层 | 需要 | 需要预训练模型 | 移除预训练模型的冗余权值, 减少模型参数量. |
量化 | 卷积层/全连接层 | 需要 | 均可 | 不改变模型结构, 通过权重共享或权值精简实现. |
低秩分解 | 卷积层/全连接层 | 需要 | 均可 | 将大尺寸参数张量分解成多个小尺寸张量的乘积, 减少计算量. |
知识蒸馏 | 卷积层/全连接层 | 不需要 | 从零开始
|
复杂教师网络的软目标指导精简学生网络的训练, 实现知识迁移. |
包括文献[
传统剪枝方法直接丢弃被裁减的网络结构, 使得网络容量随算法的迭代不断减少, 而且错误的裁剪所造成的精度损失无法通过微调弥补. 针对这一问题衍生出的动态剪枝算法, 保证被裁剪掉的权重在后续训练过程中仍会更新, 能够动态恢复裁剪部分或者对网络进行扩充. 文献[
由于神经网络中各层的稀疏性不同, 剪枝方法需要以预定义或自动设定的方式为每层设置适合的压缩比, 以减小压缩造成的准确率损失. 有研究工作提出渐变式压缩比设定方法[
AMC方法将自动机器学习引入剪枝方法, 减轻了人工调节神经网络超参数的压力, 但其剪枝操作是逐层执行的. 现有剪枝方法大多忽略层间的关联性, 逐层移除不重要的权重来压缩神经网络. 而最近的研究工作发现剪枝的本质是识别约束下最优的压缩网络结构[
低秩分解又称低秩近似, 利用卷积神经网络的参数张量和激活张量低秩且稀疏的特点, 将大尺寸张量分解成多个小尺寸张量的乘积, 即用若干个小张量对原张量进行估计, 减少推理时计算量[
低秩分解方法在全连接层和卷积层的性能表现不同, 对全连接层的压缩效果更好. 针对全连接层低秩分解的研究[
低秩分解方法中, 保留多少秩关系到压缩后准确率与推理速度的权衡. 但是保留多少秩是不确定的, 文献[
低秩分解后的网络模型在参数量压缩之外表现出两点提升, 一是关于局部最小值寻优[
低秩分解方法并没有改变基础的卷积运算, 但由于受到几点缺陷的制约而不易于部署. 一是分解操作的计算成本昂贵. 二是目前的方法逐层执行, 无法进行全局参数压缩[
参数量化是指在不改变模型结构的情况下, 对模型参数或激活输出进行权值共享或权值精简[
权值共享常用的算法有K-means聚类算法和哈希共享. 文献[
权值精简方法是指利用低位宽精度参数(如8-bit)代替原始的高位宽精度参数(如32-bit)以达到模型压缩和计算加速的目的, 包括直接量化和模型重训两种模式. 直接量化是指对预训练得到的网络模型, 直接通过量化权重或(和)激活输出来缩减模型大小, 加快预测速度. 文献[
综上所述可见, 单一的权值共享方法重点在于对模型参数进行压缩, 无法加速推理端的计算过程, 很少被单独使用. 直接量化因为操作简单且方便部署, 得到了很多硬件厂商的青睐, 但因为精度损失的影响, 单一的直接量化无法做到较低位宽精度(如1-bit, 2-bit)的量化. 模型重训的量化方法则能在保证模型精度的同时, 得到位宽精度更低的模型参数(如1-bit), 但该方法训练耗时较长且不易部署. 同时训练方案的设计, 以及如何有效地应用到CPU、FPGA、ASIC和GPU等硬件来加速训练过程, 也是重训方法的研究重点. 因此如何快速且更低位的对模型进行量化压缩, 同时保持模型精度, 是当前技术研究的核心方向. 如文献[
知识蒸馏是指将训练好的复杂模型的“知识”迁移到一个结构简单的网络中, 或者通过简单网络去学习复杂模型的“知识”. Hinton[
知识蒸馏的核心在于学生网络如何去学习教师网络以得到教师网络的“知识”. 文献[
综上各种蒸馏方法可以看出, 当前很多的知识蒸馏方法都是基于各自的一种“知识”假设模型进行蒸馏, 因此可能存在知识学习的不全面性, 如何设置一种更加自动化的知识蒸馏方法, 是以后研究的重点. 另外随着硬件的发展, 文献[
现有文献提出了多种衡量比较其压缩性能的量化准则, 本节将对这些量化准则进行总结, 简述在评测模型压缩方法时常用的数据集, 并且对比分析了代表性压缩方法的压缩性能.
模型压缩算法的评价指标通常涵盖准确率压缩(或准确率损失)、参数量压缩、推理时延压缩(或加速比)、MAC量压缩、能耗压缩、索引空间压缩率. 各个指标的定义与计算如下:
(1)准确率压缩率
(2)参数量压缩率
(3)时延压缩率
(4) MAC量压缩率
(5)能耗压缩率
(6)索引空间压缩率
有关文献[
MNIST、CIFAR和ImageNet数据集是评测模型压缩方法在分类任务中性能的常用数据集[
分类任务中常用数据集[
数据集 | 类别数 | 训练集规模 | 测试集规模 | 图像尺寸 |
MNIST | 10 |
|
|
|
CIFAR-10 | 10 |
|
|
|
CIFAR-100 | 100 |
|
|
|
ImageNet | 1000 |
|
|
— |
除了分类数据集外, Pascal VOC数据集和MS COCO数据集是常用的目标检测数据集. Pascal VOC包含VOC2007和VOC2012两个版本. Pascal VOC中20个类别图像的标注情况和标注出的对象实例数目如
目标检测任务中常用数据集
数据集 | 类数 | 训练集规模 | 对象实例 | 测试集规模 |
Pascal VOC 2007 | 20 | 5011 | 12608 | 4952 |
Pascal VOC 2012 | 20 | 11540 | 27450 | — |
MS COCO 2014 | 91 | 123287 |
|
40775 |
MS COCO 2017 | 91 | 246690 |
|
81434 |
已有研究在移动端测试分析剪枝方法和低秩分解方法的代表性算法的压缩效果, 并分别评估低秩分解方法在全连接(FC)层和卷积(CONV)层的性能[
AlexNet中模型压缩方法在移动端的性能对比[
评价指标 | Baseline | 剪枝[ |
低秩分解[ |
低秩分解[ |
准确率Top5 | 82.12 | 83.79 | 77.16 | 60.32 |
参数压缩率
|
|
|
1.23 | 1.03 |
时延压缩率
|
|
0.97 | 0.78 | 1.4 |
文献[
VGG中模型压缩方法的性能对比[
评价指标 | 剪枝[ |
低秩分解[ |
准确率Top5 |
|
|
参数压缩率
|
|
2.75 |
现有工作还在移动端对参数剪枝方法、低秩分解等压缩方法在几种识别任务中的性能进行了测评[
此外, 文献[
不同移动设备端压缩方法性能对比[
设备编号 | DRAM (GB) | Cache | MAC处理速率 | 性能最佳方法 |
Device 1 | 3 | L1 (64 KB),
|
691.3 Mflops | 剪枝 |
Device 2 | 4 | L1 (32 KB),
|
3.87 Gflops | 深度可分离卷积 |
Device 3 | 4 | L1 (38 KB),
|
2.51 Gflops | 低秩分解 |
压缩技术是深度神经网络得以迅速发展和广泛应用的助推器, 还存在很多需要解决的问题. 就目前的研究重点来看, 这些问题基本都集中在网络参数上. 这些参数所要处理的大批量数据, 其中往往只有少许的关键特征信息是我们所关心的. 如何从海量的数据中提取出关键信息, 过滤掉冗余数据, 也是深度神经网络压缩技术所要面对的一个难点.
目前虽然各方研究者提出了多种算法和理论, 但是都有一定的适用范围或适用条件, 没有一种方法可以兼顾各种应用的特点. 而深度神经网络本身所能够支持的机器视觉任务种类将越来越多样化, 不再仅仅集中于某一种特定任务. 因此能够集成目标检测、目标跟踪、图像分割等多种任务于一体的模型压缩方法会发展成新的研究热点.
同时, 之前相对独立发展的各种压缩技术也将进行融合, 集成各个压缩方法的优势, 突破单个压缩方法的局限. 另一方面也可以将神经网络结构搜索NAS技术、自动调参技术等加入到模型压缩方法中, 实现自动化压缩.
人工智能中的模型压缩技术研究, 其最重要的参考对象就是人类大脑. 随着对人类大脑机理本质的认识逐步深入, 各种类脑芯片将会不断涌现. 人类大脑的自身机能将对神经网络压缩技术的发展产生深远影响, 将会提出效率更高、更为贴近人脑机能特点的压缩理论及算法, 应用于新型的人工智能行业.
本文对神经网络压缩技术的进展进行了概述. 在总结深度神经网络的最新发展成果的基础上, 本文详细介绍了参数剪枝、低秩分解、参数量化和知识蒸馏这四种主要的神经网络压缩方法的原理, 并且分析了这四种方法各自的优缺点. 本文对已有的神经网络压缩方法进行了性能上的对比, 介绍了常用的压缩方法评价指标、常用来验证压缩方法性能的经典神经网络模型和数据集, 并总结了在不同移动设备的资源约束下模型压缩方法的性能. 除此之外, 本文还讨论了神经网络压缩加速领域的发展趋势和热点问题, 希望本文的总结工作能为模型压缩方法的研究发展提供一些参考与帮助.
Lindholm E, Nickolls J, Oberman S, et al. NVIDIA tesla: A unified graphics and computing architecture. IEEE Micro, 2008, 28(2): 39–55.
Nan KM, Liu SC, Du JZ, et al. Deep model compression for mobile platforms: A survey. Tsinghua Science and Technology, 2019, 24(6): 677–693.
Sze V, Chen YH, Yang TJ, et al. Efficient processing of deep neural networks: A tutorial and survey. Proceedings of the IEEE, 2017, 105(12): 2295–2329.
Cheng Y, Wang D, Zhou P, et al. Model compression and acceleration for deep neural networks: The principles, progress, and challenges. IEEE Signal Processing Magazine, 2018, 35(1): 126–136.
http://on-demand.gputechconf.com/gtc/2017/presentation/s7310-8-bit-inference-with-tensorrt.pdf. (2017-05-08).]]>
纪荣嵘, 林绍辉, 晁飞, 等. 深度神经网络压缩与加速综述. 计算机研究与发展, 2018, 55(9): 1871–1888.