DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKSWITH PRUNINGTRAINED QUANTIZATION ANDHUFFMANCODING
DE shall achieve significant compression efficiency through techniques including pruning, trained quantization, and Huffman coding. 深度压缩技术能够通过剪枝、训练量化及霍夫曼编码实现对深度神经网络的有效降维
-
第一篇
-
ABSTRACT
-
1 INTRODUCTION
-
2 NETWORK PRUNING(网络剪枝----这部分暂时不看!!!)
-
3 TRAINED QUANTIZATION AND WEIGHT SHARING(训练有素的量化和权重重共享)
-
- 3.1 WEIGHT Sharing
- 3.2 INITIALIZATION OF SHARED WEIGHTS(初始化权重)
- 3.3 FEED-FORWARD AND BACK-PROPAGATION(前向传播和反向传播)
-
4 (霍夫曼编码:第4章)
-
5 实验研究
- 5.1 ALENET网络结构在MNIST上的应用
- ALENET网络参数设置为3×3和5×5卷积核尺寸
- VGG系列卷积神经网络模型在IMAGENET上的实现
- Alex网络架构在IMAGENET上的优化研究
- 5.1 ALENET网络结构在MNIST上的应用
-
6 DISCUSSIONS
- 6.1 PRuned and QUantized, they collaborate together(修剪和量化协同工作)
-
第二篇:利用向量量化压缩深度卷积网络
-
ABSTRACT
-
引言
-
相关工作综述
-
密集连接层的压缩方法
-
矩阵分解方法
-
向量量化方法
- 二值化处理及其应用效果
- 基于k均值聚类的标量量化方法及其性能提升
- 产品量化方法的优势分析
- 残差量化在提升模型性能中的作用探讨
-
其他相关方法及讨论
-
4 EXPERIMENTS
-
- 4.1 EXPERIMENTAL setting
- 4.2 ANALYSIS OF PRODUCT QUANTIZATION
-
6 DISCUSSION
-

第一篇
ABSTRACT
神经网络在计算资源和内存占用方面都表现出较高需求特性,在嵌入式设备等资源受限环境中的部署存在明显限制。针对这一挑战性问题,在本研究中我们开发出了“深度压缩技术”。该技术由三个关键环节构成:首先实施剪枝过程以精简网络架构;其次运用权重量化方法以降低数据表示复杂度;最后采用霍夫曼编码策略以进一步优化存储效率。经过前两个步骤后,在重新训练模型的基础上进行微调优化。剪枝操作使连接数量减少了约9至13倍;随后的量化处理将每个连接所需的二进制位数从标准的32位降至5位。通过实验验证,在ImageNet数据集上与原始AlexNet相比实现了显著的空间占用降低(从240MB降至6.9MB),同时未影响模型性能表现;类似地,在VGG-16架构下也取得了49倍存储空间缩减效果(从552MB降至11.3MB)。这些成果表明所提出的技术不仅有效降低了硬件需求,还证明了该方法的有效性。此外,在移动设备环境下(受限于CPU/GPU/移动GPU等硬件配置),我们观察到该压缩方法带来了至少三倍至七倍的能效提升效果。
1 INTRODUCTION
深度神经网络已经达到高度成熟度,在计算机视觉任务领域取得了显著成就(克里日耶夫斯基等学者, 2012)(西蒙扬与齐泽尔曼, 2014)。尽管这些模型展现出强大的性能特征, 但其庞大的参数量却造成了存储与内存资源的巨大负担。具体而言, AlexNet架构占据约200MB内存空间, 而VGG-16则需要约500MB内存支持(由BVLC开发)。这种高占用需求使得深度学习模型在移动设备上的实际应用面临诸多限制和挑战
首先,在百度、Facebook等众多以移动优先著称的企业中,各个应用程序通常会通过各自的应用程序商店进行更新。这些企业对于二进制文件大小特别敏感。例如,在AppStore的规定下,“仅限于那些在下载前必须连接至Wi-Fi才能开始下载的应用程序才允许超过100MB的二进制文件”。因此,在尝试将一个二进制文件大小增加100MB时所受到的审查会比仅增加10MB时更为严格。尽管,在移动设备上运行深度神经网络具备诸多优势:例如能够更好地保护隐私、使用较少的网络带宽以及实现即时处理功能;然而由于巨大的存储开销问题阻碍了深度神经网络的广泛应用于移动应用程序中。
第二个主要问题是能源消耗问题。在运行大型神经网络时,需要大量内存带宽来获取权值;此外还需要进行大量的计算来完成点积操作——这会导致较大的能耗。移动设备受限于电池容量,在部署深度神经网络等耗电量高的应用程序时面临诸多挑战。
主要的能量消耗源于内存访问这一现象在芯片设计中被广泛观察到。采用45nmCMOS工艺的情况下单精度浮点运算每秒(FLOPS)达到32位时的能量消耗为0.9皮瓦(pJ)而32位浮点加法运算所需能量仅为该数值的五分之一相比之下动态随机存取存储(DRAM)的操作成本则显著高于同类操作其能量效率比同类操作低三个数量级这一特性使得大规模网络架构通常不支持本地存储转而必须依赖外部存储系统以满足计算需求在这种情况下动态随机存取存储(DRAM)的操作成本要求更为高昂例如在一个运行着每秒20帧任务的应用程序中处理十亿次神经元连接计算所需的总能量将高达12.8瓦特这明显超过了 typical 移动设备所能够承受的最大功耗水平
我们将目标设定为在如此庞大的网络中进行推理所需的存储与能量消耗最少化,并使其能够在移动设备上实现部署。为了达成这一目标,我们提出了一种名为"深度压缩"的方法:一种三重管道(图1),能够以保持原始精度的方式减少神经网络所需的存储量。具体而言,在实现这一目标的过程中,我们首先通过移除冗余连接来精简网络结构,并仅保留信息含量最高的连接部分。接着,在对权值进行量化处理后(使多个连接共享相同的权重),从而实现了多个连接共用相同参数的目的。最后,在这种优化基础上进一步应用带有偏置分布的有效权重进行霍夫曼编码处理
我们的核心观点在于:剪枝与经过训练的量化机制能够实现互不影响下的网络结构优化与参数量减少。这一创新性设计使网络实现了显著的压缩效率提升(高达几十倍)。这种方法不仅降低了内存占用需求至极小规模(仅需几兆字节),而且所有权重得以高效地缓存于芯片内部内存中而不需依赖外部存储如DRAM(Dynamic Random Access Memory),从而大幅降低了能源消耗成本。基于‘深度压缩’理论框架,在2016年Han等人提出了一种新型量化编码算法——EIE硬件加速器方案,在此基础上实现了计算效率与能效表现上的双重提升
2 NETWORK PRUNING(网络剪枝----这部分暂时不看!!!)
网络剪枝技术已被广泛应用于CNN模型的压缩过程中。早期研究主要集中在通过剪枝技术降低网络复杂度与防止过拟合方面(LeCun等, 1989;Hansen & Pratt, 1989;Hassibi等人, 1993;LeCun等, 1997)。近期研究表明(Han等人, 2015),通过对现有架构进行修剪可显著减少参数数量而无需影响模型性能。在此基础上我们进行了进一步优化:基于上述方法框架构建了一个更为高效的稀疏化模型(如图2所示)。具体而言,在训练阶段首先采用了常规的神经网络训练策略学习节点间的连接关系;随后通过阈值筛选策略移除权重较小的连接(即权重低于设定阈值的连接将被移除);最后通过微调过程进一步优化剩余连接的重要性权重分布。该过程使AlexNet与VGG-16系列模型分别实现了参数规模缩减至原来的约9倍与13倍。

在存储过程中,我们采用压缩稀疏行(CSR)或压缩稀疏列(CSC)表示法来表示通过剪枝得到的稀疏矩阵。具体来说,则需要2 + n + 1个数值来描述这一过程。其中a代表非零元素的数量,n则表示行或列的数量。
在进一步压缩方面,在记录索引差值的同时避免直接使用绝对位置信息的前提下,在conv层部分采用了8位编码方案,在fc层部分采用了5位编码方案以减少占用空间并提高计算效率。当遇到超出范围的索引差值时,则采用如图2所示的补零策略:具体而言,在差异超过8的情况下,默认最高有效三位(作为无符号数)进行扩展以保证数据完整性,并通过在高位插入三个零来实现补足所需长度。
该方法引入了经过预先训练的量化机制和权重重共享技术
网络参数量化和权重共享通过降低对每个权重所需存储位数的需求,进一步地压缩了修剪后的网络。进而,我们通过减少了有效需存储的唯一权重数量,并对这些共用的权重进行了微调。
图3展示了权重共享的概念。该层包含4个输入神经元和4个输出神经元,并由一个W = [w_{ij}]_{i,j=1}^n表示。左上角区域为一个完整的n \times n权重矩阵,在本例中n=1000;左下角区域则存储了一个对应的梯度矩阵\dot{W} = [\dot{w}_{ij}]_{i,j=1}^n。为了实现高效的计算与内存占用,在此过程中我们将这些权重划分为n^{1/3}个共享箱子(用不同颜色标记)。具体而言,在同一个箱子中的所有权重项都将被赋予相同的值,并且只需要在共享权值表中存储一个小索引即可代表整个箱子中的所有参数。在更新过程中,则会将所有的梯度按颜色分组并累加在一起,并乘以学习率后从上次迭代的结果中减去以完成参数更新操作。针对经过修剪优化后的AlexNet模型架构,在本研究中我们采用了每层CONV单元使用8位量化策略(共256个共享权值),而对于全连接层则采用5位量化策略(共32个共享权值),这样既保证了计算效率的同时也完全保留了模型原有的性能水平。

