目的:本文是對韓鬆博士ICLR 2017論文 DSD:Dense-sparse-dense training for deep neural networksde的詳細解析。
論文地址:https://arxiv.org/pdf/1607.04381.pdf
代碼地址:https://songhan.github.io/DSD.
目錄
一、摘要
貢獻點:
1.1 全新模型
提出了一個全新的DSD的訓練流程,來使網絡得到更好的訓練。先Dense訓練,獲得一個網絡權重;然後spars將網絡剪枝,然後繼續dense訓練。從而獲得更好的性能。
1.2 提升模型準確率
實驗顯示DSD在CNN,RNN,LSTM等圖像分類、圖像識別,語音識別等模型上都取得了很好的效果。
- 將GoogleNet的Top1 accuracy提升了 1.1%
- VGG-16提升了4.3%
- ResNet-18提升了1.2%
- ResNet-50提升了1.1%
1.3. 易於實施
DSD易於實施,只在S階段引入一個超參數,其他階段也更易實現。
二、方法
2.1 區別
與dropout的區別
雖然都是在訓練過程中有prune(剪枝)操作,但是DSD是有一定依據來選擇去掉哪些connection,而dropout是隨機去掉
與模型壓縮的區別
DSD的目的是提升準確率,不能帶來模型的精簡。
2.2 算法流程
D:將網絡正常訓練,獲得相應的權重
S:將網絡剪枝,將小於某值的權重去掉,然後繼續訓練。
D:將剪枝的權重恢復爲0,重新訓練網絡。
2.3 相應權重的變化
(a)上圖爲權重的直方圖。我們看到第一次Dense訓練之後,權重分佈都有,且在各處分佈
(b)將絕對值小於某值的權重刪除掉,我們看到某絕對值一下的權重都沒有了
(c)進行sparse訓練,我們看到邊緣變得平滑。
(d)恢復剪枝的權重,全部置爲0。則0值有一個高峯。
(e)再次進行訓練,權重各處都有分佈。
2.4 具體流程及解釋
Initial Dense Training
即普通神經網絡的訓練方法,但此步的目的是1.學出權重的值 2.學出哪些權重更重要(絕對值越大則權重越重要)。
Sparse Training
按比例將小於某絕對值權重值的值置爲0。
進行剪枝的數學推導:
假定我們有一個loss,loss受到權重值的影響,是權重值的函數。
權重值變化會帶來Loss值的變化:
所以權重值越小,則置爲0帶來的權重的變化越小,Loss值的變化也越小。
Final Dense Training
恢復被剪枝的權重置爲0,重新訓練。
三、實驗
各個數據集上均帶來了性能的提升。
四、討論與原理
DSD帶來了準確率的提升,作者進行了下面這些討論:
跳過了鞍點(Saddle Point)
鞍點:鞍點(Saddle point)在微分方程中,沿着某一方向是穩定的,另一條方向是不穩定的奇點,叫做鞍點。在矩陣中,一個數在所在行中是最大值,在所在列中是最小值,則被稱爲鞍點。在物理上要廣泛一些,指在一個方向是極大值,另一個方向是極小值的點。
鞍點梯度接近於0,模型接近於收斂。但是剪枝的過程跳過了這些點。
更好的局部極小值(Better Minima)
低權重置爲0就獲得了更好的局部極小值。(對此作者沒有具體解釋)
正則化與稀疏訓練
稀疏的正則化將模型拉到了更低的維度,因此可以對於噪聲更加魯棒。
魯棒的再次初始化
普通的模型只初始化一次,但是DSD進行了兩次(或更多)的權值初始化。這裏作者給出了一個猜想,作者採用的是0值初始化的方法,其他的初始化方法值得嘗試。
打破了對稱性(Symmetry)
剪枝能破壞權值的對稱性,所以獲得更好的訓練。(此處不明意義,作者未給出詳盡解釋,我對於symmetry的理解不夠好。貼出原文)
Break Symmetry: The permutation symmetry of the hidden units makes the weights symmetrical,thus prone to co-adaptation in training. In DSD, pruning the weights breaks the symmetry of the hidden units associated with the weights, and the weights are asymmetrical in the final dense phase.