云從科技研究院丨神經網絡壓縮_Deep Compression_第1頁
云從科技研究院丨神經網絡壓縮_Deep Compression_第2頁
云從科技研究院丨神經網絡壓縮_Deep Compression_第3頁
云從科技研究院丨神經網絡壓縮_Deep Compression_第4頁
云從科技研究院丨神經網絡壓縮_Deep Compression_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、作者簡介:帆哥,云從研究院深度學習研究團隊成員。主攻網絡優(yōu)化與加速神經網絡壓縮:DeepCompression本次介紹的方法為”深度壓縮”,文章來自2016ICLR最佳論文DeepCompression:CompressionDeepNeuralNetworksWithPruning,TrainedQuantizationAndHuffmanCoding作者給出了AlexNet的一個簡易model: HYPERLINK https:/github.eom/songhan/Deep-Compression-AlexNet https:/github.eom/songhan/Deep-Compre

2、ssion-AlexNetIntroduction神經網絡功能強大。但是,其巨大的存儲和計算代價也使得其實用性特別是在移動設備上的應用受到了很大限制。所以,本文的目標就是:降低大型神經網絡其存儲和計算消耗,使得其可以在移動設備上得以運行,即要實現(xiàn)“深度壓縮”。實現(xiàn)的過程主要有三步:通過移除不重要的連接來對網絡進行剪枝;對權重進行量化,使得許多連接共享同一權重,并且只需要存儲碼本(有效的權重)和索引;進行霍夫曼編碼以利用有效權重的有偏分布;具體如下圖:sameiaccuracy:=i35x-49xreductionoriginal,networkiG:original)size(accuracy

3、(EncodeweightsNetworkPruning剪枝”詳細點說也可以分為3步:進行正常的網絡訓練;刪除所有權重小于一定閾值的連接;對上面得到的稀疏連接網絡再訓練;存儲稀疏結構時采用的是稀疏壓縮行CSR或者稀疏壓縮列CSC,假設非0元素個數(shù)為a,行或者列數(shù)為n,那么我們需要存儲的數(shù)據量為2a+n+1。以CSR為例,我們存儲時采用的是3元組結構,即:行優(yōu)先存儲a個非零數(shù),記為A;a個非零數(shù)所在列的列號;每一行第一個元素在A中的位置+非零數(shù)個數(shù)。為了進一步壓縮,這里不存儲絕對位置的索引,而是存儲相對位置索引。如果相對索引超過了8,那么我們就人為補0。如下圖:IdxQ1123P4567Pg1Q

4、1112J131415Jdlffr1ra83value3.40.901.7SpanExceeds8=2A3FillerZeroTrainedQuantizationAndWeightSharing這一部分通過對權重進行量化來進一步壓縮網絡(量化可以降低表示數(shù)據所用的位數(shù))。通過下圖,我們來說明如何對權重進行量化,以及后續(xù)又如何對量化網絡進行再訓練。weights(32bitfloat)clusterindex(2bituint)centroidsfine-tunedcentroidscluster0:kgradient-0.03-0.01O.OJ0.02-O.&10.01-0.020.12-O

5、.&10.020.04Q.01-0.07-0.020.01-0.02groupby-0.030,120.02-0.07Q.03-0.02Q.G2-0.010.010.04-0.01-0.02-0.01Q.01首先,假設我們輸入神經元有4個,輸出神經元也是4個,那么我們的weight應該是4x4,同樣梯度也是。然后,我們量化權重為4階,即上圖用4種不同顏色表示。這樣的話我們就只需要存儲4個碼字以及16個2bit的索引。最后,我們應該如何再訓練,即如何對量化值進行更新。事實上,我們僅對碼字進行更新。具體如上圖的下部分:計算相同索引處的梯度之和,然后乘以學習率,對相應的碼字進行更新。實際當中,對于A

6、lexNet,作者對卷積層使用了8bit量化(即有256個碼字),對全連接層使用了5bit量化(即有32個碼字),但是卻不損失性能。關于如何確定碼字:作者對訓練好網絡的每一層(即不同層之間權重不共享)的權重進行K-means,聚類中心便是要求的碼字。有一點需要注意,K-means聚類時需要初始化聚類中心,不同的初始化方法對最后的聚類結果影響很大,從而也會影響網絡的預測精度。這里比較了Forgy(random),density-based,andlinearinitialization這三種初始化方法。下圖畫出了AlexNet中conv3層的權重分布,其中紅色線表示概率密度分布PDF,藍色線表示

7、CDF。顯然,剪枝后的網絡權重符合雙峰分布。圖的下方,顯示了3種不同初始化方法最后收斂到的聚類中心。8o6o42ioouo一4nq_4s-pQ/_4e-nEUJrDoo-0.10-0.050.00weightvalue0.05o.io有一點我們需要注意:大權重比小權重的作用要大。因此,從上圖來看雖然Forgy(random),density-based方法比較好的擬合了數(shù)據分布,但是它們忽略了那些絕對值較大的權重,而linearinitialization就不會有這個問題。因此,文章采用線性初始化,實驗也證明了其正確性。下圖是finetune前后的碼字分布:200001500010000500

8、00 xxxxxxxxxxxxxxxxxxxlinearquantizationnonlinearquantizationbyclustringandfinetuning-0.04-0.020.000.02weightvalue0.040.06HuffmanCodingHuffman編碼按照符號出現(xiàn)的概率來進行變長編碼。下面的權重以及索引分布來自于AlexNet的最后一個全連接層。由圖可以看出,其分布是非均勻的,因此我們可以利用Huffman編碼來對其進行處理,最終可以使的網絡的存儲減少20%30%。10000075000200001650005000011000025000013579111

9、3151719212325272931WeightIndx(32Effective55000013579Sparse11131517192123P5272931MalrixLocationIndx(MaxDiffi空32)Distributionforweight(Left)andindex(Right).Thedistributionisbiased.ExperimentResults文章主要在LeNet、AlexNet和VGGNet上做的實驗,我這里只列出一部分NetworkTop-1ErrorTop-5ErrorParametersCompressRateLeNet-300-100RefLeNet-300-100CompressedL64%J.58%1070KB27KB40 xLeNet-5RefLeNet-5Compressed

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論