2016ICLR最佳論文 Deep Compression: Compression Deep Neural Networks With Pruning, Trained Quantization And Huffman Codin
主要針對神經網絡模型巨大,在嵌入式機器中比較難運行的問題。
abstruct
壓縮網絡包括三個階段:pruning, trained quantization and Huffman coding,能將模型減小1/35~1/49,並且不影響精度。首先
只通過學習重要連接來剪枝網絡,接着量化權重,使得權重共享;最后使用Huffman編碼進一步壓縮。經歷了前兩個階段后,重新訓練網絡
來fine tune剩下的連接和quantized centroids。剪枝使得連接減小1/9~1/13,量化使得bits從32減小至5。如下圖所示。

Network Pruning
網強剪枝經常被用在減小模型復雜度避免過擬合上。剪枝如上圖所示:正常訓練網絡;根據閾值剪掉一些小的連接;對得到的稀疏
網絡再訓練。
在存儲稀疏網絡時,采用的是稀疏行(compressed sparse row,CSR) 或稀疏列(compressed sparse column,CSC),
需要2a+n+1個參數。其中a指的是非零元素的個數(非零元素所在列),n是指行數或列數。怎么得來的呢?
假設存在如下一個稀疏矩陣

CSR將原始矩陣分為三部分,AA,JA,IC

其中AA指的是所有非零元素,長度為a;JA指的是每一行第一個非零元素在AA中的位置,最后一個元素為非零元素數加1,長度為
行數加1,即n+1;IC指的是AA中每個元素所對應的列號,長度為a。同理,由這三個指標可得到稀疏矩陣A。所以確定CSR的大小。
為了進一步壓縮模型,存儲非零元素的絕對索引(index difference)而不是絕對路徑,即后面的元素存儲的是與前一個非零元素的
索引差值。在論文中,采用bits來編碼索引差值。以下圖為例,如果采用3bit,則最大的span為8,如果某非零元素距離前一個非零
元素超過8,則將span為8的元素置為0即可。在conv layer和fc layer中,分別采用8bits和5bits對其進行編碼。

Trained quantization and Weight sharing
網絡量化和權值共享可以通過減少權重表達所需的位數,來進一步壓縮剪權網絡。通過共享權重來限制有效權重的數量,然后對
共享權重進行fine-tune。
在Fig3中,左上為權值矩陣,左下為gradient矩陣。作者將矩陣進行聚類成4種cluster,得到量化后的
權值矩陣,屬於同一類的weight則共享權值。在圖中,原來的每個weights需要32位,現在只需2位,壓縮了16倍。

Weight Sharing
使用k-means對每一層的weight聚類,同屬一個cluster共享權值,跨層的weight不進行權值共享。對於
k-means來說,初始點的中心選擇很重要,作者采用了三種方式:Forgy(random), density-based, and
linear initialization,並以AlexNet中的conv3的權重分布為例,比較了三種方式:

由上圖可以看出,Forgy 和 density-based 方法產生的centroids很少落入到大權值的范圍中,
造成的結果就是忽略了大權值的作用;而Linear initialization產生的centroids非常平均,沒有這個問題存在。
后續的實驗結果也表明,Linear initialization 的效果最佳。
量化之后,目標函數的求導就變為了量化后聚類中心的值的求導:

Huffman Coding
Huffman Coding 是一種非常常用的無損編碼技術。它按照符號出現的概率來進行變長編碼。figure 5為AlexNet的最后一個全連接層
權重以及權值索引分布。其分布是非均勻的、雙峰形狀,因此我們可以利用Huffman編碼來對其進行處理,該圖顯示了壓縮前和壓縮后的長度分布。

參考:http://blog.csdn.net/zijin0802034/article/details/53982812
http://blog.csdn.net/cyh_24/article/details/51708469
http://blog.csdn.net/boon_228/article/details/51718521
http://blog.csdn.net/shuzfan/article/details/51383809
http://blog.csdn.net/may0324/article/details/52935869
http://blog.csdn.net/wangqingbaidu/article/details/52649775
http://blog.csdn.net/cv_family_z/article/details/51917143
http://blog.csdn.net/stdcoutzyx/article/details/50926174