为了获取压缩率,在假设有k个集群的情况下,所需编码所需的二进制位数为log2(k)。通常情况下,在一个拥有n个连接的网络中,每个连接通常使用b位表示。当这些连接仅共享k个权重时,则其压缩率为:

如图所示,在一个包含4个输入单元与4个输出单元的单层神经网络中展示了权值分布情况。该网络初始共有4\times4=16个独立权值参数;然而通过将重复出现的相同权值进行合并共享优化后,则只需保留关键参数数量降至仅为原来的四分之一即4个关键参数(蓝色、绿色、红色与橙色);此外为了实现这种优化还需要额外记录每个参数对应的索引信息共8条二进制码即可满足需求;经过计算这种权值压缩方案所带来的效率提升比例可表示为\text{压缩率}= (8\times8)/( (8\times8)+(8\times8) ) = 0.5即50%的数据量节省

3.1 WEIGHT Sharing

我们通过k-means聚类分析了每一层的权值分配情况,并发现这样能够使得同一类别中的权重参数得以显著地共享相同的数值。这一策略明确避免了不同层级之间的参数共用问题。具体而言,在这一过程中我们将原始参数集合W={w₁, w₂, …, wₙ}划分为k个参数簇{C₁, C₂, …, Cₖ}(其中nk),这一划分过程旨在最小化各簇内部数据点与该簇中心点之间距离平方和(即WCSS)的总和

与HashNet(Chenetal. , 2015)相比,在网络架构中,在处理任何训练数据之前权重共享是基于哈希函数预先设定的 ,而我们的方法是在经过完全训练后确定权重共享关系 ,从而使得共享的权重参数能够更接近原始网络的真实参数
3.2 INITIALIZATION OF SHARED WEIGHTS(初始化权重)
质心初始化对聚类效果产生重要影响,从而直接影响网络预测性能.我们探讨了三种不同的初始策略:随机遗忘、基于密度和线性优化方法.如图4所示,展示了AlexNet卷积层conv3中的权重分布情况(累积分布函数以蓝色表示、概率密度函数以红色展示).在网络剪枝操作之后,其表现出明显的双峰特征.底部区域,它使用三种不同颜色标记的有效权值位置,并将这些位置定义为质心区域.在此案例中,实验结果表明,共有13个独立集群形成.
通过随机抽样法选取数据集中的k个观测值作为初始质心;这些质心被标记为黄色;在双峰分布的情况下,遗忘法的质心中位数往往位于这两个峰值之间。
采用基于密度的策略,在y轴上对权值的累积分布函数(CDF)进行线性分割;接着确定该CDF曲线上与某条水平线相交的位置;随后,在x轴方向上寻找对应的垂直交点;即可确定该位置即为质心所在。这一方法使得相邻两个峰区域内的质心分布更为密集;相较于福吉法而言,则具有更好的聚类效果。
该线性初始化方法通过确定区间内原始权值的最小值与最大值之间的中心位置进行划分。它对权值分布无影响,并且与其他两种方法相比具有最大的分散度。
在Hanetal.(2015)的研究发现中指出,在较大的权重与较小权重之间存在重要差异的情况下(...),其中较大权重的数量相对较少。针对Forgy初始方法以及基于密度分布的初始化策略而言,在这种情况下(...),由于仅有少数质心具有较大绝对值而导致其表现效果欠佳。相比之下,在线性初始方法中不存在此类问题。实验部分通过对比分析了聚类任务与微调后不同初始化方法在性能上的差异,并验证了线性初始化方案不仅可行而且表现最优。

3.3 FEED-FORWARD AND BACK-PROPAGATION(前向传播和反向传播)

