DEEP COMPRESSION小記


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM