AlexNet 架構概述

論文重要貢獻:證明CNN層數加深能帶來更好的結果。

Fig 1. Depth improves result (source)

訓練資料:

ImageNet是繼早期小型(例如MNIST)後的大型影響辨識Dataset,包含超過1500萬張有正確標記的影像,包含類別超過22,000種。

ImageNet Large Scale Visual Recognition Challenge (ILS-VRC) 挑選出ImageNet當中一小部分的影像做為競賽的訓練樣本。共有1000種類別、每種類別有1000張左右的影像,總計Training Set約120萬張、Validation Set 5萬張、Testing Set 1.5萬張。

每張照片解析度不一,但AlexNet只接受單一輸入尺寸。Preprocess的方式是將所有照片都裁到256×256。長方形的照片,rescale短邊到256像素,接著自照片中心左右延伸到足256,多餘的做cropping。

CNN 架構 (Section 3):

3.1 Activation Function 使用 Rectified Linear Units (ReLU)

Fig 3. Gradient direction (source)

一階微分趨近於零,導致更新速度慢。層數越深的模型越不適用。因此AlexNet採用非線性的activation function 來加速收斂。文章中示範使用ReLU(實線)以及Tanh(虛線)的收斂速度,同樣達到25%錯誤率所需時間,非線性的ReLU快上8倍。

更快速地收斂意味:能使用更大型的神經網路架構。

線性飽和函數(如Sigmoid, Tanh) 還有一個缺點是對於該層輸入的數值最好要先正規化,否則當逐層累積後輸入數據可能會變得很大,導致activation function的輸出變動不明顯,非線性的性質被削弱。而ReLU則沒有這種問題。

論文第四頁提到:

ReLUs have the desirable property that they do not require intput normalization to prevent them from saturating.

If at least some training examples produce a positive input to a ReLU, learning will happen in that neuron.

可以看出ReLU的潛在問題。一般實務上,hidden layer的activation function 都是使用ReLU,Output layer 在Regression problem 若確定輸出必大於零,可以用ReLU,但較常使用Linear;Classification problem通常選Softmax。

3.2 使用雙GPU分攤計算

單張Nvidia GTX 580的內存是3GB,沒辦法容納120萬張訓練影像。拆到兩張卡用SLI技術串流平行計算。

3.3 Local Response Normalization (LRN)

論文作者表示,雖然ReLU函數對於很大的輸入x,仍然可以有效的學習,但是他們發現即使這樣,對數據進行正規化對於學習來說還是有幫助的。使用LRN來訓練他們的網絡,在ImageNet上top-1和top-5的錯誤率分別下降了1.4%、1.2%。

We also verified the effectiveness of this scheme on the CIFAR-10 dataset: a four-layer CNN achieved a 13% test error rate without normalization and 11% with normalization.

AlexNet每層ReLU後都接一層LRN,Node a 在位置(x, y)上的輸出先透過正規化函式,以b 的值輸入下一層。有閱讀到近期的論文指出LRN對於降低誤判率沒有幫助,實際的LRN效用有待驗證。

3.4 Overlapping Pooling

Pooling層一般用於降低維度,對N x N的區域內取平均或取最大值,作為這一個小區域內的特徵,傳遞到下一層。傳統的Pooling層彼此間不重疊,AlexNet提出使Pooling層重疊可以降低錯誤率,而且對防止過擬合有一定的效果。

使Pooling層重疊,可以降低原始input在深層Convolution的損失,所以錯誤率會下降。但是對防止overfitting的效果,文章也說slightly,實際影響須進一步查證。

3.5 Overall Architecture

共八層:前面五層為convolution layer、後三層為fully-connected layer。

Fig 2. AlexNet structure (source)

避免Overfitting (Section 4):

4.1 Data Augmentation

The first form of data augmentation consists of generating image translations and horizontal reflections.

Without this scheme, our network suffers from substantial overfitting.

原始輸入影像尺寸是 256 x 256,從中隨機裁切 224 x 224 的影像出來,可以將原始training set放大1024倍,接著對所有影像做鏡射再放大兩倍,可得出論文的2048倍。縱使增生的影像彼此間高度關聯,但此方法仍有效提升網路的generalization 能力。

在進行預測時,從輸入影像萃取5塊尺寸為 224 x 224 的patch:從四個角落+ 原影像中心點,五張patch 在鏡射放大兩倍,使用共10張圖的預測結果取Softmax得出最終預測。

We perform PCA on the set of RGB pixel values throughout the ImageNet training set. To each training image, we add multiples of the found principal components, …

另一種data augmentation的方式是對影像進行主成份分析 Principle Component Analysis (PCA),找出整個training set 中RGB像素值的主成分,然後在每次訓練的圖片像素中加上一定隨機成分。此方法讓 top-1 錯誤率下降1%。

4.2 Dropout

AlexNet在第一&二的fully connected layer加入dropout。每次forward propagation的時候fully connected layer之前層的每個神經元會以一定的機率不參與forward,而backward propagation的時候這些單元也不參與。這種方式使得網絡強制以部分神經元來表示當前的圖片,很大限度上降低過擬合。AlexNet的dropout rate是0.5,也就是每個神經元有50%的機率不參與下一層的傳遞。

下方是我看過目前講的最清楚,解釋Backward propagation如何計算的教學影片。

Dropout 造成的影響是 training performance下降,可有效的減少overfitting帶來的問題。在做預測 testing 階段不做Dropout。

投影片來源:張鈞閔、許之凡 深度學習實務

Source: Deep Learning on Medium