RePr: Improved Training of Convolutional Filters_CVPR2019

 

URL: https://arxiv.org/abs/1811.07275

TL;DR

卷積產生的特徵中存在不必要的重疊導致網絡冗餘,因此現有的模型修剪方法可以修剪掉大量的卷積濾波器而幾乎不影響模型的準確率。因此,作者認爲這是傳統訓練方法不夠完善導致的,於是提出了一種新的模型訓練方法。

Method

這篇論文的兩個貢獻:
1)作者提出一種新的訓練流程:
首先經過一定數量迭代的標準訓練,然後選擇模型的一個filter子集臨時drop,繼續在對剩餘網絡經過一段時間的額外訓練之後,重新引入原先drop的filters,利用新的權重進行初始化,繼續對整個模型進行標準訓練。作者發現隨着重新引入原先drop的fitlers,模型可以獲得比drop之前更高的準確率。重複這個過程,可以獲得比傳統方法更好的訓練效果。
2)在實驗中發現filter修剪方法中使用的永久修剪指標並不適合本文所設計的訓練方法,於是提出了一種新的替代指標,可以較好地提高模型的表現。

作者發現,即使很小的、參數不足的模型,也會學習到冗餘的卷積核,這表明濾波器冗餘不僅僅是模型過參數化的結果,同時也和低效的訓練方式有關。於是這篇論文的目標是減少濾波器的冗餘,提高卷積網絡的表達能力。
如果一個模型的特徵之間是相互正交的,它們會在激活值空間上捕獲不同的方向,帶來更優的泛化能力. 因此可以通過分析跨層特徵之間的相關性來計算出最具表現力濾波器並把它們聚類到不同的組中,只是這種方法的缺點是對於實際應用中所用的較深網絡,方法的計算複雜度過高。我們的方法利用drop filters的方式充當隱式正則化,並且在不妨礙模型收斂的情況下導致模型更好的正交性。

爲了測試標準訓練過程的效果,作者構造了一個簡單的只包含兩層卷積層的網絡,做了如下兩個實驗:
1)通過移除每一個filter後模型的準確度下降程度來評估各個filter的重要性,得到統計結果如圖2(右)所示。證明了即使是小型、未過參數化的網絡也可以修剪filters,且不會帶來較大的精度損失,即也存在冗餘,進一步來證明冗餘由低效的訓練過程導致。(但筆者覺得作者此處的結論不夠嚴謹,單獨修剪一個filters已經能帶來1%-5%損失,同時修剪多個則損失更大)
2)同時這篇文章採用典型相關分析(CCA)來分析特徵之間的重疊,作者分析了每層網絡所產生的特徵圖之間的相關性,如圖2(左)所示。表明兩層網絡所產生的特徵圖均存在顯著相關,且第二層特徵圖有着比第一層更多的重疊。表明標準的訓練過程並沒有最大化模型的表示能力。

另外,作者定義了新的filter評價指標,對每一層的各個filter重要性進行排序。作者將每一層的weights展開成一個二維矩陣,每一行是該層每個filters權重的一維展開。然後定義了每一個filter的正交性度量標準如下:

P的非對角線元素表示用filter f表示其他filter的投影,當其他filters均與該filter正交時,該行元素最小之和最小。本文根據這個行元素和來對各個filter的重要性進行排序。同時爲了避免搜索每一層的修剪量這一超參數,作者對整個網絡的filter重要性進行統一排序。最終實驗發現,越深的層filter修剪量越高,這與圖2(右)中給定網絡中filters的貢獻分佈一致。

於是,所提出的Repr訓練流程如下:

Experiments

作者首先將所設計的訓練流程和相似的方法如BAN和DSD進行了比較:

然後,在cifar10和cifar100上對多類模型進行了訓練:

接着在imagenet和VQAv1上做了實驗:

 

Thoughts

這篇文章作者研究了很多現有的各種模型修剪論文,發現了網絡中存在冗餘是由標準訓練方法的低效性導致的,於是便從這個角度出發,利用模型壓縮的思想來優化傳統的訓練方法,提出了一種效果更好的訓練方式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章