神經網路壓縮(7)Soft weight-sharing for neural network compression
Soft weight-sharing for neural network compression
Abstract
- soft weight-sharing
- achieves both quantization and pruning in one simple (re-)training procedure
- the relation between compression and the minimum description length (MDL) principle
Intro
- compression直接相關:(variational) Bayesian inference and
the minimum description principle - Hinton1992,soft weight sharing 這個是作為一種正則化的方法用於降低網路的複雜性,防止過擬合
- 他主要的構想也是quant的思想,文章中提到,對比韓鬆的方法,需要一步一步的進行prune和quant然後在retrain,這篇文章引入soft weight sharing的方法說可以在retain的過程中一起實現prune和quant;
Method
- 需要優化的目標函式:
損失函式:Le是error cost;Lc是complexity cost;
然後先驗概率p(w)分佈引入了高斯混合分佈,最終的目的是通過訓練讓weight聚集在cluster周圍,讓權重形成幾個不同的組,優化這些cluster中心使網路得到比較高的預測精度。最後的compresssion是通過對這K個cluster的均值(中心)編碼實現。(所以覺得還是quant的思想,聚焦點在於如何尋找quant的分組)
- 不同高斯成分的中心和方差還有混合係數都作為學習的一部分,為了最小化誤差函式,需要計算各個不同引數的導數。為了最小化最終的誤差函式,我們必須要把誤差函式能夠對各種可進行調整的引數進行求導,我們首先需要把{πj}看作先驗概率然後引入一個相應的後驗概率,就是這個公式,然後分別對各個引數求導:
1.正則化項的影響就是將每個權重拉向第 j 個高斯的中心
2.它是將ui推向權值的均值方向
3.這會驅使delta朝著對應中心附近的權重的平方偏差的權重化均值方向移動
4.pi會被推向成分 j 的平均後驗概率的方向。
整個演算法流程
tao是正則化係數,文章設定0.005,給定lr等引數;mean初始化是在pretrain的weights的大小範圍內進行均勻初始化;方差:weight decay rate the original network has been trained on;
最後的結果是每個weights被對應的歸為比例最高的那個元件的mean值
細節
為了保證有一定的prune ratio,文章設定:
-Weights會分佈在聚類中心的附近,然後weights和means之間,means和means之間都是會相互影響的,文章說在這種情況下quant成多少部分是網路 自己學出來的,太相近的聚類之間,如果KL散度小於一定閾值,需要合併,這是合併的規則:
最終的儲存格式也是借鑑了韓鬆的deepcompression的方式
Experiments
Weight值在retrain之前和之後的變化,在0處達到一個很高的峰值。
學習過程中,高斯混合模型的一個變化過程,y軸是高斯分佈的中心值,可以看到從最初的初始化為17個部分,慢慢互相吸收靠近變成最後6個;散點圖也顯示了retrain前的weights到最後分佈在各個高斯中心點附近的weights
和popular network的比較: