ImageNet Classification with Deep Convolutional Neural Networks
Authors : Alex Krizhevsky, Ilya Sutskever, Geoffrey.E.Hinton
Publication:Communications of the ACM May 2017 https://doi.org/10.1145/3065386
摘要
作者在LSVRC(Large scale visual recognition challenge)2010比賽中通過包含在1000個類別的120萬張高像素圖片數據集中訓練,在測試集得到了37.5%的Top-1錯誤率和17.0%的Top-5錯誤率。
本文的創新主要體現在爲避免過擬合,採用了一種當前正在發展的正則化方法——“dropout”。
To reduce overfitting in the fully-connected layers we employed a recently-developed regularization method called “dropout” that proved to be very effective.
在2012年的LSVRC競賽中它們使用了該模型的變體,得到了15.3%的Top-5錯誤率和26.2%的Top-1錯誤率,大幅領先第二名的模型。
We also entered a variant of this model in the ILSVRC-2012 competition and achieved a winning top-5 test error rate of 15.3%, compared to 26.2% achieved by the second-best entry.
1. 介紹
介紹了圖像識別領域在此之前的兩個問題:
- 標註的圖像數據集相對較小,大部分只有幾萬張圖片。
- 對於大型模型和高清圖片算力不足,幾乎無法訓練。
當前面臨的問題都出現了轉機:
- 出現了像ImageNet和LabelMe,此類包含上百萬張標註圖片的數據集。
- CNN的出現大幅減小了模型複雜度和模型的訓練參數,而算法表現毫不遜色傳統MLP模型。
- 當前的GPU和高度優化的2D卷積計算搭配,大型CNN模型的訓練已經是可行的。
本文貢獻主要有:
- 訓練了當前最大的CNN用於LSVRC2010和2012競賽,結果大幅領先之前最優的模型。
- 編寫了高度優化的2D卷積實現在GPU上的運算並公之於衆。
- 引入一系列新穎的技巧改善模型表現和訓練速度,在第3部分詳細介紹。
- 使用多種有效手段防止過擬合,在第4部分詳細介紹。
- 最終模型包含5個卷積層,3個全連接層。模型深度十分重要,哪怕減少一個卷積層都會導致模型結果不佳。
最後,阻止作者進一步加深網絡深度的主要原因是GPU的顯存大小和訓練時間。作者使用兩塊GTX 580 3GB顯卡花費5-6天才完成模型訓練。這一問題隨着GPU的發展有望解決。
2. 數據集
ImageNet是一個包含1500萬張圖片(分屬22000個類別)的大型圖像數據集。這個數據集通過網絡收集並通過Amazon Mechanical Turk這一衆包市場進行人工標註。從2010年起,抽取1000個類別的1000張圖片,共計120萬張圖片子數據集用於ILSVRC競賽。
主辦方僅在ILSVRC-2010提供了測試集標籤,本文的大部分實驗都基於ILSVRC-2010數據集。ILSVRC競賽主要報告兩個錯誤率,Top1和Top5。Top5表示真實標籤不在模型預測的前5個標籤中的概率。
ImageNet的圖片分辨率是變化的,該模型使用固定的輸入。因此作者使用下采樣的方式將所有圖片轉化爲的標準圖片。除以對每個像素減去訓練集中的平均值,作者並未對圖片做其他預處理。它們在原始的居中RGB值上訓練網絡。
3.模型結構
本文的模型由圖2所示(上圖),有8個可訓練層:5個卷積層和3個全連接層。下面介紹一些新穎的網絡結構特徵。3.1-3.4的排列是作者對這些特徵重要性的估計,最重要的最先寫。
3.1 ReLu 非線性函數
就梯度下降的訓練時間而言,未飽和的ReLu非線性函數比飽和的tanh和sigmoid非線性函數要快得多。這在圖一中得到證明。就像圖表顯示的如果使用tanh這種函數如此大的神經網絡是無法訓練的。
作者並非第一個想到替換傳統神經元的人,Jarret等人使用在Caltech-101數據集的平均池化層進行歸一化得到了很好的效果。但是這種做法主要是爲了避免過擬合,而ReLu是用於提升訓練速度,更快的學習速度對大型數據集在大型模型的性能提升至關重要。
3.2 使用多個GPU訓練
單個GTX 580 GPU無法完成訓練。作者將網絡分佈在兩個GPU上。當前的GPU能夠直接讀寫彼此內存而無需通過主機內存。作者的方案是將每層一半的卷積核放在單個GPU上。
此外還有一個技巧:GPU僅在某些層彼此通信。例如第3層卷積核從全部第2層的卷積核映射結果中獲取輸入。但第4層的卷積核僅從第3層中駐留在同一GPU上的那些卷積映射中獲取輸入。這樣能夠更精確地調整通信量,直到它的計算量可接受爲止。
相比於將卷積核數量減少一半,並行GPU運算將TOP1和TOP5錯誤率降低了1.7%和1.2%。
3.3 局部響應歸一化
ReLU具有無需輸入歸一化即可防止飽和優秀特性。 但作者發現對輸入進行局部歸一化依然能有效提升模型的泛化能力。表示使用卷積核i在點(x,y)處的神經元激活值,這個值之後會代入ReLU非線性函數中,響應歸一化激活值由下式給出。
相同空間位置上遍歷n個“相鄰”卷積核映射結構,N是該層中卷積核總數。 卷積核映射的順序是任意的,在訓練開始之前確定。 常數是超參數,其值是使用驗證集確定的; 作者使用。 在某些層中應用ReLU非線性之前我們應用了此歸一化(請參見第3.5節)。
3.4 重疊池化
通常來說,池化的步長和池化單元的寬度一致。如果的池化單元其步長就會出現重疊池化的結果。作者採用的重疊池化,相比的傳統池化。TOP1和TOP5分別下降了0.4%和0.3%。
3.5 整體結構
模型結構:初始5個卷積層跟3個全連接層,最後一個全連接層作爲輸出層,其1000個的softmax產生1000個類別標籤。模型最大化正確樣本的logP分佈。
第二、四、五個卷積層只使用同一個GPU的卷積結果作爲輸入,第三個卷積層使用全部卷積結果作爲輸入。局部歸一化層位於第一和第二個卷積層之後,3.4所描述的最大池化層位於局部歸一化層和第五個卷積層之後。ReLU非線性函數應用於所有卷積和全連接層的輸出。
第一卷積層使用96個11×11×3卷積核過濾224×224×3的輸入圖片,步長爲4。第二個卷積層將第一個卷積層的(響應歸一化和池化後)輸出作爲輸入,並使用256個5×5×48的卷積覈對其進行過濾。第三,第四和第五卷積層彼此連接而沒有任何中間池化或歸一化層。第三卷積層具有384個3×3×256的卷積核,這些卷積核與第二卷積層的(標準化,池化)輸出連接。第四卷積層具有384個3×3×192大小的卷積核,第五卷積層具有256個3×3×192的卷積核。每個全連接層有4096個神經元。
4. 減少過擬合
介紹兩種減少過擬合的方法
4.1 數據增強
使用標籤保護的轉化擴大數據集以避免過擬合,且這種轉化是通過CPU完成無須存在磁盤上,也不影響GPU中的模型訓練。
第一種數據增強的方式圖像平移加水平映射。從256256的圖片在提取224224的色塊(及其映射)這將整個訓練集擴大2048倍,儘管生成的子圖高度依賴,沒有這種方案模型將嚴重過擬合。測試時,網絡通過提取5個224*224色塊(四角和中心)及其水平映射(共10個色塊)進行預測,結果取softmax層輸出的平均值。
數據增強的第二種形式包括更改訓練圖像中RGB通道的強度。作者在整個ImageNet訓練集中對RGB像素值集執行PCA。訓練樣本的每個像素加一個附加值,該附加值爲主成分特徵向量乘以特徵值和一個均值0方差0.1高斯分佈產生的隨機數:
該方案近似地捕獲了自然圖像的重要屬性,對象標籤對於圖片亮度和顏色變化是不變的。 此方案將top-1錯誤率降低了1%以上。
4.2 dropout
每次按一定概率使某層中的部分神經元不參與訓練,這是一種代價極小的bagging方式。可以生成指數多個子模型。沒有dropout,網絡會出現極大的過擬合。Dropout也時收斂所需迭代次數增加了一倍。
5. 訓練的細節
使用小批量(128)隨機梯度下降。動量0.9,0.0005的權重衰減。我們發現少量的權重衰減至關重要,不只是正則化它也減小了模型的訓練誤差,參數更新原則如下:
權重通過均值0方差0.01的高斯分佈初始化,二、四、五卷積層和所有全連接層的偏置設爲1,其餘層設爲0。
每層學習率相同,驗證錯誤率在當前學習率下不再降低,將學習率除以10。 學習率初始化爲0.01,終止之前降低三次。 我們通過120萬張圖像的訓練集對網絡進行了大約90個週期的訓練,在兩個NVIDIA GTX 580 3GB GPU上花了五到六天的時間。
6. 實驗結果
作者所使用的模型在ILSVRC-2010的數據集取得的結果如下圖第三行所示:
- 第一個對比模型是2010表現最好的模型。
- 第二個對比模型是在作者論文發表前已發佈的模型中表現最好的。
作者攜本文所述模型參加了ILSVRC-2012競賽,取得的結果如下圖所示。
具體圖片實例展示: