【读点论文】Lightweight Deep Learning: An Overview,性能拉满,速度和精度全都要。但还是有很长的路要走,目前消耗的成本过高,节约环保,低碳炼丹

Lightweight Deep Learning: An Overview

Abstract

  • 随着近年来深度神经网络(dnn)在人工智能领域的成功,部署深度神经网络的冲动引起了极大的关注,因为它可以在边缘或嵌入式设备上广泛应用。轻量级深度学习(DL)是指将深度神经网络模型压缩成更紧凑的模型的过程,由于边缘设备的资源和计算能力有限,因此适合在边缘设备上执行,同时保持与原始设备相当的性能。目前,模型压缩的方法包括但不限于网络修剪、量化、知识蒸馏、神经结构搜索等。在这项工作中,我们提出了一个新的概述,总结了模型压缩的最新发展和挑战。
  • 论文地址:Lightweight Deep Learning: An Overview | IEEE Journals & Magazine | IEEE Xplore
  • 轻量化模型主要围绕减少计算量,减少参数,降低实际运行时间,简化底层实现方式等这几个方面,提出了深度可分离卷积,分组卷积,可调超参数降低空间分辨率和减少通道数,新的激活函数等方法,并针对一些现有的结构的实际运行时间作了分析,提出了一些结构设计原则,并根据这些原则来设计重新设计原结构。除了以上这种直接设计轻量的、小型的网络结构的方式外,还包括使用知识蒸馏,低秩剪枝、模型压缩等方法来获得轻量化模型。

Introduction

  • 由于强大的图形处理单元(gpu)的快速发展,在2012年AlexNet赢得ImageNet挑战之后,世界各地的研究人员在用于人工智能(AI)应用的深度神经网络(dnn)的性能方面取得了重大进步。

  • 与此同时,资源受限的设备,如移动电话和边缘设备,变得越来越普遍。此外,许多实际应用都迫切需要这些设备的决策能力。然而,有限的计算能力、存储和能源严重阻碍了深度神经网络在物联网(IoT)上的部署以及边缘设备的并发设备上应用。

  • 因此,减少参数数量和生成紧凑模型对于使边缘设备能够在不同限制下执行支持dnn的AIoT应用程序至关重要。综上所述,去除冗余参数和连接可以大大提高DNN模型的流行度,大大节省了计算成本和能耗。

  • 由于模型压缩的相关工作大量,我们主要关注最近流行的方法,包括剪枝、量化、知识蒸馏和神经结构搜索,如下图所示。我们建议有兴趣的读者参考[A survey of related research on compression and acceleration of deep neural networks]了解其他方法的更多细节,如Lowrank Factorization, Winograd Transformation等。对于低复杂度的体系结构,尽管SqueezeNet、MobileNet和ShuffleNet是手工设计的体系结构,但它们在降低计算和内存成本方面也表现出令人满意的性能和有效性。此外,这些结构也是神经结构和知识蒸馏的重要先验。有兴趣的读者可以参考[A survey of the recent architectures of deep convolutional neural networks]了解更多细节。

    • 在这里插入图片描述

    • 模型压缩的分类概述。

  • 本文总结了2019年至2021年期间来自顶级人工智能会议(包括CVPR, NeurIPS, ICLR, ICML等)的大量相关模型压缩相关论文。此外,本节还介绍了模型压缩的常用评估指标和常用基准。最后,在章节中讨论了未来的发展方向。

  • 本文将其主要贡献总结如下:

    • 我们全面研究了四类网络压缩方法:剪枝、量化、知识蒸馏和神经结构搜索。

    • 阐述了模型压缩的重要性,并为今后的研究方向提供了指导。

  • 最近“预训练大模型”这个概念异常火爆,大家都期待可以通过增加模型尺寸以达到“涌现”的效果。视觉领域也出现了大量的预训练方法和预训练模型,且取得了非常不错的效果。然而,视觉任务又有其独特性,隐私性、实时性等一系列应用场景的限制使得边缘端实际部署的模型多是轻量模型,而这些轻量模型应该怎样预训练却鲜少被研究。

Pruning

  • 考虑到深度神经网络有很多参数,其中一些参数可能是冗余的,对特定任务的贡献很小。修剪是减少dnn参数数量以满足特定计算和存储要求的常用技术之一。有人说,从密集层(例如,完全连接层)修剪参数更容易使模型更薄,因为大多数情况下,主要的决定性贡献主要来自少数主要神经元和连接

  • 另一方面,修剪可以通过从卷积层中修剪参数或过滤器来最小化计算成本。对于剪枝滤波器,它可以减少卷积阶段的乘法累加(MAC)操作,从而提高推理时间。同时,由于前人的研究[Deep compression]、[Designing energy-efficient convolutional neural networks using energy-aware pruning]表明,模型参数或滤波器可以根据重要程度进行修剪,从而达到执行速度和性能的平衡。

  • 通过适当的剪枝,可以将简化后的模型立即加载到板载内存中,这可以大大减少内存访问次数,并提高推理过程中的功耗效率。此外,Srivastava等[Dropout]表明,修剪可以减少dnn的过拟合困境。对于剪枝的可靠性,LeCun等[Optimal brain damage]证明了参数的重要性和dnn的连接不是均匀分布的。因此,从减少dnn的存储空间、降低计算成本、提高功率效率和缩短推理时间的角度来看,修剪(即去除滤波器的冗余参数)可以作为模型压缩的工具。此外,修剪也可以与训练一起进行,而不是像开创性的工作[Learning sparse neural networks through l 0 l_0 l0 regularization]那样在训练之后进行。据我们所知,虽然有各种各样的方法来修剪模型,过滤器和权值修剪是两种主要的技术。下图显示了修剪的示例。

    • 在这里插入图片描述

    • 在图中,圆圈表示神经元,箭头表示权重,修剪可以去除额外的神经元和权重。

  • 为了简单地了解权值和滤波剪枝的区别,我们从对 y = W × x y = W × x y=W×x 的全连通线性层执行滤波剪枝的场景开始,其中 y 和 x 分别是具有 d o u t d_{out} dout d i n d_{in} din 维数的列向量,W 是 d o u t × d i n d_{out} × d_{in} dout×din 矩阵。如果我们将 W 2 , 5 W_{2,5} W2,5 设置为0,则表示我们正在删除 x 的第二个分量(前一层的第二个“神经元”)和y的第五个分量(当前层的第五个“神经元”)之间的连接。另一方面,过滤器修剪处理的场景是当你有几个卷积核,这些卷积核表现为一个 C o u t × C i n × k × k C_{out} × C_{in} × k × k Cout×Cin×k×k 张量W,其中 C o u t C_{out} Cout 是滤波器的数量,而 C i n × k × k C_{in} × k × k Cin×k×k 是每个滤波器的大小。当您将整个过滤器设置为零时,例如 W [ 2 , : , : , : ] = 0 W[2,:,:,:] = 0 W[2:::]=0 ,这意味着输出张量的第二个通道将为零,与 x 无关。综上所述,权值剪枝属于非结构化剪枝,过滤器剪枝称为结构化剪枝。然而,这两种修剪方法并没有统一的训练方案。

  • 在下面的小节中,我们总结了最近的重要论文,主要是关于过滤器和权值修剪,因为它们与其他方法相比更受欢迎

Weight Pruning

  • 虽然LeCun等人早在1990年就提出了权值修剪,但近年来由于深度神经网络的快速发展,权值修剪变得更加流行。在最近的研究中,最流行的方法是利用稀疏性。稀疏性可以通过l1正则化来实现,如果不满足预定义阈值,则将不必要的权重设置为零。此外,Han等观察到 l 2 l_2 l2 正则化优于 l 1 l_1 l1 正则化后的修剪网络微调。通过使用权值修剪,我们可以达到较高的压缩率。简而言之,结合剪叶、量化和霍夫曼编码,AlexNet的压缩率可以达到35倍

  • 虽然权值修剪功能强大,但它面临非结构化或结构化问题。由于非结构化稀疏性需要额外的开销来记录索引,这使得它在硬件上的效率较低。另一方面,结构化稀疏性限制了权重中的稀疏性模式,以便它们可以用低开销的表示来描述,例如步长或块。尽管这减少了索引存储开销并简化了处理,但结构化稀疏性可能会导致更糟糕的模型,因为它限制了在稀疏化过程中权重更新的自由

  • 为了加速,一般来说,非结构化稀疏性在当今的体系结构中没有得到很好的支持,尽管非结构化修剪保持了比结构化修剪更好的准确性。为了解决这些问题,人们普遍开发了其他非结构化权重稀疏性方法,以减少索引开销并提高执行效率。这些方法通常存储连续的权重块,而不是单个元素。

  • 先进的技术包括[The lottery ticket hypothesis: Finding sparse, trainable neural networks],我们将其主要管道总结如下:

    • 给定一个随机初始化的密集前馈NN f ( x ; θ ) f(x;θ) f(x;θ) ,初始参数 θ = θ 0 ~ D θ θ = θ_0 ~ D_θ θ=θ0Dθ,掩模 m ∈ { 0 , 1 } ∣ θ ∣ m∈\{0,1\}^{|θ|} m{0,1}θ

    • 训练网络 j 次迭代,最终得到参数 θ j θ_j θj

    • θ j θ_j θj 中的 p % p \% p% 的参数删除,并创建一个更新的二进制掩码 m ′ m ' m,其中 P m ′ = ( P m − p ) % P_{m '} = (P_m−p)\% Pm=(Pmp)%

    • 将其余参数重置为 θ 0 θ_0 θ0 中的原始值,这将创建winning ticket f ( x ; M ⊙ θ 0 ) f(x;M⊙θ_0) f(x;Mθ0)

    • m = m ′ m = m ' m=m,重复步骤2到步骤4,直到得到一个修剪良好的网络。

  • 实证表明,孤立训练的 winning tickets 无需再训练即可达到原始网络的性能。如[Comparing rewinding and fine-tuning in neural network pruning]所示,“tickets”已被证明比其他两种常见的过程,即微调和学习率回退更好、更高效,在准确率、压缩率和搜索成本效率方面成为初始化剪枝的最先进方法。[Deconstructing lottery tickets]分析了“Lottery Ticket Hypothesis”的三个关键组成部分,发现了 supermasks 的存在。为了推广“Lottery Ticket Hypothesis”,[One ticket to win them all: generalizing lottery ticket initializations across datasets and optimizers]发现,在自然图像领域的各种数据集上,winning tickets 的初始化可以是通用的。此外,由大型数据集创建的 winning tickets 可以始终比由小型数据集生成的 winning tickets 传输得更好

Filter Pruning

  • 过滤器修剪是一种试图确定过滤器的重要性,然后消除不必要的过滤器的技术。最普遍的准则是采用 l 1 l_1 l1 范数或 l 2 l_2 l2 范数或基于对误差函数的影响来验证不重要的滤波器

  • 第一类使用排序机制来修剪过滤器。先前的作品[Towards efficient model compression via learned global ranking]、[Hrank: Filter pruning using high-rank feature map]采用排序的方式,根据相应的特征映射对过滤器进行修剪。例如,Chin等[Hrank]在发现同一单个滤波器生成的多个特征图的排序平均值始终相同后,提出了一种借助低秩特征图对滤波器进行剪枝的方法

  • 第二类利用各种搜索算法来修剪过滤器。由于Liu等人[Rethinking the value of network pruning]认为

    • 1)对于构建高效的模型来说,训练一个大型的、过度参数化的网络是不必要的,

    • 2)从大模型中获取“重要”权重的知识对小模型是不利的。因此,提出了一种用于自动信道修剪的元学习技术,即PruningNet。

Quantization

  • 在神经网络上实现量化的创新由来已久,因为量化是由先前的工作[Weight discretization paradigm for optical neural networks],[Weight quantization in boltzmann machines]提出的,目的是为了方便神经网络在硬件上的实现。考虑到2012年AlexNet在ImageNet挑战上的成功,利用量化的热潮已经越来越普遍。

  • 随着DNN层数的快速增长,参数的数量也显著增加。通常,权重和激活值都存储为32位浮点数。为了减少MAC操作的数量和dnn的大小,我们可以使用更少的比特来表示权重、梯度和激活,并进行量化存储。例如,1位量化是一种特殊类型的量化,称为二值化,其中权重是二进制值。

  • 此外,量化用于加速训练和推理阶段。然而,训练策略需要一些修改(通过量化感知的训练步骤或微调过程),如果量化仅用于加速推理过程,则目标是最小化量化模型与全精度模型之间的差距。

  • 总之,量化可以有效地帮助硬件和模型加速。随着比特精度的降低,特别是对于低比特精度的网络,保持高精度仍然是一个挑战。此外,低比特精度的网络通常需要对网络进行重新训练,或者采用更高比特精度的量化。改善模型精度和低比特精度量化之间的权衡是当前研究的目标。已有方法通过最小化量化误差或模拟全精度网络的数据分布来解决这一问题

