CondenseNet特色在於可學習分組卷積的提出,結合訓練過程進行剪枝,不只能準確地剪枝,還能繼續訓練,使網絡權重更平滑,是個很不錯的工做
來源:曉飛的算法工程筆記 公衆號git
論文:Neural Architecture Search with Reinforcement Learninggithub
DenseNet基於特徵複用,可以達到很好的性能,可是論文認爲其內在鏈接存在不少冗餘,早期的特徵不須要複用到較後的層。爲此,論文基於可學習分組卷積提出CondenseNet,可以在訓練階段自動稀疏網絡結構,選擇最優的輸入輸出鏈接模式,並在最後將其轉換成常規的分組卷積分組卷積結構。算法
分組卷積可以有效地下降網絡參數,對於稠密的網絡結構而言,能夠將$3\times 3$卷積變爲$3\times 3$分組卷積。然而,若將$1\times 1$卷積變爲$1\times 1$分組卷積,則會形成性能的大幅降低,主要因爲$1\times 1$卷積的輸入通常有其內在的聯繫,而且輸入有較大的多樣性,不能這樣硬性地人爲分組。隨機打亂可以必定程度地緩解性能的下降,但從實驗來看還不如參數較少的DenseNet。
另外,論文認爲稠密鏈接雖然有利於特徵複用,可是存在較大的冗餘性,但很難定義哪一個特徵對當前層是有用的。爲此,論文引入了可學習的分組卷積來解決上述問題。微信
分組卷積的學習包含多個階段,如圖3和圖4所示,前半段訓練過程包含多個condensing階段,結合引導稀疏化的正則化方法來反覆訓練網絡,而後將不重要的filter剪枝。後半部分爲optimization階段,這個階段對剪枝固定後的網絡進行學習。實現細節以下:網絡
將標準卷積進行分組,好比$1\times 1$卷積的核大小爲$O\times R$矩陣$\mathbb{F}$,將該卷積核分爲$G$組,標記爲$\mathbb{F}1,\mathbb{F}2,\cdots,\mathbb{F}G$,每一個$\mathbb{F}g$大小爲$\frac{O}{G}\times R$,$\mathbb{F}_{i,j}^g$表明$g$組內處理$i$輸入和$j$輸出的卷積核,注意這裏沒有對輸入進行對應的分組。性能
在訓練的過程逐步剔除每一個組中權重較低的輸入特徵子集,$i$輸入特徵對於$g$組的重要程度經過求和組內全部對應的權值得到${\sum}{i=1}^{O/G} |\mathbb{F}{i,j}g|$,將$\mathbb{F}g$中重要程度較小的輸入特徵對應的列置爲零,從而將卷積層稀疏化。學習
通常而言,爲了減小剪枝帶來的準確率影響,能夠經過使用L1正則方法引導權值儘可能稀疏。因爲分組卷積的特性,CondenseNets須要更嚴格的列稀疏來引導組內的卷積儘可能使用相同的輸入子集,所以採用group級別的稀疏性,論文提出group-lasso正則化:測試
根號內的項由列中最大的元素主宰,group-lasso可以引導稀疏的$F^g$列趨向徹底爲0。設計
可學習分組卷積不只可以自動發現最優的輸入輸出鏈接模式,並且更靈活。組內使用的輸入特徵數不必定爲$\frac{1}{G}$倍,而是根據定義condensation factor $C$(不必定等於$G$),容許每組選擇$\lfloor \frac{R}{C} \rfloor$個輸入。3d
CondenseNet的剪枝在訓練過程當中進行,如圖3所示,在每一個$C-1$condensing階段,會剪除$\frac{1}{C}$權重,在訓練的最後,僅保留每一個卷積組內的$\frac{1}{C}$權重。每一個condensing階段的訓練週期設爲$\frac{M}{2(C-1)}$,$M$爲總的訓練週期,全部condensing階段共佔訓練的一半。
須要注意,訓練階段並無真正地將權重去除,而是使用二值tensor做爲掩膜進行element-wise相乘,這樣的實如今GPU上還是高效的,不會帶來太多額外的耗時。
訓練使用cosine學習率退火,訓練過程如圖4所示,中間的損失忽然上升是因爲最後的condensing階段後剪枝了一半的權重(最後的condensing階段內僅$\frac{2}{C}$權重)致使的,但從圖中能夠看出,訓練很快就恢復了。
在訓練後,須要去除剪枝的權重轉換爲常規的網絡結構,這樣不只可以下降網絡參數,還能保證在計算能耗有限的設備上高效運行。爲此CondenseNet在發佈時須要加入Index層,該層的原理如圖3最右所示,根據剪枝後的剩餘權重對輸入特徵進行重排,將可學習分組卷積的剩餘權重轉換成分組卷積,訓練階段到測試階段的轉換如圖1。
須要注意,論文對$1\times 1$分組卷積的輸出進行了重排,這樣作的緣由是爲了讓後面的分組卷積可以地使用到前面分組卷積提取的屬性。
除了可學習分組卷積,論文還對原來的DenseNet結構進行了修改,如圖5所示,共包含兩點修改:
驗證論文提出的改進方法的效果。
CIFAR-10上的輕量級網絡性能對比。
CIFAR-10和CIFAR-100上的剪枝SOTA網絡性能對比。
ImageNet上的輕量級網絡性能對比。
ImageNet上的SOTA網絡推理耗時對比。
對不一樣超參進行了對比實驗。
CondenseNet特色在於可學習分組卷積的提出,總體的結構設計十分巧妙。以往的剪枝工做都是在網絡訓練後進行的,致使精度有較大的降低,而可學習分組卷積結合訓練過程進行剪枝,不只能準確地剪枝,還能繼續訓練,使網絡權重更平滑,是個很不錯的工做。
若是本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】