當前位置:編程學習大全網 - 源碼下載 - 深度壓縮閱讀筆記

深度壓縮閱讀筆記

以上是深度壓縮中描述的神經網絡壓縮方法,主要包括三個步驟:

通過上述步驟,可以將神經網絡的存儲空間壓縮到壹個很小的值,同時提高預測運算的速度,降低功耗,幾乎不損失精度。

剪枝實現起來非常方便,就是設置壹個閾值,絕對值大於這個閾值的權重保留,其他權重設置為0。公式如下:

經過剪枝後,權重矩陣由密集矩陣變為稀疏矩陣(或由稀疏矩陣變為稀疏矩陣),因此權重矩陣可以采用存儲稀疏矩陣的壓縮存儲方式,如CSR(壓縮稀疏行)或CSC(壓縮稀疏列)。在CSR和CSC的基礎上,本文將索引的值從絕對坐標改為偏移量,如下所示:

也就是說,原始存儲模式是:

現在的存儲模式是:

這樣做的好處是diff可以使用更少的位進行存儲。如果偏移量超出了位可以表示的範圍,則會插入額外的零來彌補偏移量。

量化是壹個近似的過程,以適度的誤差為代價,使無限精度(或高精度)的數值可以用較少的位數來表示。這裏的量化就是指定壹系列的值,讓所有的權重都可以從中選取,也就是所有權價值的數值可以享受。該過程分為以下步驟:

在微調過程中,首先進行正常的正向傳播和反向傳播。註意,由於剪枝的影響,矩陣變得稀疏了,權重矩陣中的0表示去除了連接,因此丟棄了這些位置的梯度(設置為0)。微調的對象是聚類的質心,也就是量化輸出。上壹步完成後,每個權重對應的聚類就確定了。圖中的cluster_index表示定量聚類的結果,結果在權重和梯度圖中用顏色標註。比如權重中的2.09(第壹行第壹列)和2.12(第二行第四列)是同壹個聚類,量化後用同壹個值來表示。

當生成梯度矩陣時,聚類的質心被微調。微調的方法是將屬於同壹聚類的所有權值對應的梯度求和,乘以學習率,然後從質心中減去。公式如下:

其中是第n次微調的結果,lr是學習率,它是聚類成k個簇的壹組所有權值,表示對應於權重w的梯度..微調過程的初始值是k-means輸出的聚類質心。

量化後,原稀疏矩陣變成稀疏矩陣加查找表,即原稀疏矩陣存儲權值w的位置變成權值w所屬的簇號K,簇號K的位數小於權值w的位數,從而達到壓縮的目的。查找表的索引是聚類數,值是聚類的聚類質心(量化輸出)。恢復壹個矩陣的過程就變成了先從稀疏矩陣中讀取對應的簇號,然後從查找表中查找這個類對應的值。如上例所示,存儲結果是:

霍夫曼編碼是進壹步壓縮的方式。這種編碼采用變長編碼表進壹步壓縮存儲所需的空間,運算時只需以霍夫曼編碼從存儲器中解碼出所需數據即可。

這裏考慮的壓縮比主要是量化帶來的,因為剪枝的壓縮比與權值的取值密切相關,而量化壓縮比主要是用低位數表示高精度程度帶來的,公式如下:

其中,n是權重的數量,b是未量化矩陣的比特數量,k是量化集群的數量。即每個權值量化後,可以用比特表示,這樣所有權值所需的比特數,除第壹次外,還需要k值的查找表,存儲所需的比特數為

在反向傳播過程中,微調對象是聚類質心,因此量化誤差考慮如下:

這與k均值相壹致,因此可以通過使用k均值來最小化量化誤差。微調時需要考慮量化質心對結果的影響,即量化質心對網絡代價函數的影響。梯度傳播公式如下:

其中是指標函數(條件為1,否則為0),這個公式完全對應量化的微調過程。

上圖描述了壓縮比和精度的關系。可以發現,無論是量化和剪枝單獨使用還是結合使用,都可以在不損失精度的情況下達到壹定壓縮比的壓縮,效果優於SVD。

上圖顯示了量化位數對精度的影響,也顯示了剪枝過程對量化的影響。可以發現,對於本文評估的網絡,全連接層采用2比特量化,卷積網絡采用5比特量化,可以達到很好的效果。同時剪枝對量化的影響很小,可以認為兩個過程互不幹擾。

上圖是三種不同的初始化方法對壓縮後精度的影響,可以發現線性量化的初始化方法更好。本文分析了較大的權值對結果的影響較大,但這種權值的個數較少,所以線性初始化方法往往會產生壹些較大的聚類質心。

深度壓縮的方法可以概括為剪枝+量化+霍夫曼編碼,可以在不損失精度的情況下壓縮神經網絡,其中對於AlexNet可以壓縮35倍,對於VGG-16可以壓縮49倍,推理時存儲的應用更加有效。目前剪枝/稀疏矩陣運算已經被各種框架廣泛支持,但是量化支持很少,可以考慮重寫CPU庫或者設計專用ASIC來實現量化網絡的高效運算。

  • 上一篇:開放源代碼軟件的歷史
  • 下一篇:哪些應屆大學畢業生招聘求職網比較好?馬上大學畢業了,現在工作不好找,尤其對應屆畢業生的需求比較少
  • copyright 2024編程學習大全網