Low-Bit Precision Quantization

  • 低比特精度量化方法的主要重点是降低参数和/或dnn激活的精度。它可以产生具有更小存储需求、更低计算复杂度、更低功耗和更小芯片尺寸的量化模型。然而,当使用低比特精度量化时,给定任务的性能将受到影响。补偿精度损失的方法通常需要再训练、混合精度量化或非均匀量化

  • 首先,16位浮点(FP16)量化方法已经成为主流,因为它易于被当前的gpu和硬件加速器实现,而且性能损失不大[Mixed precision training of convolutional neural networks using integer operations]。然后,对于8位量化。He等人[Deep residual learning for image recognition]证明了在不降低精度的情况下,全精度FP32的训练参数可以量化为8位整数进行推理。此外,研究表明,8位量化不仅可以应用于训练,还可以应用于推理[Quantization and training of neural networks for efficient integer-arithmetic-only inference]。第三,对于三元量化,Li等[Ternary weight networks]采用了三元权值(-1,0,+1)。从硬件的角度来看,由于不需要对零值进行计算,因此可以有效地实现三元逻辑。最后,我们进一步讨论了极端1位量化的发展,二值化,更详细如下。

Binarization

  • 二值化是1位量化,是量化的一种极端形式,其值只能是0或1。权重激活和梯度都可以用1位表示。此外,对于二值化,计算过程可以通过逐位的XNOR操作来简化。开创性的工作,包括Courbariaux等人[Binaryconnect]的BNNs和Rastegari等人的XNOR-Net,已经证明了二值化的有效性和有用性。除了硬件设备上的二值化应用之外,也有其他的工作致力于这个研究方向。下图显示了二值化的示意图。

    • 在这里插入图片描述

    • 图中圆圈为神经元,线条为权值,其中神经元和权值采用二进制格式。

  • [Focused quantization for sparse cnns]研究了具有二值的稀疏cnn的统计特性。此外,[Similarity preserving deep asymmetric quantization for image retrieval]发明了相似性保持深度不对称量化(SPDAQ),可以直接有效地从数据库中学习紧凑形式的二进制码。

  • 下表总结了最近的量化方法,以及它们在ImageNet上的部署平台、位宽度和性能下降的详细信息。有兴趣的读者可以参考[Pruning and quantization for deep neural network acceleration: A survey]了解所示的简化量化方法的更多细节。

    • 在这里插入图片描述

    • 量化ImageNet上不同位宽权重W和激活a的网络性能。

Knowledge Distillation

  • 知识蒸馏的方法不是从深度神经网络中减少参数的数量,而是从原始(教师)模型中训练轻量级(学生)模型。下图是知识蒸馏的一般图。

    • 在这里插入图片描述

    • 学生模型由从教师模型中提取的知识进行监督。

  • 特别是,知识蒸馏不是一种压缩技术,而是一种用于训练轻量级模型的方法。这个概念最早是在[Model compression]、[Distilling the knowledge in a neural network]中提出的。一般来说,教师模型通常指的是一个比学生模型包含更多参数的更大的模型。香草知识蒸馏是将原模型生成的软逻辑进行转移,并对轻量化模型进行优化与之匹配。在分类任务中,给定logit z向量作为模型的输出,softmax函数可以表示 p i p_i pi 作为输入在第i类中的概率:

    • p i ( z i , t ) = e x p ( z i / t ) ∑ j e x p ( z j / t ) p_i(z_i,t)=\frac{exp(z_i/t)}{\sum_jexp(z_j/t)} pi(zi,t)=jexp(zj/t)exp(zi/t)
  • t是温度,它是一个软化logit的参数。对于普通的softmax函数,t设置为1。优化学生模型的目标函数为:

    • L K D = ∑ i − p i ( z t i , t ) l o g p i ( z s i , t ) L_{KD}=\sum_i-p_i(z_{ti},t)logp_i(z_{si},t) LKD=ipi(zti,t)logpi(zsi,t)

    • 其中 z t i z_{ti} zti 为教师模型的输出对数, z s i z_{si} zsi 为第 i 个班级的学生模型的输出对数。除了输出逻辑外,中间层的表示也可以指导学生模型。此外,知识蒸馏方法可以与其他训练算法相结合,如互学习、自学习和元学习。下面,我们将详细讨论不同类型的知识蒸馏方法。

