论文笔记《A Survey of Model Compression and Acceleration for Deep Neural Networks》

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

本文全面概述了深度神经网络的压缩方法,主要可分为参数修剪与共享、低秩分解、迁移/压缩卷积滤波器和知识精炼。


一、参数裁剪和共享:关注于探索模型参数中冗余的部分,并尝试去除冗余和不重要的参数。


这些技术可以进一步分为三类:


1、模型量化和二进制化

通过减少表示权重所需的比特数来压缩网络。

Gong et al. [6] 和 Wu et al. [7] 对参数值使用 K 均值标量量化。Vanhoucke et al. [8] 展示了 8 比特参数量化可以在准确率损失极小的同时实现大幅加速。[9] 中的研究在基于随机修约(stochastic rounding)的 CNN 训练中使用 16 比特定点表示法(fixed-point representation),显著降低内存和浮点运算,同时分类准确率几乎没有受到损失。[10] 提出的方法是首先修剪不重要的连接,重新训练稀疏连接的网络。然后使用权重共享量化连接的权重,再对量化后的权重和码本(codebook)使用霍夫曼编码,以进一步降低压缩率。

在每个权重1bit表示的极端情况下,即二进制权重神经网络,也有许多直接用二进制权重训练CNN的工作,主要思想是在模型训练期间直接学习二进制权重或激活。


缺陷:此类二元网络的准确率在处理大型 CNN 网络如 GoogleNet 时会大大降低。另一个缺陷是现有的二进制化方法都基于简单的矩阵近似,忽视了二进制化对准确率损失的影响。


2、剪枝和共享

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

最近的趋势是修剪冗余权重,训练有稀疏约束的紧凑cnn模型也越来越有兴趣


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


3、设计结构化矩阵

如果一个 m x n 阶矩阵只需要少于 m×n 个参数来描述,就是一个结构化矩阵(structured matrix)。通常这样的结构不仅能减少内存消耗,还能通过快速的矩阵-向量乘法和梯度计算显著加快推理和训练的速度。


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


二、低秩分解和稀疏性:使用矩阵/张量分解以估计深层 CNN 中最具信息量的参数。


一个典型的 CNN 卷积核是一个 4D 张量,需要注意的是这些张量中可能存在大量的冗余。而基于张量分解的思想也许是减少冗余的很有潜力的方法。而全连接层也可以当成一个 2D 矩阵,低秩分解同样可行。

所有近似过程都是一层接着一层做的,在一个层经过低秩滤波器近似之后,该层的参数就被固定了,而之前的层已经用一种重构误差标准微调过。这是压缩 2D 卷积层的典型低秩方法,如图所示。

论文笔记《A Survey of Model Compression and Acceleration for Deep Neural Networks》_第1张图片


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


三、迁移/压缩卷积滤波器:设计特殊结构的卷积滤波器以减少存储和计算的复杂度。


使用迁移卷积层对 CNN 模型进行压缩受到 [42] 中研究的启发,该论文介绍了等变群论(equivariant group theory)。使 x 作为输入,Φ(·) 作为网络或层,T (·) 作为变换矩阵。则等变概念可以定义为:

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


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


四、知识精炼:训练一个更加紧凑的神经网络以再现大型网络的输出结果。


据我们所知,Caruana 等人 [49] 首先提出利用知识迁移(KT)来压缩模型。他们通过集成强分类器标注的伪数据训练了一个压缩模型,并再现了原大型网络的输出结果。然而他们的工作仅限于浅层网络。这个想法近来在 [50] 中扩展为知识精炼(Knowledge Distillation/KD),它可以将深度和宽度的网络压缩为浅层模型,该压缩模型模仿了复杂模型所能实现的功能。KD 的基本思想是通过软 softmax 学习教师输出的类别分布而降大型教师模型(teacher model)的知识精炼为较小的模型。
[51] 中的工作引入了 KD 压缩框架,即通过遵循学生-教师的范式减少深度网络的训练量,这种学生-教师的范式即通过软化教师的输出而惩罚学生。该框架将深层网络(教师)的集成压缩为相同深度的学生网络。为了完成这一点,学生学要训练以预测教师的输出,即真实的分类标签。尽管 KD 方法十分简单,但它同样在各种图像分类任务中表现出期望的结果。


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


五、讨论与挑战 


深度模型的压缩和加速技术还处在早期阶段,目前还存在以下挑战:
1、大多数目前的顶尖方法都建立在设计完善的 CNN 模型的基础上,这限制了改变配置的自由度(例如,网络结构和超参数)。为了处理更加复杂的任务,还需要更加可靠的模型压缩方法。
2、剪枝是一种压缩和加速 CNN 的有效方式。目前大多数的剪枝技术都是以减少神经元之间的连接设计的。另一方面,对通道进行剪枝可以直接减小特征映射的宽度并压缩模型。这很有效,但也存在挑战,因为减少通道会显著地改变下一层的输入。确定这类问题的解决方式同样很重要。
3、正如之前所提到的,结构化矩阵和迁移卷积滤波器方法必须使模型具有人类先验知识,这对模型的性能和稳定性有显著的影响。研究如何控制强加先验知识的影响是很重要的。
4、知识精炼(knowledge distillation/KD)方法有很多益处比如不需要特定的硬件或实现就能直接加速模型。开发基于 KD 的方法并探索如何提升性能仍然值得一试。
5、多种小型平台(例如,移动设备、机器人、自动驾驶汽车)的硬件限制仍然是阻碍深层 CNN 扩展的主要问题。如何全面利用有限的可用计算资源以及如何为这些平台设计特定的压缩方法仍然是个挑战。


你可能感兴趣的:(论文笔记《A Survey of Model Compression and Acceleration for Deep Neural Networks》)