一维k均值聚类算法中的质心被设定为共享权重参数。在正向传递和反向传播过程中,在查找权重表时采用了一种横向间接的方式。对每一个连接,在共享权重表中记录其对应的索引位置。在反向传播的过程中,针对每一个共享权重计算其梯度,并将其应用于更新该权重参数。这个过程如图3所示。
设损失函数L为衡量模型误差大小的标准,并将其作为优化目标函数的基础构建框架。在权重矩阵中,将第i行第h列以及第j行的权重分别记作W_ij和W_j,并引入与之对应的质心指数关系式I_ij来描述其分布特性。对于某一层网络中的质心位置关系,则可采用坐标系的形式进行建模,并以C_k代表层k处的具体坐标值。基于指示器函数1(·),可得各质心中梯度计算公式如下:
4 HUFFMAN CODING(霍夫曼编码)
Huffman编码是一种广泛应用在lossless data compression领域的最优前缀编码方案(VanLeeuwen, 1976)。该编码方案采用可变长度码字对源符号进行编码。该表格基于各个符号出现概率的数据构建而成。频率较高的符号通常被分配为较短的信息位。
图5展示了AlexNet模型最终全连接层中量化权重的概率分布及其稀疏矩阵指数特征。该两种分布均呈现偏态特征:其中大部分量化权重集中在两个峰值区域;而稀疏矩阵指数与其差异不超过20个单位。实验结果表明,采用霍夫曼编码对这些非均匀分布的数据能够显著降低存储需求,具体节省约20%-30%的空间。
5 EXPERIMENTS
我们对四组网络进行了剪枝、量化以及霍夫曼编码处理:其中两组应用于MNIST数据集上两组则来自ImageNet数据集。表1详细列出了剪枝前后各组网络对应的参数量与准确率对比。该压缩机制不仅显著降低了各组网络的存储需求(较剪枝前减少了35倍至49倍),而且能够有效维持训练精度水平。通过这一优化方案AlexNet模型总量从240MB缩减至6.9MB并成功放入芯片SRAM内存区域从而实现了能耗效率的最大化优化
基于Caffe框架展开训练(Jiaetal. ,2014)。剪枝操作通过向特定区域引入遮蔽掩码完成,并旨在抑制未剪枝连接的学习更新。量化策略及权值共用机制则建立了一个用于存储共有参数的字典格式,并于每次计算各层梯度后按照索引划分组别来进行优化。每个权值群组内的参数均依据该子群所有样本所对应的梯度信息进行同步更新。霍夫曼编码无需训练模型即可完成参数初始化,在模型全部微调完毕后实现了离线优化。
5.1 LENET-300-100 AND LENET-5 ON MNIST
我们首先在对MNIST数据集进行的LeNet-300-100与LeNet-5网络的实证研究中取得了一定成果(LeCunetal.,1998)。其中包含两个隐藏层、总计拥有3, ¹⁰¹个神经元的完全连接型结构,在测试集上的平均误分类率为1.6%。相比之下,在相同任务下采用具有两个卷积层与两个全连接层架构设计的卷积神经网络表现出色,在测试集上的误分类率降至仅约半数水平即为 ⁰.⁸%。表2及表3列出了该压缩管道的具体统计数据信息:其中包括编码本与稀疏索引所消耗的各项资源指标。其中大部分性能提升源自剪枝操作与量化处理(压缩率提升至 ³²倍),而霍夫曼编码则带来了额外的优化效果(压缩率进一步提升至 ⁴⁰倍)。


5.2 Alexnet ON IMAGENET
在对ImageNetILSVRC-2012数据集进行深入研究时
5.3 VGG-16 ON IMAGENET
在AlexNet的基础上取得了一定的成果后,在同一个ILSVRC-2012数据集上我们展开了对规模更大且更新更及时的网络架构——VGG-16(Simonyi和Zemel, 2014)的研究。相比于VGG-16模型具备更多的卷积层数量,在完成类似的训练方法后我们实现了对卷积层与全连接层的有效压缩以降低模型的有效参数数量(如表5所示)。该压缩比例达到了49倍。其中CONV层中的权重参数采用了8位量化表示方法而FC层则采用5位量化策略这种优化策略不仅显著减少了模型的有效参数数量还能保证分类精度不受影响值得注意的是两个最大的全连接层均被精简至原有规模的1.6%以内这一优化对于实时图像处理具有重要意义因为在实际应用场景中这些全连接层通常不会像批量处理那样频繁地被重复使用(与批处理模式不同)。这种设计思路对于提升目标检测算法的速度同样至关重要由于一个CONV通道会被多个FC通道所共享因此进行相应的优化能够有效减少所需存储空间同时也能降低系统的带宽需求若未进行相应的优化与精简则会导致系统带宽需求超出支持范围


6 DISCUSSIONS
6.1 PRUNING AND QUANTIZATION WORKING TOGETHER(修剪和量化一起工作)
图6展示了在不同压缩比率下(即压缩比为原始尺寸的比例),同时或独立进行剪枝与量化操作时的精度表现。具体而言,在分别执行剪枝与量化操作的情况下(如紫线与黄线所示),当压缩比低于8%时(即被压缩至原始尺寸比例低于8%),剪枝网络与量化网络各自的精度均出现显著下降趋势;然而,在两者协同作用下(红线表示),网络模型可被有效压缩至仅占原始尺寸比例3%,且并未导致任何性能损失。右侧部分则对比展示了奇异值分解(SVD)的结果,在此过程中计算成本较低但其压缩效率却相对较低
如图7所示,在节点数量缩减的情况下各层级模型的精度变化曲线得到了详细展示:左侧是基于CONV层的设计方案、中间部分采用了FC层架构、右侧则是综合全联结层的配置方案。各子图均记录了准确率排名前1%和前5%的结果。其中虚线部分仅采用了量化处理而未进行修剪优化;而实线则同时完成了量化与修剪过程。两者之间的差异几乎可以忽略不计。这一发现表明,在量化的同时实施修剪策略能够显著提升性能。
在修剪后的网络上进行量化处理能够展现出显著的效果。具体而言,在未经剪枝处理之前 AlexNet 网络模型拥有 6,000 万个权重参数需要进行量化编码操作;而在剪枝优化之后的新架构中,则只需要处理 670 万个权重参数即可达到类似的性能水平。进一步地,在保持相同数量质心点的前提下(即质心点数量一致),该剪枝优化策略所带来的模型性能损失更为微小



图7中前两个子图表明,在CNN模型中卷积层相较于全连接层需要更高的精度配置(即至少4bit)。对于卷积层而言,在经过训练后其最低可支持的精度降至4bit以下;相比之下全连接层表现得更加稳定:只有当参数压缩至2bit水平时才会出现明显的精度退化现象。
后续未看!!!请自行阅读原论文=
This paper presents a method for reducing the computational complexity of deep CNNs through vector quantization techniques. The proposed approach aims to enhance the efficiency of deep learning models by optimizing the quantization process, ensuring minimal loss of performance while significantly decreasing memory usage and computational requirements. This advancement is particularly valuable in resource-constrained environments where efficient inference is critical.

ABSTRACT
深度卷积神经网络(CNN)被认为是目标识别领域的最有效方法之一,在过去几年中不断展现出图像分类和目标检测方面的显著成果。然而,在实际应用中发现,过于深邃的CNN往往包含大量参数层(通常包含数百上万甚至数百万个参数),导致模型占用巨大的存储空间。这使得在资源受限的硬件设备(如手机或其他嵌入式设备)上部署深度CNN变得十分困难。为此,在本文工作中我们致力于探索压缩CNN参数信息的有效方法——特别是信息论中的向量量化技术。我们的研究表明,在压缩那些对模型性能影响最大的密集连接层方面(尤其是那些密集连接层中最重要的一部分),向量量化技术相较于现有的矩阵分解方法能够带来显著的优势。为了在模型规模与识别精度之间取得平衡,我们可以简单地应用k-means聚类算法或进行产品量化处理。经过实验验证,在ImageNet挑战提供的1000类分类任务中,我们成功实现了对现有先进CNN实现约16至24倍的网络压缩效果(同时仅导致1%的分类精度损失)。
1 INTRODUCTION
深度卷积神经网络(克里日夫斯基等人, 2012; LeCun等人, 1990; Szegedy等人, 2014;西蒙尼扬和齐塞曼, 2014)近期展现了显著的发展,并在目标识别、图像分类以及信息检索等领域树立了行业标准
在本研究中,我们聚焦于通过压缩CNN的参数来优化其在计算机视觉相关任务中的表现。例如,在Jia等人的2013年工作、Sermanet及其团队2013年的研究以及Zeiler和Fergus的2013年论文中都提出了具有8层结构(包含5个卷积层和3个全连接层)的典型CNN设计,并声称拥有超过108层的参数量能够达到最优性能水平。由于这些模型存在过度参数化的现象(Deni et al., 2013),因此探索其结构特性以实现参数压缩具有重要意义。在此研究中,我们特别关注于通过压缩全连接层来减小模型存储空间的需求(Denton et al., 2014)。对于Zeiler及Fergus所提出的典型网络架构而言,在90%以上的存储空间消耗来自于全连接层部分,在90%以上的运行时间则由卷积层所主导。因此,在本研究中我们将重点分析如何实现全连接层的有效压缩以进一步优化神经网络性能
已有若干研究围绕压缩CNN展开,但这些研究的主要关注点与我们有所不同。其中一项重要探索是由Denton及其团队在2014年提出的[1]。他们提出了一种通过矩阵分解加速CNN测试速度的方法,并特别关注了卷积层中的线性结构特性。这一方法使测试速度提升了约两倍的同时仅降低了约1%的精度水平。类似的努力还包括Jaderberg等人在同一年的工作[2],他们则着重于近似重建卷积层的方法以加速计算过程。值得注意的是,上述两项研究的目标与我们的工作具有互补性:他们致力于通过压缩卷积层来提升运行效率,而我们则聚焦于减小模型体积的关键环节——密集连接层[3]。然而,在这项工作中,则是以降低模型体积为目标为主
在本研究中未采用传统的矩阵分解方法(Denton等, 2014; ϟ等, 2014),而是重点采用了一系列基于信息理论的向量量化方法(Jegou等, 2011; Chen等, 2010),以压缩密集连接层。具体而言,在量化过程中我们采用了以下策略:首先将模型参数进行二值化处理;其次应用基于k-means的标量量化算法;此外还探索了乘积量化和残差量化的结构化量化策略。值得注意的是,在实际实验中仅应用k-means标量量化就取得了显著的效果。通过深入研究这些不同的向量量化方法及其在CNN参数压缩中的应用效果可知,在现有技术基础上我们的工作尚属首次。
本文的主要贡献如下:
- 首次系统性研究了采用向量量化方法对密集连接层进行存储压缩的技术路径;
- 通过全面评估不同矢量量化方案发现, 结构化量化方案显著优于其他现有方法, 其中特别强调产品量化方案的优势更加突出;
- 在图像检索等多维度的实际应用测试中开展系列实验, 有效验证了该压缩模型在多个实际应用场景中的泛化性能。
2 RELATED WORK
深度卷积神经网络在图像分类、目标检测以及图像检索等领域展现了显著的进步(Khrivchuk等, 2012; Jia, 2013; Donahue等, 2013; Simon et al., 2013; Semena et al., 2013; Zelikson和Feisz, 2013)、并且已取得突破性进展(Gelishchikov等, 2014)。鉴于这一领域的显著发展,在ILSVRC2014数据集上具有1000个类别标注的对象分类任务中,默认分类器已能达到前五名准确率94%的水平,并且已非常接近人类水平性能的表现。这些令人瞩目的成果激发了研究者对将CNN技术应用于现实世界问题的兴趣。其中一种应用案例是CNN已被成功应用于物体分类、场景识别以及室内场景识别领域,并且也已被用于图像检索工作并取得了令人瞩目的结果。
如上所述,在讨论最新的深度学习架构时发现
使用向量量化方法压缩CNN参数的技术思路源自Denil等人(2013)的研究成果。他们的研究表明,在神经网络模型中存在显著的冗余性——具体而言,在层内的权重可通过一小部分(约5%)参数精确预测出来。这一发现进一步证实了神经网络模型往往具有过度参数化的特点。基于这些发现与分析结果的启发与支持,在本研究中我们深入探究了在参数空间中存在冗余的可能性,并提出了相应的解决方案。特别地,我们的研究可视为对Denil等学者所报道的参数预测效果的一种精简呈现。
令我们感到意外的是,在研究过程中观察到与Denile等人(2013)所得结论极为相近的结果:我们实现了参数压缩约20倍的同时,并未出现性能显著下降的情况。这一发现进一步验证了Denil等人(2013)所提出的有趣实证结论。
3 COMPRESS DENSE CONNECTED LAYERS(压缩密集的连接层)
在本节中,我们计划探讨两种主要类型在密集连接层中的参数压缩技术。首先介绍的是矩阵分解方法,接着采用的是向量量化方法。
3.1 矩阵分解方法(Matrix Factorization Methods)

我们首先关注矩阵分解技术,在多个领域中得到广泛应用(Dentonetal.,2014)。值得注意的是,在神经网络优化方面取得突破性进展的方法之一就是奇异值分解(SVD)。具体而言,在处理密集连接层时(如权重矩阵W∈Rm×n),我们通过SVD实现对参数矩阵的有效降秩处理:

