原文地址:http://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Sun_Sparsifying_Neural_Network_CVPR_2016_paper.pdf
這篇論文中,主要的創新點在於,他是基於一個Baseline ConvNet structures(VGG模型),進行了創新,也就是對逐層進行sparse,從而得到一個sparse CNN模型。
所做的貢獻:
提出了一種Sparse ConvNet model,對VGG模型進行了創新改造。
首先,訓練一個基礎的卷積模型;然後,從結果上將全連接層到卷積層Sparse,重新訓練一下,得到Sparse CNN模型。
具體細節:
1.Baseline model是基於VGG模型的,但是又不同於VGG模型,根據兩個模型結構對比來看。
VGG模型
Baseline 模型
基於VGG做改進的Baseline Model:
1.最後兩個卷積層用兩個Locally-Connected層來代替,這樣可以增加模型擬合能力
2.在所有的卷積層中都用修正後的線性激活函數
3.最後一個locally-connected層和全連接層分別使用Dropout率爲30%和50%的Dropout
2.對網絡模型進行Sparse處理
以下爲本人對論文的理解,如需看原僞代碼,請見論文
通過第一步訓練好的baseline model,訓練好之後,就有需要稀疏化的M個層,M層分別對應了M個稀疏度。好了,稀疏連接算法的輸入得到了。
輸入:網絡結構T;M個網絡層;M層相對應的稀疏度
for m from 1 to M do
//有M層就得循環M次,相當於每次循環都是全網絡層循環,只不過對m層有效
根據上一層網絡和這一層的稀疏度計算這一層的drop矩陣
對於卷積層,計算相關性的公式:
對於全連接層,計算相關性的公式:
r>0.75(論文中選擇的)設置爲1,其他的爲0(這是我的理解)
根據網絡結構T和上一層的權值初始化這層網絡
while直至全覆蓋:
通過點乘更新drop矩陣
通過前向後向傳播,進行權值更新
end while
end for
輸出:第M次經過dropping後的CNN(即最終的網絡)