[论文解读] Deep Compression

时间:2024-03-26 09:04:47

基本介绍

《Deep Compression : Compressing Deep Neural Networks With Pruning, Trained Quantization and Huffman Coding》 是ICLR16的best paper, 其核心的想法是在不损失模型精度的情况下,将ALexNet, VGG-16等普遍使用的模型进行压缩,使此类模型移植到微型嵌入式或者移动设备成为可能。

总体框架

[论文解读] Deep Compression

Deep Compression 的实现流程包括三个阶段的内容,分别为:

  • Pruning(剪枝)
  • Quantization(量化与权值共享)
  • Huffman Coding(哈弗曼编码)

通过联合上述三个部分的内容,达到了相对较好的效果。接下来,将针对上述三部分逐个进行分析:

Pruning(剪枝)

剪枝的基本思想就是将神经网络得到的参数矩阵转换为稀疏矩阵,采用CSR(compressed sparse row)或者CSC(compressed sparse column)的方式来进行矩阵数据的存储。

由于将参数矩阵转换为稀疏矩阵,然后使用CSR或者CSC的方式进行存储是一种常用的方式,因此不在此处进行赘述,详情可以参考Sparse Matrix from Wiki.

Quantization and weights-sharing(量化与权值共享)

这个步骤相当于k-means聚类,将网络的参数聚类成若干个权值,再用索引记录该权值。
对于CONV卷积层,论文中用8 bits索引一个权值(所以,总共有256个共享权值,即聚类中心),而对于FC全连接层,则使用5bits。作者通过这个方法,在AlexNet上能做到准确度完全不降。
这样该步骤能做到的压缩率为

[论文解读] Deep Compression

其中 nn 为连接权值的个数,kk 是聚类个数,代表某个聚类则需使用 log2(k)log2(k) 个bits,每个权值用 bb 个bits表示。
文中给了一个例子,不同颜色表示不同的聚类,反向传播的时候也是如此。

[论文解读] Deep Compression

聚类中心初始化

聚类中心的初始化会影响聚类的效果,进而影响神经网络预测的准确度。

  • 随机初始化(Forgy initialization):即随机选择k个权值进行初始化。(蓝色点表示,集中在两个概率密度的尖峰)
  • 密度线性初始化(Density-based initialization ):在累积概率分布等间距取样k个,找到相对应的初始化值进行初始化。(绿色点表示,比随机初始化更加集中)
  • 线性初始化(Linear initialization):在权值的分布范围内等间距选择k个权值来初始化。(红色点表示)

[论文解读] Deep Compression

有论文指出,数值大的权值在神经网络中起的作用很大,但是这些大权值所占在比例少.
因此,对于Forgy initialization和Density-based initialization 更难表示好这些大权值。
实验结果也比较了这三种初始化方法的差异并证实了该论点。如图:

[论文解读] Deep Compression

在压缩比一样的情况下,线性初始化跑出的结果略高于前两种初始化方式。

Huffman Coding(哈弗曼编码)

使用最为典型的哈弗曼编码将得到的数据进一步进行压缩。

总结

仔细通读了这篇文章,总体而言,思路相当清晰,表征了三种实现方式的main idea,同时通过大量的实验数据对提出方法的效果进行了佐证。但是细节方面基本完全没有涉及,因此关于很多具体的实现后期可能需要参考源代码。

由于项目需要,后期可能会在了解DSD训练技术以及EIE推理技术的基础之上,针对SqueezeNet进行深入分析。

参考资料

  1. DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN CODING

  2. PPT – Deep Compression and EIE:
    ——Deep Neural Network Model Compression and Efficient Inference Engine

  3. 论文笔记 《Learning both weights and connections for efficient neural networks》

  4. 论文笔记 Deep Compression compressing deep neural networks with pruning, trained quantization and huffman coding