Knowledge from Logits

  • Hinton等[Distilling the knowledge in a neural network]首次使用教师模型的输出来监督学生模型。它声称使用经过温度软化的教师模型的输出对数进行训练可以获得比使用 GT 标签更好的学生模型。Malinin等[Ensemble distribution distillation]通过提取集合模型的分布而不是平均对数来获得各种集合模型。

  • 尽管在知识提炼过程中,教师模型和学生模型共享相同的数据,但两者的模型能力不同,这种差异可能导致教师模型和学生模型之间的迁移不佳。为了缓解师生模型之间的能力差距,Mirzadeh等人和Farajtabar等人使用具有中等规模网络的教师助理进行多步知识蒸馏。

Knowledge from Intermediate Layers

  • 除了软目标外,Romero等[Fitnets: Hints for thin deep nets]还使用中间表征作为提示来监督学生模型。为了匹配教师和学生模型的隐藏层表示,它在学生模型上添加了额外的层,以实现更薄但更深的网络,从而获得更好的性能。鉴别器用于引导学生学习其他网络的特征分布。为了缩小师生模型之间的差距,[Knowledge distillation from internal representations]将简化/压缩的知识提炼给学生。对于目标检测任务,Wang等[Distilling object detectors with fine-grained feature imitation]在分类任务中利用了教师高层特征响应的差异,而不是logits。通过添加特征适应层,使学生与教师兼容。

Distillation Schemes

  • 对于师生蒸馏的方法,我们可以进一步将其分为两种方案:离线蒸馏和在线蒸馏。

  • 离线蒸馏。以前的知识蒸馏是一个两阶段的过程:首先训练一个高精度的教师模型,然后将知识从预先训练好的教师模型转移到学生模型。离线蒸馏认为,一个训练有素的老师是教好学生的必要条件。假设教师是预先训练的,所以线下方案的方法主要关注如何从教师那里产生有效的知识,并研究如何将这些知识提炼给学生。离线蒸馏的优点是操作简单、直观。相比之下,主要的缺点是,由于学生的表现高度依赖于教师模型,因此训练一个高容量的教师模型可能会很耗时

  • 在线蒸馏。近年来,与在线蒸馏相关的研究越来越多。不像离线蒸馏需要一个预先训练的老师,在线蒸馏方法同时训练老师和学生。在[Data-free knowledge distillation for image super-resolution]中,它通过与同伴在一组中进行训练并使用相互蒸馏来提高性能。它获得的学生网络比从训练有素但静态的老师那里提取的网络表现得更好。在线蒸馏的优点之一是训练过程高效,节省计算资源。此外,它不仅得到了一个紧凑的学生模型,而且得到了一个强大的教师模型。此外,郭等人[Online knowledge distillation via collaborative learning]采用集成逻辑,设计多种方法协同训练学生。

