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


博客:blog.shinelee.me | 博客園 | CSDN

寫在前面

論文狀態: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數據集大小數據集質量等等,具體見下圖

Table 1: List of hyper-parameters tested

實驗所用的基礎架構(Baseline)從CaffeNet修改而來,有以下幾點不同:

  1. 輸入圖像resize為128(出於速度考慮)
  2. fc6和fc7神經元數量從4096減半為2048
  3. 網絡使用LSUV進行初始化
  4. 移除了LRN層(對准確率無貢獻,出於速度考慮移除)

所有性能比較均以基礎架構為Baseline,實驗中所有超參數調整也都是在Baseline上進行,Baseline accuracy為47.1%,Baseline網絡結構如下

Baseline Network

論文實驗結論

論文通過控制變量的方式進行實驗,最后給出了如下建議:

  • 不加 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上有更多實驗結果:
Results of all tests on ImageNet-128px

論文細節

一圖勝千言,本節主要來自論文圖表。

激活函數

Activation functions

在計算復雜度與ReLU相當的情況下,ELU的單一表現最好,ELU(卷積后)+maxout(全連接后)聯合表現最好,前者提升約2個百分點,后者約4個百分點。值得注意的是,不使用非線性激活函數時,性能down了約8個百分點,並非完全不能用。

池化

Pooling

方法上,max和average池化結合取得最好效果(結合方式為 element-wise 相加),作者推測是因為同時具備了max的選擇性和average沒有扔掉信息的性質。尺寸上,在保證輸出尺寸一樣的情況下,non-overlapping優於overlapping——前者的kernel size更大

學習率

Learning rate policy
Learning rate policy

linear decay取得最優效果

BatchSize與學習率

Batch size and initial learning rate impact to the accuracy

文章中僅實驗了固定學習調整BatchSize以及學習率與Batch Size同比增減兩個實驗,在整個訓練過程中Batch Size保持不變,得出了 學習率與Batch Size同比增減 策略是有效的結論。

圖像預處理

learned colorspace transformations

performance of using various colorspaces and pre-processing

灰度及其他顏色空間均比RGB差,通過兩層1x1卷積層將RGB圖映射為新的3通道圖取得了最好效果

BN層

batch normalization

Top-1 accuracy gain over ReLU without BN

Sigmoid + BN 好於 ReLU無BN,當然,ReLU+BN更好。

分類器設計

Classier design

若將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取得了最好效果。

網絡寬度

Network width impact on the accuracy

對文章采用的基礎網絡,增大網絡寬度,性能會提升,但增大超過3倍后帶來的提升就十分有限了,即對某個特定的任務和網絡架構,存在某個適宜的網絡寬度。

輸入圖像大小

Input image size impact on the accuracy

准確率隨圖像尺寸線性增長,但計算量是平方增長。如果不能提高輸入圖像的大小,減小隱藏層的stride有近似相同的效果。

Dataset size and noisy labels

Training dataset size and cleanliness impact on the accuracy

增大數據集可以改善性能,數據清理也可改善性能,但數據清理比數據集大小更重要,為了獲得同樣的性能,有錯誤標簽的數據集需要更大。

Bias有無的影響

Influence of the bias

卷積層和全連接層無Bias比有Bias降了2.6個百分點。

改善項匯總

將 學到的顏色空間變換、ELU作為卷積層激活函數、maxout作為全連接層激活函數、linear decay學習率策略、average+max池化 結合使用,在CaffeNet、VGGNet、GoogLeNet上對比實驗,如下:

Best-of-all experiments

CaffeNet和VGGNet的表現均得以改善,GoogLeNet則不是,對於復雜且高度優化過的網絡,一些改進策略不能簡單推廣

參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM