Deep Neural Network Compression by In-Parallel Pruning-Quantization 论文笔记

摘要

深度神经网络在视觉识别任务(如图像分类和物体检测)上实现了最先进的精确度。然而,现代网络包含数百万个已学习的连接,并且当前的趋势是朝向更深和更密集连接的体系结构。这对在资源受限的系统(例如智能手机或移动机器人)上部署最先进的网络提出了挑战。通常,更有效地利用计算资源将有助于从嵌入式平台到运行网络集合的计算集群的部署方案。在本文中,我们提出了一种深度网络压缩算法,它可以联合执行权重修剪和量化,与微调并行执行。我们的方法利用了修剪和量化的互补性质,并从过早的修剪错误中恢复,这是两阶段方法所不可能的。在ImageNet上的实验中,CLIP-Q(通过并行修剪 - 量化的压缩学习)改进了AlexNet,VGGNet,GoogLeNet和ResNet上的网络压缩的最新技术。我们还通过压缩MobileNet和ShuffleNet来证明CLIP-Q是对高效网络架构设计的补充,并且CLIP-Q通过压缩存储网络来进行视觉问答,从而超越卷积网络。

简介

网络修剪是一种压缩策略,其中网络连接被减少或稀疏化; 权重量化是另一种策略,其中连接权重被约束到一组离散值,允许使用较少的比特来表示权重。 本文介绍了CLIP-Q(并行剪枝 - 量化压缩学习),一种深度网络压缩方法,(1)将网络剪枝和权重量化结合在一个学习框架中,共同解决了权重修剪和量化问题; (2)随着网络结构的变化,随着时间的推移做出灵活的修剪和量化决策; (3)通过微调全精度权重并行进行修剪和量化(图1)。 用于ImageNet分类的六个现代网络的实验证明了所提出的方法的潜力。

本文的初步版本出现在[27]中。 本文件包括扩展的相关工作; 通过贝叶斯优化进行剪枝量化超参数预测的附加可视化; VGGNet的新压缩实验[16]; 使用MobileNet [28]和ShuffleNet [29]进行新的压缩实验,证明CLIP-Q是对高效网络架构设计的补充; 用于视觉问答的记忆网络的新压缩实验[14],表明CLIP-Q超越卷积网络进行图像分类。

相关工作

  • 参数修剪

  网络修剪是深度网络压缩的常见且直观的方法。修剪方法从预先训练的网络中删除“不重要”的连接,然后微调稀疏网络以恢复准确性。最早的修剪方法基于网络损失的二阶导数去除了连接[30],[31]。无数据参数修剪[32]使用与数据无关的技术发现并移除冗余神经元。深度压缩[18]消除了具有最低幅度权重的连接,其直觉是如果设置为零,则低幅度权重可能对计算结果的影响较小。然后通过量化剩余权重并应用霍夫曼编码来实现进一步压缩。我们的方法不同之处在于我们联合执行修剪和量化而不是顺序执行。这使我们能够利用这些任务的互补性质,并从早期的修剪错误中恢复,这是两种方法无法实现的。

  由于神经元之间复杂的相互作用,确定连接的重要性很困难:当删除其他连接时,最初似乎不重要的连接可能变得很重要。 这对修剪算法提出了重大挑战,因为大多数人在优化过程中做出了硬(永久)修剪选择[17]。 动态网络手术[17]另外执行权重拼接,其存储先前修剪的连接。 连接根据其权重的大小进行修剪和拼接。 本着类似的精神,CLIP-Q提供灵活的修剪选择,可以在训练期间适应网络随时间的变化。 与动态网络手术不同,我们在优化中结合网络修剪和权重量化,共同解决修剪量化参数。

  广义卷积通常在现代深度学习框架中通过重塑滤波器和补丁矩阵以及使用高度优化的BLAS库执行大型矩阵乘法来实现。 结构化修剪方法修剪整个过滤器而不是单个连接,从那些大型矩阵中消除整个行或列并减少推理时间[33],[34],[35]。 例如,ThiNet [35]通过贪婪地确定下一层输入要素图中的哪些通道可以被移除,同时最小化下一层的重建错误来修剪滤波器。 但是,如果允许任意(非结构化)稀疏模式,结构化稀疏性约束可能会阻碍压缩级别[36]。 非结构化修剪可以受益于专用硬件引擎[37]或有效的稀疏密集矩阵乘法[36],以实现实际的测试时间加速。

  除了压缩之外,网络修剪还被用于规范更精确的全尺寸网络的训练[38],减少传输学习中的过度拟合[39],并为电池供电的设备生产节能网络[40]。

  • 参数量化和二值化

  权重量化是指对权重值范围进行离散化的过程,以便可以使用更少的比特来表示每个权重。 例如,如果权重只能采用16个离散值(量化级别),那么对于单精度值,每个权重可以编码为4位而不是通常的32位。

  深度压缩[18]与两阶段方法中的修剪与权重量化分开执行。量化水平线性分布以覆盖权重范围。 软权重共享[41]重新训练网络,同时将权重拟合到高斯混合模型之前。 量化水平对应于高斯混合模型中的中心,并且可以通过在零处强制混合分量来合并修剪。 虽然在理论上是有原则的,但该方法计算量大且仅适用于小型网络[41]。 基于加权熵的量化[42]使用加权熵测量来分配量化级别,该加权熵测量鼓励将较少量化级别分配给接近零和非常高的权重,并且将量化级别的更均衡分布分配给远离这些极端的权重。

  量化卷积网络[43]表示卷积和全连接层的前向通道作为内积,可以使用乘积量化来近似。 我们的方法执行标量量化[18],[41],[42]而不是乘积或矢量量化。

  在极限中,权重可以量化为单个比特,以形成二元权重网络[44],[45]。 网络草图[46]通过用二进制滤波器的加权组合近似实值滤波器来对预训练的网络进行二值化。 局部二进制卷积网络[47]用一个受本地二进制模式启发的可学习模块取代卷积层[48]。

  • 结构矩阵

  结构化投影方法取代了完全连接的卷积网络层,可以将其视为非结构化投影,具有可以使用较少权重指定的有效结构化投影。 例如,循环神经网络[49]用学习的循环投影取代完全连接的层,可以使用快速傅里叶变换快速计算,而深度fried网[50]用快速变换的自适应版本替换完全连接的层。

  • 低秩分解

  低秩分解方法利用滤波器和特征映射响应中的冗余[51],[52],[53]。 例如,Jaderberg等人使用卷积层的低秩结构 [52],通过将全秩卷积分解为具有水平基滤波器的卷积,然后使用垂直基滤波器的卷积。

  • 知识蒸馏

  知识蒸馏[54]使用真实标签和更大更昂贵的教师网络的软输出的加权组合来训练紧凑的学生网络。 FitNets [55]通过使用教师网络中间层的输出指导学生网络中间层之一的训练,为知识蒸馏增加了进一步的正规化。 N2N学习[56]使用强化学习来训练政策网络,以便从教师网络中导出学生网络。

  • 有效框架

  正交研究方向是高效网络架构的设计。 SqueezeNet [57]将3x3卷积滤波器替换为1x1滤波器,将输入通道的数量减少到3x3滤波器,并在网络中稍后进行缩减采样。 Xception [58]用深度可分离的卷积替换了初始模块[2]。 MobileNet [28]针对嵌入式应用程序并堆叠多层深度可分离卷积。 ShuffleNet [29]采用带有通道“shuffling”的逐点组卷积。 Multiscale DenseNet [59]使用早期退出分类器来实现任何时间分类和预算批次分类。 我们通过实验证明,修剪和量化是对高效网络架构设计的补充。

  • 测试时间加速

  在移动或嵌入式平台上运行深度网络时,推理速度是另一个重要考虑因素。 专用于在测试时加速深度网络推理的方法(没有预先压缩)专注于减少所需的精确计算量。 穿孔卷积层[22]在空间位置的子集中执行精确计算,并使用最近的空间邻居对剩余部分进行插值。 由于ReLU激活消除了负面反应这一事实,低成本协作层[20]预测哪些空间位置会产生负面反应并跳过这些位置。 空间自适应计算时间[21]通过学习预测停止分数来加速残余网络,该分数允许计算在剩余单元块内提前停止。

方法

我们的方法的目标是通过微调预训练的深度网络来学习压缩的深度网络,同时(a)去除连接(权重)和(b)减少编码剩余连接所需的比特数。 为实现这一目标,我们将网络修剪和权重量化结合在一个操作中,并一起学习修剪后的网络结构和量化权重。 随着网络结构的发展,我们的方法执行修剪量化,以适应训练过程。 随着网络学习更有效的结构,可以在稍后的迭代中移除和恢复连接。 量化级别和连接分配同样适应网络结构随时间的变化。

  • 并行修剪量化

  我们的方法概述如图1所示。与网络微调并行,我们对每个层执行修剪量化操作,包括三个步骤:

  裁剪

  我们放置两个“clip”标量c-和c +,使得层中的(pX100)%的正权重小于或等于c +,并且(pX100)%的负权重大于等于c-,所有的c-和c +之间的权重在下一个前向传递中设置为零。 这会在处理下一个小批量时从网络中删除相应的连接。 请注意,此修剪决策不是永久的:在下一次迭代中,我们再次对更新的权重应用规则,并且先前已修剪的连接可以返回。 虽然超参数p是常数,但阈值c-和c +在每次迭代中都会发生变化。c-和c +可以在权重值的一维轴上灵活地“moved”。 裁剪由图1中的红色三角形表示。

  分区

  在第二步中,我们将权重值的1-D轴的非限幅部分划分为量化间隔。 这些间隔在图1中显示为不同的颜色范围。给定每权重b位的精确预算,该步骤产生将1-D轴划分为2^b-1个间隔,加上剪辑c-和c+之间的零间隔。 为简单起见,我们在c -的左边和c +的右边执行线性(均匀)分区[18]; 其他分区策略(例如加权熵[42])也可用于提高准确性。

  量化

  我们接下来更新量化级别 - 允许权重在压缩网络中采用的离散值。 通过平均落在相应量化间隔(图1中的彩色范围)内的全精度权重来计算每个量化等级。 然后,我们通过在下一个前向传递中将它们设置为新的量化级别来量化权重。 与修剪类似,量化适用于下一个小批量,然后重新评估。 随着学习的进行,量化级别和权重级别的分配随着时间的推移而发展。

 

  图2示出了使用具有16个权重的层的修剪和量化操作。 假设修剪率p = 0:25且比特预算b = 2.我们首先应用限幅,它将两个最低幅度的负权重和两个最低幅度的正权重设置为零,实际上从网络中删除了相应的连接 然后,我们对权重值的1-D轴进行线性划分。 最后,我们通过平均每个分区内的权重值来计算量化级别,并将权重设置为这些离散值。 使用新的全精度权重,使用下一个训练小批量重复这些步骤。

  在训练期间,跟踪和量化全精度权重。 全精度权重用于修剪量化更新以及反向传播[42],[45],而正向传递使用量化权重,模拟压缩网络的输出。 训练过程总结见论文算法。

  训练完成后,丢弃全精度权重,只需要存储量化权重。 我们使用标准的稀疏编码方案存储压缩网络的权重[18],[41]。 简而言之,稀疏权重矩阵的结构使用索引差异来编码,并且每个未修剪的权重存储其量化级别的b比特标识符。 完整的实现细节可以在[18]中找到。

  总而言之,我们会更新每个训练小批量的修剪状态、量化级别和量化级别分配,以便根据需要随时调整。 例如,一旦修剪了其他连接,先前修剪的连接可能再次变得相关,在这种情况下,它可以被拼接回网络。 此外,连接可以重新分配量化级别,并且量化级别本身随时间演变。 在训练期间对全精度权重进行微调,并在训练完成后丢弃。

  • 修剪量化超参数预测

  修剪量化操作由两个超参数引导:修剪率p和比特预算b。 我们使用贝叶斯优化为网络中的每个层i独立地预测一组修剪量化超参数(pi; bi)

  贝叶斯优化提供了一个最小化黑盒目标函数的通用框架,这些函数通常很难评估,非凸,不能以封闭形式表示,并且可能不容易区分[60]。 通过学习先前探索的结果,它可以有效地搜索联合参数空间。 贝叶斯优化迭代地构造目标函数的概率模型,同时确定参数空间中最有希望的候选者以进行下一步评估。 每次评估的结果用于优化模型。

  为了指导我们搜索有前途的剪枝量化超参数,我们进行了优化(公式见论文)

  对于每个层我独立地保持其他层未压缩。 我们通过在训练数据的子集上测试压缩网络来获得粗略的质量估计。对于速度,我们在应用此预期修剪和量化后不执行网络的微调.ci测量将修剪量化超参数应用于层i的整体压缩优势,公式见论文

  我们将目标函数建模为高斯过程[61]并选择修剪量化超参数空间中最有希望的候选者,以使用预期的改进标准进行评估,该标准可以以封闭形式计算。 我们简要概述下面的标准解决方案,并在[61],[62],[63]中将感兴趣的读者引到更全面的解决方法。

 

posted @ 2018-12-18 21:06  赌书香  阅读(857)  评论(0编辑  收藏  举报