【模型压缩】Deep Compression,多种方式混合经典paper

Paper:Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding

论文链接:https://arxiv.org/abs/1510.00149

ICLR 2016的best paper,通过剪枝、量化、哈夫曼编码三步混合来做模型压缩。


Introduction

image

整个算法流程主要为上图三部分:

1.剪枝:将部分很小的权值设为0,使权值矩阵转为一个稀疏矩阵。

2.量化:将剪枝后保留的权值进行量化,使剪枝后保留的权值共享使用的值,这样可以减小保存权值使用的空间,进一步压缩所需要的存储空间。

3.哈夫曼编码:霍夫曼编码是一种编码形式,进一步减小数据保存需要的存储空间。

Pruning

image

image

CSR将原始矩阵分为三部分,AA,JA,IC
将原始n×n大小的稀疏矩阵用2a+n+1个数值表示。

作者在CSR和CSC的基础上,将index上的值由绝对坐标转为偏移量表示,减少了存储

image

剪枝的实现过程:

1.设定一个阈值,绝对值大于这个阈值的权值被保留,其他权值被置0。
2.使用存储稀疏矩阵的压缩存储方式存储剪枝过后的权值矩阵(例如CSR、CSC)。

Quantization


image

流程:

量化的实现:

1.初始化k-means质心:k-means质心的初值对结果的影响很大,有三种方法:均匀量化,随机量化和按密度量化,作者证明使用均匀量化的初始化效果较好。

2.确定量化阈值:确定对于每一个权值使用哪个量化输出来代替。

3.进行微调:对k-means的质心再进行微调。

image

对k-means的质心进行微调:

由于剪枝的作用,矩阵已经成为稀疏矩阵,权值矩阵中为0表示该连接被移除,因此这些位置的梯度被舍弃。

image

image

n是权重的数量,b是原始的每个权值的比特数,k为量化簇的数量

量化:
完成量化后,原来的稀疏矩阵变为一个稀疏矩阵加一个查找表,达到了压缩的目的。

Huffman Coding

image

该图显示了压缩前和压缩后的长度分布

Experiment

Deep Compression能够在不损失精确度的情况下把参数压缩到35到49倍。

发布了49 篇原创文章 · 获赞 41 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/DL_wly/article/details/99058255