深度神经网络压缩
2017-09-04 14:31
399 查看
论文地址:Deep Compression: Compressing Deep Neural Networks with Pruning, Trained Quantization and Huffman Coding
源码:github
源码
介绍:
本篇论文主要讲述关于深度学习网络参数的压缩工作。论文主要从下三点出发:pruning:对网络进行剪枝,只保留重要的连接
train quantization:通过参数共享量化权重矩阵
huffman coding:对量化值进行huffman编码,进一步压缩。
整个网络在不影响性能的情况下,能够将参数量降低到原来的1/49~1/35。
网络剪枝
在深度学习训练的过程中,会学到连接的参数。剪枝的方法是:连接的权值小于一定阈值的直接移除,最终就得到了稀疏的网络连接。剪枝这一步骤能够将VGG-16(AlexNet)参数降低到原来的1/13(1/9)。 稀疏矩阵用compressed sparse row(CSR)和compressed sparse column(CSC)的格式进行压缩,总共需要2a+n+1个存储单元,a是非零元素个数,n是行数或者列数。
网络剪枝的过程如figure 2所示:
一个4*4的矩阵可以用一维16数组表示,剪枝时候,只保留 权值大于指定阈值的数,用相对距离来表示,例如idx=4和idx=1之间的位置差为3,如果位置差大于设定的span,那么就在span位置插入0。例如15和4之间距离为11大于span(8),所以在4+8的位置插入0,idx=15相对idx=12为3。这里span阈值在卷积层设置为8,全连接层为5。
共享量化权重矩阵
上图假定某层有4个输入单元4个输出单元,权重矩阵为4*4,梯度同样为4*4。
假设权重被量化为4类,用四种颜色标识。用每类量化的值代表每类的权值,得到量化后的权值矩阵。用4个权值和16个索引就可以计算得到4*4权重矩阵连接的权值。梯度矩阵同样量化为4类,对每类的梯度进行求和得到每类的偏置,和量化中心一起更新得到新的权值。
压缩率计算方法如下公式所示:
r=nbnlog2k+kb(1)
公式(1)n代表连接数,b代表每一个连接需要b bits表示,k表示量化k个类,k类只需要用log2(k)个bit表示,n个连接需要nlog2(k)索引,还需要用kb表示量化中心的数值。
霍夫曼编码
聚类中心,需要用log2(k)的bit作为索引,这里可以使用变长的huffman编码进一步压缩。figure5显示了压缩前和压缩后的长度分布。
相关文章推荐
- 【深度神经网络压缩】Deep Compression (ICLR2016 Best Paper)
- 【神经网络与深度学习】Google Snappy - 一个高速压缩库
- 阅读笔记:深度神经网络模型压缩与加速
- Deep Learning(深度学习)之(六)【深度神经网络压缩】Deep Compression (ICLR2016 Best Paper)
- 阅读笔记:一种用于深度神经网络压缩的滤波器级别的剪枝算法ThiNet
- 当前深度神经网络模型压缩和加速方法速览
- 深度神经网络模型压缩
- 当前深度神经网络模型压缩和加速方法速览
- 深度神经网络模型压缩
- 综述论文:当前深度神经网络模型压缩和加速方法速览
- 神经网络压缩:Mimic(一)Do Deep Nets Really Need to be Deep
- 深度卷积神经网络学习
- 零基础入门深度学习(3) - 神经网络和反向传播算法
- 吴恩达深度学习第一课第三周(浅层神经网络)
- 神经网络与深度学习笔记——3.2神经网络表示
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
- 神经网络和深度学习 —— 浅层神经网络
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- 深度学习系列(二):从神经网络到深度学习
- 深度学习一:搭建简单的全连接神经网络