其中U \in \mathbb{R}^{m \times m}和V \in \mathbb{R}^{n \times n}是两个稠密且满足正交性的矩阵,在此基础上构建了一个m \times n维的对称非奇异对角阵S。为了实现降维后的低秩近似表示目标W这一复杂计算过程,在实际应用中我们可以通过仅保留前k个奇异向量信息来简化计算。通过选择具有相应特征值意义的主元信息集合来进行参数优化配置,并最终实现系统性能指标的有效提升:通过选择具有代表性的特征分量来进行数据建模,并在此基础上实现系统性能指标的有效提升

其中,在m×k维空间中定义了一个子矩阵ˆU,在n×k维空间中定义了另一个子矩阵Vˆ。这两个子矩阵分别从原始矩阵U和V中提取出具有重要性的前k个奇异向量。在降维后的对角矩阵Sˆ∈Rk×k中,其对角线元素代表了原始矩阵中前k个最大的奇异值。该近似采用基于弗罗比尼乌斯范数的最佳逼近方法来最小化估计误差MSE,并且需要存储这些必要的信息作为压缩的基础参数条件。
3.2 VECTOR QUANTIZATION METHODS(向量量化方法)
3.2.1 BINARIZATION(二值化)

为了便于处理量化参数矩阵,我们采用最简单的方法进行分析。对于给定的参数W,在其对应的矩阵中提取符号部分。

该方法借鉴了Dropconnect(Wanetal.,2013)的思想,在训练过程中随机将部分神经元设为0值。为了实现更高的激活效率,在这一过程中我们采用了更为激进的策略:当神经元处于阳性的状态时将其开启,在阴性状态下则关闭其连接。从几何学视角来看,密集连接的层可被视作一组超平面,在这种情形下我们的方法实际上是在将每个超平面四舍五入到最近的坐标点上。通过这种方法我们可以显著提升数据压缩效率至原来的32倍。
3.2.2 SCALAR QUANTIZATION USING kMEANS(使用kMEANS进行3.2.2标量量化)

另外一种简单的方法是通过参数的量化处理来实现模型压缩。对于矩阵W∈Rm×n来说,在不改变其原始信息的情况下,我们可以通过提取所有元素并将其重新排列成一个向量的形式W∈R1×mn来进行后续处理。然后对这些数据点应用kmeans聚类算法以实现有效的降维。

这里假设w和c均为标量。在聚类完成后,我们对w中的每一个元素赋予相应的类别索引;然后通过将这些索引与c1相关联来构建编码本。在预测阶段时,我们可以通过查询c中对应位置的wij值来进行推断。这样就得到了重构后的矩阵:

该方法要求我们将索引与代码本作为参数进行存储仅需将索引与代码本作为参数进行存储当存在k个核心位置时每个核心位置所需的位数为log base 2 of k举例来说在采用k=256的情况下每个集群的索引码宽为8 bit由此得出该方法的压缩率为32除以log base 2 of k值得注意的是尽管这种技术本身比较简单但从技术角度来看该方法在压缩性能方面展现了显著的优势
3.2.3 PRODUCT QUANTIZATION
接下来, 我们采用了压缩参数的结构化向量量化方法, 特别是提出了产品量化(PQ)方案(Jegou et al., 2011), 该方案旨在探索向量空间中存在的冗余特性。基本思路在于将整个向量空间划分成多个互不重叠的子空间, 并对每个子空间分别实施量化处理。基于假设, 每个子空间内的样本数据存在高度冗余性, 并通过在这些子空间内执行数据压缩操作, 能够更加深入地挖掘数据间的潜在关联性。具体而言, 给定一个矩阵W, 我们将其划分为多个子矩阵来进行处理


其中W_i \in \mathbb{R}^{m \times (n/s)}在假设n能被s整除的情况下成立。对于每一个子矩阵W_i而言k-means聚类分析都是适用的

其中W_i表示子矩阵W的第i行,在这里我们假设i=z以简化表示。对于每个子向量w_{i}(即W_i的某一行),我们仅需存储相应的集群索引与码本。通过重构得到的新矩阵为:\hat{W} = [\hat{w}_1, \hat{w}_2, \dots, \hat{w}_n]其中\hat{w}_i ∈ C_{f(i)}, 即每个重构后的向量\hat{w}_i属于其对应的类别f(i)所对应的码本集合。

