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

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

寫在前面

論文狀態: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

實驗時所有的網路都是在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網路結構如下

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則不是,對於複雜且高度優化過的網路,一些改進策略不能簡單推廣

參考