1. 程式人生 > >論文學習-系統評估卷積神經網絡各項超參數設計的影響-Systematic evaluation of CNN advances on the ImageNet

論文學習-系統評估卷積神經網絡各項超參數設計的影響-Systematic evaluation of CNN advances on the ImageNet

得出 perf 超參數 epo sin 都是 top 初始化 sys

寫在前面

論文狀態:Published in CVIU Volume 161 Issue C, August 2017
論文地址: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修改而來,有以下幾點不同:

  1. 輸入圖像resize為128(出於速度考慮)
  2. fc6和fc7神經元數量從4096減半為2048
  3. 網絡使用LSUV進行初始化
  4. 移除了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種設計:

  1. 特征提取最後一層為max pooling,分類器為一層或兩層全連接層,如LeNet、AlexNet、VGGNet
  2. 使用spacial pooling代替max pooling,分類器為一層或兩層全連接層
  3. 使用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則不是,對於復雜且高度優化過的網絡,一些改進策略不能簡單推廣

參考

  • paper-Systematic evaluation of CNN advances on the ImageNet
  • github-Systematic evaluation of CNN advances on the ImageNet

論文學習-系統評估卷積神經網絡各項超參數設計的影響-Systematic evaluation of CNN advances on the ImageNet