AlexNet: ImageNet Classifications with Deep Convolutional Neural Networks
AlexNet: ImageNet Classifications with Deep Convolutional Neural Networks
Basic Information
- Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton @ University of Toronto
- 2012 NeurIPS
Problem Description
這是一篇將Deep Learning(深度學習)與Convolutional Neural Networks(卷積神經網路,以下簡稱CNN)運用在Computer Vision(計算機視覺)領域的開拓性論文。作者們train了一個Deep Convolutional Neural Network來分類ImageNet ILSVRC-2010資料集中的120萬張高解析度圖像,並得到了相較前人方法顯著優異許多的表現。
Related Works
- Softmax function
- Non-saturating neurons
- "dropout" regularization method
Softmax function
在Fully Connected Layer的最後,使用Softmax function將平坦化後的向量轉成機率分佈。通常會寫成以下形式:
簡單來說就是將一個維的向量壓縮成一個維的機率向量,且所有元素總和為。
Non-saturating neurons
可以將saturate理解成有沒有將值擠壓到一個特定的區間,正式的定義可以寫成這樣:
舉例來說,常用的sigmoid函數會將值擠壓到區間[0, 1]:
因此,他就是一個saturating的activation function。像一樣很常用的Relu函數則沒有被擠壓的上界:
因此就是一個non-saturating的activation function。Dropout
Dropout是用來解決Overfitting問題的一個基本技巧,透過給定一個特定的機率,代表每個Neuron有多大的機率會被"Dropout"。"Dropout"代表無論input是多少,這些Neuron的output永遠都是0。在Backpropagation的過程中,如果前一層的Activation為0,也會導致Gradient是0,使這條Weight無法被更新。因此,如果一個Neuron被"Dropout"的話,可當作是這個Neuron並不存在。
Dropout Layer的運作方式為,每一次的iteration都會重新隨機選擇一部份的Neuron來Dropout,藉此避免Neuron間co-adapting太多的問題,大幅降低overfitting發生的可能。
Methodology
本研究訓練的Deep CNN模型包含了5層的convolutional layers與3層的fully-connected layers,而這樣的深度在處理大量圖像分類是必須的。為了降低成本與訓練時間,作者們使用了一些優化,將分為Dataset, Architecture, Reduce Overfitting與Details of learning四個部份。
Dataset
ImageNet, 包含了超過1500萬張有標注的high-resolution圖像,分為大概22000個類別。這些圖像都是從網路上收集,並以人工標記(Amazon’s Mechanical Turk crowd-sourcing tool)。每年舉辦的ILSVRC會使用ImageNet一個subset,包含大約1000個類別的1000個圖像(120萬 for training, 5萬 for validation, 15萬 for testing)。本研究使用ILSVRC-2010作為資料集,並參加了ILSVRC-2012的競賽。
ImageNet包含了不同解析度的圖像,所以研究者們透過簡單的rescale與裁切的方式,將圖像down-sampled到的解析度。
Architecture
AlexNet的架構如圖所示,包含5層的convolutional layers與3層的fully-connected layers。
作者也將AlexNet的主要features分為四點,以下根據重要性排序:
ReLU Nonlinearity
如同前面Non-saturating neurons所提,一般的模型通常會使用像及等saturating nonlinearity functions。而AlexNet使用這個non-saturating nonlinearity functions(使用這種nonlinearity的Neurons也叫做ReLUs)。
> 這張圖展示了(在CIFAR-10上)在一個4層的CNN上,使用Relu會比使用tanh的Neurons快上6倍。如果使用傳統的saturating neuron,是沒有辦法對這麼大的神經網路進行實驗的(Vanishing Gradient問題),也突顯了non-saturating neurons的重要。
Training on Mulitiple GPUs
單一個GTX 580 GPU只有3GB的記憶體,因此,只使用一個GPU是放不下用120萬個training examples訓練出來的networks的,所以作者們將Network橫跨到兩個GPU上,將各半的Neurons放在各個GPU上,並讓GPU只在特定的layers進行溝通(例如第2,4,5層Convolution layer的Kernel只會連接到前一層中在同一GPU的Kernel),精準調控GPU之間的通訊量。
這樣的作法讓top-1跟top-5 error rates分別下降了1.7%和1.2%。相較於單個GPU,在訓練時間上也有些微的縮短。
Info
雖說以現在GPU的發展,一個GPU就放得下了,應該可以不用做這件事情,但如果是為了平行運算的效能優化就不一定了XD
Local Response Normalization
作者們也使用了以下的normalization技巧:
其中為經過位置在的kernel ,經過ReLU nonlinearity的activity,則是做完normalization的值。 是該層的總kernel數, 而則為與之相鄰的kernel數。 而為hyper-parameters,經過調整後為。
Local response normalization(LRN)實現了一種側抑制的形式,透過相鄰的Neurons間的相互抑制來減少雜訊,提昇training的效度。 這樣的normalization方式分別讓top-1 與 top-5 error rates減少了1.4%與1.2%。
Info
LRN的概念在後來就很少被使用了,比較常被Batch Normalization(BN)取代,甚至後來Brock等人提出說在殘差神經網路(ResNet)中可以不做normalization。
Overlapping Pooling
傳統上的General Pooling為Non-overlapping pooling,但在AlexNet中使用Overlapping pooling。
代表pooling units間的間隔(每個 pixels做一次pooling),則代表每次做pooling的大小(的大小)。 如果讓,則是傳統的Non-overlapping pooling。 如果讓,則是Overlapping pooling。
AlexNet選擇讓,相較於,在top-1跟top-5 error rates上,分別下降了0.4%跟0.3%。且作者們也發現,使用Overlapping Pooling的models較不容易發生Overfitting的情形。
Reduce Overfitting
雖說ILSVRC的圖像有1000個類別,但AlexNet具有6000萬個parameters,容易導致嚴重的Overfitting。因此,作者透過以下幾種方法來避免Overfitting:
- Data Augmentation
- Dropout
Data Augmentation
以下採用兩種形式的data augmentation:
- Image extraction and reflection.
- Altering RGB intensities.
Image extraction and reflection
首先從的圖像中隨機提取的patches(跟他們的horizontal reflections),並直接在這些patches上訓練。而在測試時,抽出其中5個patches(四個角落和中間)以及他們的horizontal reflections(加起來共10個),並將softmax layer做出的預測進行平均。
Altering RGB intensities
簡單來說,就是對於每個pixel的RGB值進行PCA降維。 對於每個RGB image pixel
加上
其中與分別為RGB pixel的 Covariance Matrix的第i個eigenvector與eigenvalue。 則為隨機變量,對於特定image的每個pixel來說,只會被提取一次
上述的作法其實捕捉了自然圖像的一個重要性質,就是物件的identity對於顏色的照度與強度是不變的(就是說將一張狗的圖片變換顏色與亮度,他也不會變成貓)。這樣的作法成功讓top-1 error rate降低了超過1%。
Dropout
AlexNet在Fully Connected layer的前兩層使用了名為Dropout的技巧。就如同上面所提,AlexNet將Dropout的機率,代表每個Neuron每次有的機率被Dropout,造成每次iterate,Neural Network都會有不同的架構。因為Dropout減少了Neurons間的co-adaptations,促使Neurons去學習更加robust的features。雖說Dropout大致會將iteration的數量加倍,但他也大幅降低了Overfitting的發生。
Details of learning
AlexNet使用Stochastic Gradient Descent(SGD)來尋找參數,batch size為128, momentum為0.9
其中是指第幾次iteration,是momentum variable,代表的是在第的batch 上的平均。
初始權重的部份,使用標準差是,平均是的高斯分佈來初始化每一層的權重,並將第2, 4, 5層Convolution layers與Fully Connected layers的bias都初始化為,剩下的bias都初始化為。 而每一層的learning rate都是一樣的,初始值都為,且當validation error rate停滯時就將learning rate除以10(其實我也不知道為什麼,但作者說是Heuristic)。
AlexNet共使用兩張GTX 580 3GB GPU,訓練了約5~6天,經過了約90個cycles,訓練集為ImageNet中的120萬張image。
Results
Quantitative Evaluation
上表為AlexNet參加ILSVRC-2010與ILSVRC-2012的結果。可以注意到在ISVRC-2010中,top-1與top-5 error rates分別為37.5%與17.0%。雖說ILSVRC-2012的測試集label沒有公開,所以表上的error rates為validation error rates(與test error rates差不到0.1%),但還是可以看出AlexNet遠比第二名有著更好的準確率。
Qualitative Evaluation
上圖中可以看到在GPU1中的kernel,學到的大多都是跟顏色無關的特性,而GPU2中的kernel學到的大多都是跟顏色相關的。這個是前面提到Kernel間特殊的連接方式所造成的結果,不論重新設定初始權重跑幾次都會如此。
而這張圖可以看到說,不論是prediction還是classification,AlexNet的表現都非常出色。
Discussion
作者觀點
AlexNet的研究表明了一個大型的深度CNN是能夠透過只用supervised learning的方式取得非常好的效果,而最重要的關鍵其實在於深度,因此算力是非常重要的(才能支撐更大、更深的模型)。期許未來算力的大幅進步能夠支撐用來處理影片序列(非常多的圖片and時間資訊)的超大超深CNN(我個人覺得已經是現在進行式了)。
我的觀點
而AlexNet的出現也是受惠於GPU發展的產物,包括後來越來越深的模型。雖說我們現在會覺得AlexNet其實也沒有很深,但以當時來說,是非常尖端且突破性的研究,也帶起了後來在各處使用Convolution Neural Network,以及model越來越deep的風潮。總結來說,AlexNet將Sigmoid替換成了ReLU,避免了Vanishing Gradient的問題;也透過Dropout以及Data augmentation,減少Overfitting的狀況;更點出了『深度很重要』的觀念,促使了後來越來越深的Model與算力發展。
心得
在讀paper的時候會發現,這篇其實沒有用到什麼複雜的技巧,大多都是大學部ML/DL相關課程就會學到的基本知識。考究到這篇論文的時間是在2012,在當時這些技巧應該都是非常新穎的概念,甚至有些東西是本篇論文的作者在不久前提出的(超酷XD)。自從這篇論文以來,Deep Convolution Neural Network在Computer Vision上才開始蔚為流行,成為大學ML/DL課必教的概念,而AlexNet也從此被視為在Computer Vision領域最有影響力的論文之一。在讀這篇AlexNet的時候,除了感受到這個領域的快速發展外,還真的有一種站在巨人肩膀上的感覺。
References
- ImageNet Classifications with Deep Convolutional Neural Networks
- What does the term saturating nonlinearities mean?
- The Vanishing Gradient Problem
- Gradient Vanishing Problem –- 以 ReLU / Maxout 取代 Sigmoid actvation function
- Difference between Local Response Normalization and Batch Normalization
- 世上最生動的 PCA:直觀理解並應用主成分分析
- A Step-by-Step Explanation of Principal Component Analysis (PCA)
- 機器/深度學習-基礎數學(三):梯度最佳解相關算法(gradient descent optimization algorithms)