深度學習網絡壓縮模型方法總結(model compression)


兩派

1. 新的卷機計算方法

這種是直接提出新的卷機計算方式,從而減少參數,達到壓縮模型的效果,例如SqueezedNet,mobileNet

  1. SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size

修改網絡結構,類似於mobileNet

  1. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

修改卷機計算方式,depth-wise 卷積

2. 已訓練好的模型上做裁剪

這種就是在訓練好的模型上做一些修改,然后在fine-tuning到原來的准確率,主要有一些方法

  • 剪枝:神經網絡是由一層一層的節點通過邊連接,每個邊上會有權重,所謂剪枝,就是當我們發現某些邊上的權重很小,可以認為這樣的邊不重要,進而可以去掉這些邊。在訓練的過程中,在訓練完大模型之后,看看哪些邊的權值比較小,把這些邊去掉,然后繼續訓練模型;

  • 權值共享:就是讓一些邊共用一個權值,達到縮減參數個數的目的。假設相鄰兩層之間是全連接,每層有1000個節點,那么這兩層之間就有1000*1000=100萬個權重參數。可以將這一百萬個權值做聚類,利用每一類的均值代替這一類中的每個權值大小,這樣同屬於一類的很多邊共享相同的權值,假設把一百萬個權值聚成一千類,則可以把參數個數從一百萬降到一千個。

  • 量化:一般而言,神經網絡模型的參數都是用的32bit長度的浮點型數表示,實際上不需要保留那么高的精度,可以通過量化,比如用0~255表示原來32個bit所表示的精度,通過犧牲精度來降低每一個權值所需要占用的空間。

  • 神經網絡二值化:比量化更為極致的做法就是神經網絡二值化,也即將所有的權值不用浮點數表示了,用二進制的數表示,要么是+1,要么是-1,用二進制的方式表示,原來一個32bit權值現在只需要一個bit就可以表示,可以大大減小模型尺寸。

  1. XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks

網絡權重二值化、輸入二值化,從頭開始訓練一個二值化網絡,不是在已有的網絡上二值化

  1. Learning both Weights and Connections for Efficient Neural Networks

學習重要的連接,根據連接的權重進行裁剪,fine-tuning讓網絡保持稀疏的連接

  1. Exploiting linear structure within convolutional networks for efficient evaluation.

對已經訓練好的網絡應用奇異值分解

  1. Eie: Efficient inference engine on compressed deep neural network.

加速器

  1. Deep compression: Compressing DNNs with pruning, trained quantization and huffman coding.

裁剪(閾值)、量化(8bit,存儲方式)、哈夫曼編碼
http://blog.csdn.net/may0324/article/details/52935869

  1. Deep Model Compression: Distilling Knowledge from Noisy Teachers

Teacher-student Framework,一個網絡指導另外一個網絡的訓練

  1. PerforatedCNNs: Acceleration through Elimination of Redundant Convolutions

在一些稀疏位置跳過CNN求值,加速效果不明顯,且不能壓縮模型

  1. Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or −1

訓練二值化網絡
https://tensortalk.com/?cat=model-compression-parameter-pruning

  1. PRUNING FILTERS FOR EFFICIENT CONVNETS

計算filter的L1范數,直接過濾掉較小L1范數對應的feature map, 然后再次訓練,有兩種,一是每裁剪一層訓練一下,一是直接裁剪整個網絡,然后fine-tuning. 相比權值連接的裁剪,這種比較暴力,好處就是不會引入稀疏矩陣的計算,從而也不需要稀疏矩陣庫,壞處就是可能無法恢復到最開始的准確率。


免責聲明!

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



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