論文學習-系統評估卷積神經網路各項超引數設計的影響-Systematic evaluation of CNN advances on ...
寫在前面
論文狀態:Published in CVIU Volume 161 Issue C, August 2017
論文地址: ofollow,noindex" target="_blank">https://arxiv.org/abs/1606.02228
github地址: https://github.com/ducha-aiki/caffenet-benchmark
在這篇文章中,作者在ImageNet上做了大量實驗, 對比卷積神經網路架構中各項超引數選擇的影響,對如何優化網路效能很有啟發意義 ,對比實驗包括 啟用函式 (sigmoid、ReLU、ELU、maxout等等)、 Batch Normalization (BN) 、 池化方法與視窗大小 (max、average、stochastic等)、 學習率decay策略 (step, square, square root, linear 等)、輸入影象顏色空間與預處理、分類器設計、網路寬度、 Batch size 、 資料集大小 、 資料集質量 等等,具體見下圖
實驗時所有的網路都是在ImageNet網路上訓練得到,分1000類,訓練集1.2M,驗證集50K,測試集100K。實驗所用的基礎架構(Baseline)從CaffeNet修改而來,有以下幾點不同:
- 輸入影象resize為128(出於速度考慮)
- fc6和fc7神經元數量從4096減半為2048
- 網路使用 LSUV 進行初始化
- 移除了LRN層(對準確率無貢獻,出於速度考慮移除)
所有效能比較均以基礎架構為Baseline,Baseline accuracy為47.1%,Baseline網路結構如下
論文實驗結論
論文通過 控制變數 的方式進行實驗,最後給出瞭如下建議:
- 不加 BN時使用 ELU,加BN時使用ReLU (加BN時,兩者其實差不多)
- 對輸入RGB圖學習一個顏色空間變換,再接網路
- 使用linear decay學習策略
- 池化層將average與max求和
- BatchSize使用128或者256,如果GPU記憶體不夠大,在調小BatchSize的同時同比減小學習率
- 用卷積替換全連線層,在最後決策時對輸出取平均
- 當決定要擴大訓練集前,先檢視是否到了“平坦區”——即 評估增大資料集能帶來多大收益
- 資料清理比增大資料集更重要
- 如果不能提高輸入影象的大小,減小隱藏層的stride有近似相同的效果
- 如果網路結構複雜且高度優化過,如GoogLeNet,做修改時要小心——即將 上述修改在簡單推廣到複雜網路時不一定有效
需要注意的是,在Batch Size和學習率中,文章僅做了兩個實驗,一個是固定學習調整BatchSize,另一個學習率與Batch Size同比增減,但兩者在整個訓練過程中的Batch Size都保持不變,在這個條件下得出了 學習率與Batch Size同比增減 策略是有效的 結論。最近Google有一篇文章 《Don't Decay the Learning Rate, Increase the Batch Size》 提出了在訓練過程中逐步增大Batch Size的策略。
論文實驗量非常大,每項實驗均通過控制變數測試單一或少數因素變化的影響,相當於通過貪心方式一定意義上獲得了每個區域性最優的選擇,最後將所有區域性最優的選擇彙總在一起仍極大地改善了效能(但 不意味著找到了所有組合中的最優選擇 )。實驗結果主要是在CaffeNet(改)上的得出的,並不見得能推廣到所有其他網路。
但是,總的來講,本篇文章做了很多筆者曾經想過但“沒敢”做的實驗,實驗結果還是很有啟發意義的,值得一讀。
文章全部實驗彙總如下, github 上有更多實驗結果:

論文細節
一圖勝千言,本節主要來自論文圖表。
啟用函式
在計算複雜度與ReLU相當的情況下, ELU的單一表現最好,ELU(卷積後)+maxout(全連線後)聯合表現最好 ,前者提升約2個百分點,後者約4個百分點。值得注意的是, 不使用非線性啟用函式時,效能down了約8個百分點,並非完全不能用。
池化
方法上, max和average池化結合取得最好效果 (結合方式為 element-wise 相加),作者推測是因為同時具備了max的選擇性和average沒有扔掉資訊的性質。尺寸上, 在保證輸出尺寸一樣的情況下,non-overlapping優於overlapping——前者的kernel size更大 。
學習率
linear decay取得最優效果。
BatchSize與學習率
文章中僅實驗了固定學習調整BatchSize以及學習率與Batch Size同比增減兩個實驗,在整個訓練過程中Batch Size保持不變,得出了 學習率與Batch Size同比增減 策略是有效的 結論。
影象預處理
灰度及其他顏色空間均比RGB差, 通過兩層1x1卷積層將RGB圖對映為新的3通道圖取得了最好效果 。
BN層
Sigmoid + BN 好於 ReLU無BN,當然,ReLU+BN更好。
分類器設計
若將CNN網路拆成兩個部分,前為特徵提取,後為分類器。分類器部分一般有3種設計:
- 特徵提取最後一層為max pooling,分類器為一層或兩層全連線層 ,如LeNet、AlexNet、VGGNet
- 使用spacial pooling代替max pooling,分類器為一層或兩層全連線層
- 使用average pooling,直接連線softmax,無全連線層 ,如GoogLeNet、ResNet
作者實驗發現,將全連線替換為卷積層(允許zero padding),經過softmax,最後average pooling,即Pool5-C3-C1-CLF-AvePool取得了最好效果。
網路寬度
對文章採用的基礎網路,增大網路寬度,效能會提升,但增大超過3倍後帶來的提升就十分有限了,即對某個特定的任務和網路架構,存在某個適宜的網路寬度。
輸入影象大小
準確率隨影象尺寸線性增長,但計算量是平方增長。如果不能提高輸入影象的大小,減小隱藏層的stride有近似相同的效果。
Dataset size and noisy labels
增大資料集可以改善效能,資料清理也可改善效能,但 資料清理比資料集大小更重要 ,為了獲得同樣的效能,有錯誤標籤的資料集需要更大。
Bias有無的影響
卷積層和全連線層無Bias比有Bias降了2.6個百分點。
改善項彙總
將 學到的顏色空間變換、ELU作為卷積層啟用函式、maxout作為全連線層啟用函式、linear decay學習率策略、average+max池化 結合使用,在CaffeNet、VGGNet、GoogLeNet上對比實驗,如下:
CaffeNet和VGGNet的表現均得以改善,GoogLeNet則不是, 對於複雜且高度優化過的網路,一些改進策略不能簡單推廣 。