特别指出,在我们的研究中,PQ方法被应用于矩阵的不同维度。在本研究中对x轴和y轴两种情况进行考察分析
对于该方法而言,在每个子向量中都需要存储集群索引以及对应的码本。值得注意的是,在这种情况下与标量量子化不同的是这里的码本具有重要意义。该方法的压缩速率为\frac{32mn}{32kn+\log_{2}(k)ms}。

3.2.4 residual QUANTIZATION(残差量化)
我们探讨的第三种量化策略为残差量化(Chenetal.等, 2010年),它体现了结构化量化的一种变式。其核心理念在于首先将输入向量划分为k个典型样本,并通过递归方式对剩余误差进行优化。例如,在初始阶段中我们处理一组样本集合wi(i=1,……),在这一过程中运用K-Means聚类算法对样本进行分类处理:

每个向量wz会被其最近的中心点c1j所代表。随后我们将所有数据点的wz与c1j之间的残差rz1进行计算并递归地将其转换为k个不同的码词c2j。最后我们可以在此阶段逐步补充相应的中间点从而重构出完整的向量:

假设我们已递归地进行了t轮迭代。每次迭代都需要存储完整的代码本,这可能会对内存造成较大压力。压缩速率为 \frac{m}{t k + \log_2(k) t n} 。
3.2.5 OTHER METHODS AND DISCUSSION
现有方法(KM、PQ和RQ)代表了三种不同的压缩矩阵向量量化策略。KM算法专注于单个神经元的冗余特性(以单个标量表示),这种设计能够有效降低计算复杂度;而PQ方法则深入研究了局部冗余结构,并在此基础上提出了创新性的解决方案;RQ则致力于探索权值向量间的全局冗余关系,并在此基础上构建了高效的压缩模型。进一步研究如何在学习参数的行为中发现并利用存在的冗余特性将非常有意义。
现有许多基于学习的二值化和产品量化方法存在。例如:Weiss等人于2008年提出的光谱哈希、Gong等人于2012年提出的迭代量化算法以及Norouzi和Fleet于2013年提出的凯特氏kmeans方法等。然而这些方法不适用于我们当前的任务因为我们需要存储训练得到的参数矩阵(例如一个旋转矩阵)其规模较大因此我们排除了本文中其他可能的方法考虑。在执行PQ编码过程中探索W的空间结构非常有趣由于W是在不同过滤器输出的基础上学习得到的所以将来自特定过滤器的输出分组在一起或将来自不同过滤器的不同维度分组在一起可能会很有趣。然而我们在尝试利用这种结构进行PQ编码时并未观察到明显的性能提升因此我们按默认顺序将这些维度进行分组
4 EXPERIMENTS
4.1 EXPERIMENTAL setting
我们在ILSVRC 2012基准图像分类数据集上进行了不同方法的测试。这个数据集包括了来自1000个对象类别的约1千万张训练图片,并且包含了来自该分类领域的约两万张图片作为验证用例,在每个类别中提供了二十张图片作为参考样本。我们采用了压缩技术,在标准训练集合上进行了模型训练,并通过验证集合完成了参数优化。
该研究团队基于Zeiler&Fergus(2013)提出的卷积神经网络模型进行设计与优化。具体而言,在本研究中我们采用了包含多个关键组件的深度学习架构。首先将所有输入图像经过归一化处理以统一尺寸(均为H\times W= )。随后从随机裁剪得到H\times W= 的小块补丁样本作为训练数据集的基础元素。接下来将输入图像依次传递至五个独立设计的卷积层中,在第一个两个卷积层之后分别接入局部响应归一化与最大池化操作以进一步增强特征提取能力。经过三个全连接层处理后得到输出特征图维度分别为9, 点;接着是另一个维度为点;最后输出一个维度为点的空间信息表征。在模型训练过程中我们采用RELU激活函数并配置单GPU运行环境以完成约天时间的学习任务。其中初始学习速率为预设值 learning rate= 随后每隔一段时间(约每五到十个周期)会将其衰减一半以防止过拟合现象的发生。此外为了提高模型泛化性能参数设置包括权重衰减系数 weight decay= 以及动量因子 momentum= 等关键超参数进行优化调参工作以实现最佳性能指标
为了比较不同方法的效果,
我们采用了验证集上的分类准确率作为评价指标。
此外,
我们还分别利用F1@1和F1@5来分析各种参数压缩策略。
我们的目标是在保证相同准确度的前提下追求更高的压缩比率,
同时在同样压缩比率下寻求更高的准确度。
