【模型壓縮】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倍。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章