CondenseNet:可學習分組卷積,原作對DenseNet的輕量化改造 | CVPR 2018

CondenseNet特點在于可學習分組卷積的提出,結合訓練過程進行剪枝,不僅能準確地剪枝,還能繼續訓練,使網絡權重更平滑,是個很不錯的工作
?
來源:曉飛的算法工程筆記 公眾號

論文:Neural Architecture Search with Reinforcement Learning

Introduction


? DenseNet基于特征復用,能夠達到很好的性能,但是論文認為其內在連接存在很多冗余,早期的特征不需要復用到較后的層。為此,論文基于可學習分組卷積提出CondenseNet,能夠在訓練階段自動稀疏網絡結構,選擇最優的輸入輸出連接模式,并在最后將其轉換成常規的分組卷積分組卷積結構。

CondenseNets


? 分組卷積能夠有效地降低網絡參數,對于稠密的網絡結構而言,可以將$3\times 3$卷積變為$3\times 3$分組卷積。然而,若將$1\times 1$卷積變為$1\times 1$分組卷積,則會造成性能的大幅下降,主要由于$1\times 1$卷積的輸入一般有其內在的聯系,并且輸入有較大的多樣性,不能這樣硬性地人為分組。隨機打亂能夠一定程度地緩解性能的降低,但從實驗來看還不如參數較少的DenseNet。
? 另外,論文認為稠密連接雖然有利于特征復用,但是存在較大的冗余性,但很難定義哪個特征對當前層是有用的。為此,論文引入了可學習的分組卷積來解決上述問題。

  • Learned Group Convolution

? 分組卷積的學習包含多個階段,如圖3和圖4所示,前半段訓練過程包含多個condensing階段,結合引導稀疏化的正則化方法來反復訓練網絡,然后將不重要的filter剪枝。后半部分為optimization階段,這個階段對剪枝固定后的網絡進行學習。實現細節如下:

  1. Filter Groups,卷積分組

? 將標準卷積進行分組,比如$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$輸出的卷積核,注意這里沒有對輸入進行對應的分組。

  1. Condensation Criterion,壓縮標準

? 在訓練的過程逐步剔除每個組中權重較低的輸入特征子集,$i$輸入特征對于$g$組的重要程度通過求和組內所有對應的權值獲得${\sum}{i=1}^{O/G} |\mathbb{F}{i,j}g|$,將$\mathbb{F}g$中重要程度較小的輸入特征對應的列置為零,從而將卷積層稀疏化。

  1. Group Lasso

? 一般而言,為了減少剪枝帶來的準確率影響,可以通過使用L1正則方法引導權值盡量稀疏。由于分組卷積的特性,CondenseNets需要更嚴格的列稀疏來引導組內的卷積盡量使用相同的輸入子集,因此采用group級別的稀疏性,論文提出group-lasso正則化:

? 根號內的項由列中最大的元素主宰,group-lasso能夠引導稀疏的$F^g$列趨向完全為0。

  1. Condensation Factor

? 可學習分組卷積不僅能夠自動發現最優的輸入輸出連接模式,而且更靈活。組內使用的輸入特征數不一定為$\frac{1}{G}$倍,而是根據定義condensation factor $C$(不一定等于$G$),允許每組選擇$\lfloor \frac{R}{C} \rfloor$個輸入。

  1. Condensation Procedure

? CondenseNet的剪枝在訓練過程中進行,如圖3所示,在每個$C-1$condensing階段,會剪除$\frac{1}{C}$權重,在訓練的最后,僅保留每個卷積組內的$\frac{1}{C}$權重。每個condensing階段的訓練周期設為$\frac{M}{2(C-1)}$,$M$為總的訓練周期,所有condensing階段共占訓練的一半。
? 需要注意,訓練階段并沒有真正地將權重去除,而是使用二值tensor作為掩膜進行element-wise相乘,這樣的實現在GPU上仍是高效的,不會帶來太多額外的耗時。

  1. Learning rate

? 訓練使用cosine學習率退火,訓練過程如圖4所示,中間的損失突然上升是由于最后的condensing階段后剪枝了一半的權重(最后的condensing階段內僅$\frac{2}{C}$權重)導致的,但從圖中可以看出,訓練很快就恢復了。

  1. Index Layer

? 在訓練后,需要去除剪枝的權重轉換為常規的網絡結構,這樣不僅能夠降低網絡參數,還能保證在計算能耗有限的設備上高效運行。為此CondenseNet在發布時需要加入Index層,該層的原理如圖3最右所示,根據剪枝后的剩余權重對輸入特征進行重排,將可學習分組卷積的剩余權重轉換成分組卷積,訓練階段到測試階段的轉換如圖1。
? 需要注意,論文對$1\times 1$分組卷積的輸出進行了重排,這樣做的原因是為了讓后面的分組卷積能夠地使用到前面分組卷積提取的屬性。

Architecture Design

? 除了可學習分組卷積,論文還對原來的DenseNet結構進行了修改,如圖5所示,共包含兩點修改:

  • Exponentially increasing growth rate(IGR),Densenet每層增加$k$個新的特征圖,$k$稱為增長率。而論文發現越深的層實際更依賴較高維的特征,因此需要增強與當前層較近的特征連接,通過逐漸增加增長率來實現。設置增長率為$k=2^{m-1}k_0$,$m$為dense block下標,$k_0$為常數,這樣能夠增加較后層輸出的特征的占比。
  • Fully dense connectivity(FDC),為了更多的特征重用,將所有的層進行了連接,并為不同的層提供了不同的下采樣操作。

Experiments

? 驗證論文提出的改進方法的效果。

? CIFAR-10上的輕量級網絡性能對比。

? CIFAR-10和CIFAR-100上的剪枝SOTA網絡性能對比。

? ImageNet上的輕量級網絡性能對比。

? ImageNet上的SOTA網絡推理耗時對比。

? 對不同超參進行了對比實驗。

CONCLUSION


? CondenseNet特點在于可學習分組卷積的提出,整體的結構設計十分巧妙。以往的剪枝工作都是在網絡訓練后進行的,導致精度有較大的下降,而可學習分組卷積結合訓練過程進行剪枝,不僅能準確地剪枝,還能繼續訓練,使網絡權重更平滑,是個很不錯的工作。

?
?
?

如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

work-life balance.

posted @ 2020-07-17 17:58  曉飛的算法工程筆記  閱讀(...)  評論(...編輯  收藏
最新chease0ldman老人