Neural Architecture Search

  • 目前研究人员越来越重视神经结构的设计。NAS (Neural Architecture Search)可以为资源受限的设备和平台自动开发紧凑的网络架构。对于一个有效的NAS,有一个主要问题需要解决。挑战是棘手的搜索空间:给定一个包含N个卷积层和K个核大小的网络,我们有 N K N ^K NK 个可能的选择来优化架构,因此执行穷举搜索优化是不可行的。

  • Baker等人[Designing neural network architectures using reinforcement learning],Zoph等人[Neural architecture search with reinforcement learning]在使用强化学习(reinforcement learning, RL)进行图像分类应用方面,分别开发了NAS的两项开创性工作。与其他压缩技术不同,从那时起,NAS有多种研究主流:(a)基于 RL 的,(b)基于进化算法的,©基于梯度的,如Gumbel松弛

  • 基于 RL 的NAS将神经网络的设计过程表述为一系列动作,并将模型的准确性视为奖励。对于基于进化算法的 NAS,由于它使用进化算法来优化神经结构,因此通常需要大量的计算资源,并且具有很高的限制性。Real等人[Regularized evolution for image classifier architecture search]得出结论,RL 和基于进化的方法在最终测试精度方面表现同样良好,而基于进化的方法通常会产生更好的性能和更小的模型。此外,强化学习和进化算法的方法本质上是在离散空间中进行搜索。与前两种方法不同,基于梯度的NAS将分类设计选择放宽到连续变量,然后利用有效的梯度反向传播,从而可以显着将搜索时间从几个月减少到几GPU天

  • 需要注意的是,在速度和内存消耗之间存在一些权衡:基于 RL 的方法相对较慢,基于遗传算法的方法使用预测器加速,而基于梯度的方法在优化下统一了这两种方法,但仍然需要内存消耗。自2018年以来,NAS在图像分类或语义分割等领域取得了比人工设计架构更好的结果。按照Elsken等人[Neural architecture search: A survey]所描述的分类法,我们将NAS的作品分为三大类:搜索空间、搜索策略和评估策略

    • 在这里插入图片描述

    • 它展示了NAS的示意图。在示例中,搜索策略首先从预定义的搜索空间S中选择一个模型S,然后通过评估策略对模型进行检查,将S的性能返回给搜索策略。

Search Space

  • 一般来说,网络架构的搜索空间通常包括内核大小、通道大小、卷积类型或层数等。结合给定任务的先验知识,可以有效地缩小最优架构搜索的搜索空间。另一方面,搜索空间也可以帮助确定NAS算法的性能上界。因此,定义一个好的搜索空间非常重要。

  • 研究人员在考察了Szegedy等人[Going deeper with convolutions]的一个共同属性后,转而使用模块化搜索空间,而不是使用全局搜索空间。有一些特定的单元操作或结构,在NAS中称为细胞,它们可以反复堆叠形成一个杰出的网络。Zoph等人[Learning transferable architectures for scalable image recognition]是在NAS领域利用这一思想的开创性工作,Real等[Regularized evolution for image classifier architecture search]和Chen等[Progressive differentiable architecture search: Bridging the depth gap between search and evaluation]也采用了类似的搜索空间。此外,Saikia等[Autodispnet: Improving disparity estimation with automl]提出每个单元的结构可以是动态的,以扩大搜索空间。除了堆叠等效单元外,Cui等[Fast and practical neural architecture search]还通过堆叠不同单元来提高性能。然而,也有像Fang等人[Densely connected search space for more flexible neural architecture search]这样的作品致力于全局搜索空间,设计出具有更高自由度的架构。

Search Strategy

  • 为了仔细检查指数级大或无界的搜索空间,搜索策略必须能够快速找到理想的体系结构,但它应该在找到更好的全局模型之前避免不成熟的收敛到局部最优体系结构。NAS涉及到非常大的计算成本。Zoph等[Neural architecture search with reinforcement learning]需要2000个GPU天才能在CIFAR-10和ImageNet上实现最佳解决方案。针对这一困境,Shin等[Differentiable neural network architecture search]将离散搜索空间视为连续可微问题,采用梯度下降法求解。一种思路是在验证阶段只选择一条路径。Chang等人[Data: Differentiable architecture approximation]设计了一个估计器在其他路径之间传递梯度。为了提高内存消耗和搜索效率,也有很多工作在这个研究方向上进行工作。然而,基于梯度的搜索策略只能微调特定的结构

Evaluation Strategy

  • 在获得大量待测架构后,评估策略可以简单地训练每个架构,然后直观地计算每个架构的top-1精度,从而更新搜索算法。然而,这个过程既耗费资源又耗时。为了解决这个问题,我们可以只训练几个架构,并使用训练好的架构中的数据来训练一个额外的精度预测器。

  • 与从头开始训练不同,Pham等[Efficient neural architecture search via parameter sharing]是第一个使用参数共享的工作。Pham等[Efficient neural architecture search via parameter sharing]、Pasunuru等[Continual and multi-task architecture search]将NAS应用于迁移学习的多任务领域。另一方面,没有必要一直训练一个架构,直到它收敛为止。Baker等将学习曲线预测应用于NAS领域,Liu等实现了性能预测。在多项分布学习范围内,Zheng等提出了一种性能排序假设来加速这一过程:每个epoch的排序性能是一致的。

Data-free Compression

  • 大多数现有的模型压缩方法都需要访问原始训练数据集。然而,由于隐私和安全方面的考虑,在某些情况下原始数据无法被访问,因此无数据压缩方法近年来受到越来越多的关注。

  • Yin等在不使用任何真实图像的情况下,应用无数据知识转移(称为DeepInversion)将信息从教师网络提取到学生网络。Zhang等提出了一种针对单幅图像超分辨率(SISR)任务的无数据压缩方法,方法是根据预训练的网络训练生成有用信息的生成器。Cai等在不访问原始数据的情况下,通过优化蒸馏数据集实现了混合精度量化

Evaluation and Benchmark Datasets

  • 衡量模型效率的常用指标是参数存储和数学运算。

  • 参数存储量:参数存储量是推理所需的参数数量。我们可以通过原始模型的参数存储与压缩模型的参数存储之比来定义压缩模型的压缩率。

  • 数学运算:数学运算是在测试集上执行推理所需的每个示例的算术运算的平均数。数学运算的数量和分辨率决定了在推理时必须完成多少工作,这意味着它们与运行时间密切相关。我们通常使用FLOPs作为衡量数学运算次数的单位。

  • 在计算机视觉领域,人工智能工程师开发可靠模型有各种通用基准。下面我们将介绍图像分类任务中常用的数据集,汇总如表所示。

    • 在这里插入图片描述

    • Benchmarks for image classification.

    • MNIST:修改的美国国家标准与技术研究院手写体数字数据库(MNIST)数据集包含6万张训练图像和1万张测试图像,这些图像包含0到9的数字,这些图像经过尺寸归一化并集中在28×28灰度图像中,主要用于评估图像识别性能。

    • Fashion MNIST:时尚MNIST包含6万张训练图像和1万张测试图像,由Zalando研究团队开发,作为MNIST的替代方案,用于快速评估,因为cnn到2017年在MNIST上取得了超过99%的出色准确率。

    • CIFAR: CIFAR-10和CIFAR-100是由加拿大高级研究院(CIFAR)发布的,它们分别有10个和100个类,包括50000张训练图像和10000张32×32色阶测试图像。值得注意的是,CIFAR-100中的100个类被分组为20个超类。每张图片都有一个“精细”标签(它所属的类别)和一个“粗糙”标签(它所属的超类别)。

    • ImageNet: ImageNet数据集由斯坦福大学和普林斯顿大学联合创建,用于典型的计算机视觉竞赛,称为ImageNet大规模视觉识别挑战赛(ILSVRC),它是迄今为止最大的分类图像数据集。ILSVRC2012包含1000个类别的120万张训练图像、5万张验证图像和10万张测试图像。

    • Tiny ImageNet: Tiny ImageNet是ImageNet的一个独立子集,它包含200个图像类、一个包含100,000张图像的训练数据集、一个包含10,000张图像的验证数据集和一个包含10,000张图像的测试数据集。

Conclusion and Future Works

  • 模型压缩是深度神经网络中解决高资源消耗问题的一个重要研究课题。在这项工作中,我们提出了最新的最先进的模型压缩方法,包括修剪,量化,知识蒸馏和网络架构搜索。此外,我们对不同的方法进行了分类,并全面回顾了最近来自顶级人工智能会议的相关文献。对于每个类别,我们都对其实现、相关工作、优点和缺点进行了广泛的介绍。最后,我们提供了轻量级深度学习研究课题中常用的评估矩阵和基准数据集。

  • 结合深度强化学习的使用,可以将模型压缩推进到下一代。为了最小化功耗和加快推理时间,必须对卷积层的滤波器进行修剪。此外,我们发现在修剪极端dnn的层时存在一个困境。因此,在存储、计算能力或能量等不同约束条件下执行压缩的可能替代方案是可以预期的。另一方面,执行模型压缩以满足指定的性能约束是另一项艰巨的任务(例如,准确性和延迟)。毫无疑问,硬件、软件和算法的联合研究将是模型压缩的下一个趋势,因为研究人员已经开始在设计阶段不仅考虑精度,而且考虑能量吞吐量和硬件成本,以便更好地优化

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羞儿

写作是兴趣,打赏看心情

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值