1. 程式人生 > >神經網路壓縮(7)Soft weight-sharing for neural network compression

神經網路壓縮(7)Soft weight-sharing for neural network compression

Soft weight-sharing for neural network compression

Abstract

  1. soft weight-sharing
  2. achieves both quantization and pruning in one simple (re-)training procedure
  3. the relation between compression and the minimum description length (MDL) principle

Intro

  1. compression直接相關:(variational) Bayesian inference and
    the minimum description principle
  2. Hinton1992,soft weight sharing 這個是作為一種正則化的方法用於降低網路的複雜性,防止過擬合
  3. 他主要的構想也是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的比較:
這裡寫圖片描述