論文:ImageNet Classification with Deep Convolutional Neural Networks

(未經作者同意禁止轉載)

(alexnet簡單分析:zhuanlan.zhihu.com/p/35

摘要

我們訓練了一個龐大的深層卷積神經網路,將ImageNet LSVRC-2010比賽中的120萬張高解析度圖像分為1000個不同的類別。在測試數據上,我們取得了37.5%和17.0%的top-1和top-5的錯誤率,這比以前的最先進水平要好得多。具有6000萬個參數和65萬個神經元的神經網路由五個卷積層,其中緊隨著部分層的後面是max-pooling層,和三個全連接層,以及最後的1000維的softmax層組成。為了加快訓練速度,我們使用非飽和神經元和非常高效的GPU實現卷積運算。為了減少全連接層中的過擬合,我們採用了最近開發的稱為「dropout」的正則化方法,這種方法被證明是非常有效的。我們還在ILSVRC-2012比賽中使用這個模型的一個變種,取得了15.3%的top-5測試錯誤率,而第二名的成績僅為26.2%。

1. 引言

目前的物體識別方法對於機器學習方法是必不可少的。為了改善他們的性能,我們可以收集更大的數據集,學習更強大的模型,並使用更好的技術來防止過度擬合。直到最近,標記圖像的數據集相對較小——大約上萬張圖像(例如,NORB [16],Caltech-101/256 [8,9]和CIFAR-10/100])的數量級。簡單的識別任務可以用這個大小的數據集很好地解決,特別是當他們增加了標籤-保存轉換時。例如,MNIST數字識別任務的當前最佳錯誤率(<0.3%),接近人類的表現[4]。但是現實環境中的物體表現出相當大的變化性,所以要學會識別它們,就必須使用更大的訓練集。事實上,很多人早就認識到小圖像數據集的缺點(例如,Pinto等人[21]),但是收集帶有標記的百萬級別的數據集合是最近才成為可能。新的更大的數據集包括LabelMe [23],它包括成千上萬的完全分割的圖像,還有ImageNet [6],它有超過15萬個標記和超過22,000個類別的高解析度圖像。

要從數百萬圖像中識別數千個對象,我們需要一個具有強大學習能力的模型。然而,目標識別任務的複雜性意味著即使是像ImageNet這樣大的數據集也不能解決這個問題,所以我們的模型也應該有大量先驗知識來補償我們沒有的所有數據。卷積神經網路(CNN)構成了這樣一類模型[16,11,13,18,15,22,26]。他們的性能可以通過改變他們的深度和廣度來控制,他們也對圖像的性質做出強大且基本上正確的假設(即統計數據的固定性和像素間依賴性的局部性)。因此,與具有相當數量的層數的標準前饋神經網路相比,CNN具有更少的連接和參數,因此它們更容易訓練,而理論上的最佳性能可能僅略差一些。

不論CNN的性質多有吸引力,也不論它們局部結構的相對效率有多高,但把它們大規模應用於高解析度圖像仍然過於昂貴。幸運的是,當前的GPU搭配了高度優化的二維卷積實現,足以促進大型CNN的訓練,最近的數據集(如ImageNet)包含足夠的標記示例來訓練此類模型,而不會出現嚴重的過擬合。

本文的具體貢獻如下:我們在ILSVRC-2010和ILSVRC-2012競賽中使用的ImageNet子集上訓練了迄今為止最大的卷積神經網路之一[2],取得了在這些數據集上報告過的迄今為止最好的結果。我們編寫並公開了一個高度優化的2D卷積GPU實現,以及卷積神經網路訓練中固有的所有其他操作。我們的網路包含了許多新的和不同尋常的特性,這些特性可以提高性能,縮短訓練時間,詳見第3節。即使有120萬個標記的訓練樣本,我們的網路規模使得過擬合成為一個顯著的問題。我們最終的網路包含五個卷積層和三個完全連接的層,而這樣的深度似乎是重要的:我們發現去除任何卷積層(每層包含不超過整個模型參數的1%)都會導致性能變差。

最後,網路的規模主要受限於當前GPU上可用的內存數量以及我們願意接受的訓練時間。我們的網路在兩塊GTX 580 3GB GPU上訓練需要五到六天的時間。我們所有的實驗都表明,若有更快的GPU和更大的數據集,我們的結果可以得到改善。

2. 數據集

ImageNet是一個具有超過1500萬標記,大約22000個類別的的高解析度圖像的數據集。圖像是從網路上收集的,並使用Amazon Mechanical Turk眾包工具來人工貼標籤的。從2010年開始,作為Pascal視覺對象挑戰賽的一部分,每年舉辦一次名為ImageNet大型視覺識別挑戰賽(ILSVRC)的比賽。 ILSVRC使用ImageNet的一個子集,每1000個類別中大約有1000個圖像。總共有大約120萬個訓練圖像,50,000個驗證圖像和15萬個測試圖像。

ILSVRC-2010是ILSVRC的唯一可用的測試集標籤版本,所以這是我們進行大部分實驗的版本。由於我們也在ILSVRC-2012比賽中輸入了我們的模型,所以我們在第六部分報告了我們在這個數據集版本上的結果,而這個測試集的標籤是不可知的。在ImageNet上,習慣上報告兩個錯誤率:top-1和top-5,其中top-5錯誤率是指測試圖像的正確標籤不屬於被模型認為最可能的五個標籤的百分比。

ImageNet由各種解析度的圖像組成,而我們的系統需要恆定的輸入尺寸。因此,我們將圖像下採樣到一個256×256的固定解析度。給定一個矩形圖像,我們首先重新縮放圖像,使短邊長度為256,然後從結果的中央裁剪出256×256的部分。除了從每個像素中減去訓練集的平均值之外,我們不以任何其他方式預處理圖像。所以我們的模型是在原始的RGB像素值上訓練出來的。

3. 框架

網路的框架如圖2所示,它共有8層——5個卷積層和3個全連接層。 下面將會講述該網路架構的一些新穎的非凡的特點。 3.1到3.4節是按照我們心目中對它們重要性的評估進行排序,越重要越靠前。

圖1:具有ReLU(實線)的四層卷積神經網路在CIFAR-10上達到25%的訓練錯誤率,比使用tanh(虛線)的等效網路快六倍。為了儘可能快地訓練, 每個網路的學習率都是獨立選擇的。沒有採用任何的正規化。 這裡展示的效果隨著網路架構的不同而有所差別,但具有ReLU的網路的學習始終比使用飽和神經元的同等網路的速度快幾倍。

3.1 非線性ReLU

將神經元的輸出f建模為輸入x的函數的標準方法是圖1: f(x)=tanh(x)f(x)=(1+e^{-x})^{-1} 。就梯度下降訓練時間而言,這些飽和非線性方程比非飽和非線性的 f(x)=max(0,x) 慢得多。我們隨Nair和Hinton[20],將具有這種非線性的神經元稱為Rectified Linear Units(ReLU)。使用ReLU的深度卷積神經網路比使用tanh單位的同等網路的訓練快幾倍。這在圖1中得到了證明,該圖顯示了特定四層卷積網路在CIFAR-10數據集上達到25%的訓練誤差所需的迭代次數。這個圖顯示,如果我們使用傳統的飽和神經元模型,那麼我們就不能用這樣大的神經網路來完成這個實驗。

我們不是第一個考慮CNN中的傳統神經元的代替品的人。例如,Jarrett等人[11]聲稱,非線性 f(x)=|tanh(x)| ,伴隨著使用他們的對比度歸一化(contrast normalization)方法,緊跟著local average pooling(局部平均池化),它在Caltech-101數據集上工作得特別好。然而,在這個數據集中,主要關心的是防止過度擬合,所以他們觀察到的效果與我們在使用ReLU時報告的訓練集合的加速能力不同。加快學習對於在大型數據集上訓練的大型模型的性能有很大的影響。

3.2 在多個GPU上訓練

一個GTX 580 GPU只有3GB內存,這限制了可以在其上訓練的網路的最大尺寸。事實證明,120萬個訓練樣例足以訓練網路,那些網路由於太大而不適合在一個GPU上訓練。因此,我們將網路分佈在兩個GPU上。當前的GPU特別適合於跨GPU並行化,因為它們能夠直接讀取和寫入彼此的存儲器,而無需通過主機內存。我們所採用的並行化方案基本上是在每個GPU上放置一半的內核(或神經元),另外還有一個技巧:GPU只在特定的層間進行通信。這意味著,例如,第3層的內核從第2層的所有內核圖中獲取輸入。然而,第4層中的內核僅從位於同一GPU上的第3層中的那些內核圖中取得輸入。選擇連通性模式是交叉驗證的一個問題,但是這使我們能夠精確地調整通信量,直到它達到計算量的可接受的份額。

由此產生的架構有點類似於Ciresan等人所使用的「柱狀」CNN。 [5],除了我們的列不是獨立的(見圖2)。與在單個GPU上訓練且每個卷積層的內核數量少一半的網路相比,這個方案分別將top-1和top-5的錯誤率分別降低了1.7%和1.2%。雙GPU網路的訓練時間比單GPU網路的訓練時間少一點。

3.3局部響應歸一化

ReLU具有所需的屬性,它們不需要輸入歸一化來防止它們飽和。 如果至少有一些訓練樣例對ReLU產生正的輸入,則會在該神經元中進行學習。 但是,我們仍然發現以下的局部歸一化方案有助於泛化。 a_{x,y}^{i} 表示通過在位置(x,y) 處應用內核i然後應用非線性ReLU計算得到的神經元激活度,則響應歸一化的激活度 b_{x,y}^{i} 由以下表達式計算得到

其中求和覆蓋了n個「相鄰的」位於相同空間位置的核圖,並且N是該層中的核的總數。內核圖的排序當然是任意的,並在訓練開始之前就確定好。這種響應歸一化實現了一種由真實神經元中發現的類型所激發的橫向抑制形式,在使用不同的內核計算的神經元輸出之間產生對大激活度的競爭。常數k,n,α和β是超值參數,其值是使用驗證集確定的;我們使用k = 2,n = 5,α= 10-4,和β= 0.75。我們在某些層的非線性ReLU後應用了這種歸一化(參見第3.5節)。

這個方案與Jarrett等人的局部對比歸一化(local contrast normalization )方案有一些相似之處。 [11],但是我們的應該稱為「亮度歸一化」更正確些,因為我們的方法不減去平均激活度。響應歸一化將我們的top-1和top-5的錯誤率分別降低了1.4%和1.2%。我們還驗證了這種方案在CIFAR-10數據集上的有效性:四層CNN在沒有歸一化的情況下,實現了13%的測試誤差率,而歸一化後的錯誤率為11%。

3.4重疊池化

CNN中的池化層對同一內核圖中相鄰神經元組的輸出進行整合匯總。傳統上,相鄰的池化單元整合的鄰域不重疊(例如,[17,11,4])。更準確地說,一個池化層可以被認為是由間隔s個像素的池化單元組成的網格,每個池化單元整合一個大小為z×z,以它的位置為中心的鄰域。如果我們設定s = z,我們就可以得到CNN中常用的傳統的局部池化。如果我們設置s <z,我們得到重疊池化。我們在整個網路中使用s = 2和z = 3。與產生相同尺寸的輸出非重疊方案相比(s= 2,z = 2),這個方案將top-1和top-5的錯誤率分別降低了0.4%和0.3%。我們通常在訓練期間觀察到重疊池模型稍微難以過度擬合。

3.5總體架構

現在我們準備好描述CNN的整體架構。如圖2所示,網路包含八個帶權值的層;前五個是卷積的,其餘三個是全連接的。最後的全連接層的輸出被饋送到1000路softmax,其產生1000個類別標籤上的分佈。我們的網路使多項邏輯回歸(multinomial logistic regression)方程最大化,這相當於在預測分佈下最大化正確標籤的對數概率(log-probability )的訓練實例的平均值。

第二,第四和第五個卷積層的內核只與位於同一GPU上的前一層內核圖相連接(見圖2)。第三個卷積層的內核連接到第二層的所有內核圖。全連接層中的神經元連接到前一層中的所有神經元。第一和第二卷積層後面都跟著響應歸一化層。 3.4節中所描述的max-pooling層跟隨在響應歸一化層以及第五個卷積層後面。將非線性ReLU應用到每個卷積和全連接層的輸出。

第一卷積層用步進為4個像素(這是核圖中相鄰神經元的感受野中心之間的距離),尺寸為11×11×3的96個內核對224×224×3輸入圖像進行卷積。第二卷積層將第一卷積層的(響應歸一化和池化後的)輸出作為輸入,並用256個大小為5×5×48的內核對其進行卷積。第三,第四和第五卷積層彼此連接,它們間沒任何池化或歸一化層。第三卷積層具有連接到第二卷積層的(歸一化,池化後的)輸出的尺寸為3×3×256的384個內核。第四卷積層有384個大小為3×3×192的內核,第五卷積層有256個大小為3×3×192的內核。全連接層各有4096個神經元

圖2:我們的CNN體系結構圖,明確地顯示了兩個GPU之間責任的劃分。 一個GPU運行圖形頂部的圖層部分,另一個運行圖層底部的圖層部分。 GPU僅在某些層進行通信。 網路的輸入是150,528維,網路剩餘層中的神經元數是253,440-186,624-64,896-64,896-43,264-4096-4096-1000。

4. 減少過擬合

我們的神經網路架構有6000萬個參數。儘管ILSVRC的1000個類別使得每個訓練示例對從圖像到標籤的映射施加10比特的約束,但是這不足以學習如此多的參數而沒有顯著的過擬合。下面,我們描述我們對付過擬合的兩種主要方法。

4.1數據增強

減少過度擬合圖像數據的最簡單和最常用的方法是使用保留標籤變換(例如,[25,4,5])來人為地增大數據集。我們採用了兩種不同的數據增強形式,這兩種形式都允許通過很少的計算從原始圖像生成變換的圖像,所以變換後的圖像不需要存儲在磁碟上。在我們的實現中,轉換的圖像是在CPU上的Python代碼中生成的,而GPU正在訓練上一批圖像。所以這些數據增強方案實際上是計算上自由的。

數據增強的第一種形式是生成圖像平移和水平鏡像。我們通過從256×256圖像中提取隨機的224×224塊(及其水平鏡像),並在這些提取的塊上訓練我們的網路。這使我們的訓練集增加了2048倍,儘管由此產生的訓練樣例高度相互依賴的。如果沒有這個方案,我們的網路會遭受嚴重的過擬合,這將迫使我們使用更小的網路。在測試期間,網路通過提取5個224×224塊(四個角塊和一個中心塊)以及它們的水平鏡像圖(因此總共十個塊),對這十個小塊的softmax層的預測值進行平均來預測結果。

數據增強的第二種形式包括改變訓練圖像中RGB通道的強度值。具體而言,我們在整個ImageNet訓練集上的RGB像素值集上做PCA。對於每個訓練圖像,我們成倍增加已有的主成分,增加的幅度為對應的特徵值乘以從一個均值為零,標準差為0.1的高斯分佈中提取的隨機變數。因此對於每個RGB圖像像素 I_{xy}=[I_{xy}^{R},I_{xy}^{G},I_{xy}^{B}] ,我們增加以下的數值:

[p_{1},p_{2},p_{3}][[a_{1}lambda_{1},a_{2}lambda_{2},a_{3}lambda_{3}]^{T}

其中 p_{i}lambda_{i} 分別是RGB像素值的3×3協方差矩陣的第i個特徵向量和特徵值, a_{i} 是上述隨機變數。 每個 a_{i} 僅被提取一次,應用於特定訓練圖像的所有像素,直到該圖像被再次用於訓練,此時它被重新賦值。 該方案近似地捕捉了自然圖像的重要屬性,即物體識別對照度的強度和顏色的變化是不變的。 該方案將top-1錯誤率降低1%以上。

4.2 Dropout

結合許多不同模型的預測是減少測試錯誤的一個非常成功的方法[1,3],但對於已經花費數天訓練的大型神經網路來說,它似乎太昂貴了。然而,有一個非常有效的模型組合版本,在訓練期間,其成本只有兩倍。最近引入的技術,稱為「dropout」[10],包括以0.5的概率把每個隱藏的神經元的輸出設置為零。以這種方式「dropout」的神經元不參與正向傳遞,也不參與反向傳遞。所以每次提交輸入時,神經網路都採樣不同的體系結構,但是所有這些體系結構共享權重。這種技術減少了神經元的複雜的共同適應,因為神經元不能依賴於特定的其他神經元的存在。因此,它被迫網路學習更強大的特徵,與其他神經元的許多不同的隨機子集結合使用時相當有益處。在測試期間,我們使用了所有的神經元但是把它們乘以0.5,這是對指數級dropout網路產生的預測分佈的幾何平均值的合理的近似。

我們在圖2的前兩個全連接層中使用了dropout。如果網路沒有使用dropout,會出現嚴重的過度擬合。dropout大致使收斂所需的迭代次數翻倍。

5.學習細節

我們使用隨機梯度下降訓練我們的模型,批量大小為128,動量為0.9,權值衰減為0.0005。 我們發現這個少量的重量衰減對於模型學習是重要的。 換句話說,這裡的權值衰減不僅僅是一個調節器:它減少了模型的訓練誤差。 權值w的更新規則是

其中i是迭代指數,v是動量變數,ε是學習速率, <frac{delta L}{delta w}|_{w_{i}}>_{D_{i}} 是第 D_{i} 批內目標關於w,在 w_{i} 處的導數的平均值。我們用標準偏差為0.01的零均值高斯分佈初始化各層的權重。我們用常量1初始化了第二,第四和第五卷積層以及全連接隱含層的神經元偏差值(bias)。這種初始化通過向ReLU提供正輸入來加速早期階段的學習。我們初始化其餘層中的神經元偏差為0。

我們對所有圖層使用了相同的學習率,我們在整個訓練過程中手動進行了調整。我們遵循的啟發式是,當驗證錯誤率停止改進與當前的學習率時,將學習率除以10。學習率初始為0.01,在終止前減少了三次。我們在兩臺NVIDIA GTX 580 3GB GPU上使用120萬張圖像的訓練集對網路進行了大約90個週期的訓練,花費了五到六天的時間。

圖3:第一個卷積層在224X224X3的圖像上學習到的96個11X11X3的內核。上面48個內核是在GPU1上學習到的,下面的48個是在GPU2上學習到的。詳細請查看第6節。

6.結果

我們在ILSVRC-2010上的結果總結在表1中。我們的網路達到了37.5%和17.0%的top-1和top-5測試集錯誤率。 ILSVRC-2010競賽中取得的最好成績是47.1%和28.2%,其方法是對六種針對不同特徵進行訓練的稀疏編碼模型所產生的預測進行平均[2],此後最好的公佈結果是45.7% 和25.7%,其方法是對從兩類密集採樣特徵計算得到的Fisher矢量(FVs)進行訓練的兩個分類器的預測值的平均值[24]。

我們也在ILSVRC-2012比賽中輸入了我們的模型,並在表2中報告了我們的結果。由於ILSVRC-2012測試集標籤沒有公開提供,所以我們不能報告我們嘗試的所有模型的測試錯誤率。在本節的其餘部分中,驗證和測試錯誤率交替使用,因為根據我們的經驗,它們相差不超過0.1%(見表2)。本文所描述的CNN達到18.2%的top-5錯誤率。對五個相似CNN的預測進行平均,得出錯誤率為16.4%。訓練單個CNN,在最後一個池層上增加一個額外的第六層,對ImageNet 2011秋季發布的數據(15M圖像,22K類)進行分類,然後在ILSVRC-2012上「微調」,它的錯誤率為16.6%。在Imagenet 2011年秋季的發布版本上預訓練的兩個CNN的預測與前述的五個CNN進行平均,得出15.3%的錯誤率。第二好的成績的誤差率達到了26.2%,它的方法是對從不同類型的密集採樣特徵計算出的FV進行訓練的多個分類器的預測值進行平均[7]。

表1:ILSVRC-2010測試集的結果比較。 斜體是其他人取得的最好結果。

最後,我們也報告了ImageNet在2009年秋季發布的10,184個類別和890萬個圖像上的誤差。在這個數據集上,我們遵循文獻中使用一半圖像訓練和一半測試的慣例。由於沒有測試集,我們的分割必然不同於以前的作者所使用的分割,但是這不會顯著地影響結果。在這個數據集上,我們使用上面描述的網路——在最後的pooling層上具有額外的第六卷積層,獲得的top-1和top-5的錯誤率分別是67.4%和40.9%,但是。這個數據集的最佳公佈結果是78.1%和60.9%[19]。

表2:ILSVRC-2012驗證和測試集錯誤率的比較。 斜體是其他人取得的最好結果。 帶有星號*的型號是「預先訓練好的」,用於對整個ImageNet 2011秋季版本進行分類。 詳情請參閱第6節。

6.1定性評估

圖3顯示了由網路的兩個數據連接層學習的卷積內核。該網路已經學習了各種頻率和方向的內核,以及各種色彩斑點。請注意兩個GPU所展示的特殊性,這是第3.5節中描述的受限連接的結果。 GPU 1上的內核在很大程度上與顏色無關,而GPU 2上的內核在很大程度上是顏色特定的。這種特殊性發生在每一次運行中,並且獨立於任何特定的隨機權重初始化(以GPU的重新編號為模)。

在圖4的左圖中,我們通過計算八個測試圖像的top-5預測來定性地評估網路學到了什麼。請注意,即使偏離中心的物體(如左上角的蟎蟲)也可以被網路識別。大部分top-5的標籤看起來都很合理。例如,只有其他類型的貓被認為是豹的合理標籤。在某些情況下(格柵,櫻桃),對於照片的預期焦點存在真正的歧義。

探測網路的視覺知識的另一種方法是考慮由最後一個圖像(4096維隱藏層)引起的特徵激活。如果兩幅圖像產生的特徵激活向量具有較小的歐幾裏得的差異,則可以認為更高層次的神經網路認為它們是相似的。圖4顯示了來自測試集的五個圖像以及訓練集中,根據這一標準,與測試圖像的每一個最相似的六個圖像。請注意,在像素級別,檢索到的(在第二列)訓練圖像與第一列中的查詢圖像一般不會相似。例如,檢索到的狗和大象出現各種不同的姿勢。我們在補充材料中提供更多測試圖像的結果。

通過使用兩個4096維實值矢量之間的歐幾裏得距離來計算相似性效率不高,但是通過訓練一個自動編碼器將這些矢量壓縮為短二進位代碼,可以變得有效率。這歌圖像檢索方法應該會比在原始像素上應用自動編碼器[14]更好。它不利用圖像標籤,因此有可能檢索具有類似的邊緣模式的圖像,無論它們是否語義類似。

7. 討論

我們的實驗表明,在一個非常具有挑戰性的數據集上使用簡單的監督學習,大型深度卷積神經網路能夠取得破紀錄的結果。值得注意的是,如果單個卷積層被刪除,我們的網路性能就會下降。例如,移除任何中間層會導致網路性能top-1的損失約2%。所以深度對於實現我們的結果真的很重要。

為了簡化我們的實驗,我們沒有使用任何無監督的預訓練,即使我們期望它會有所幫助,特別是如果我們獲得足夠的計算能力來顯著增加網路的規模,同時不需要相應地增加標記數據的數量。到目前為止,我們的結果已經改善了,因為我們已經使我們的網路更大,訓練了更長的時間,但是為了匹配人類視覺系統的時空路徑,我們仍然有許多數量級要去達到。最終,我們希望在視頻序列中使用非常大且深的卷積網路,其中時間結構提供非常有用的信息,這些信息在靜態圖像中缺失或者不太明顯。

圖4 :(左)八個ILSVRC-2010測試圖像和我們的模型認為的最可能的五個標籤。 正確的標籤寫在每個圖像下,分配給正確標籤的概率也顯示為紅色條(如果恰好位於前5位)。(右)第一列有5個ILSVRC-2010測試圖像。 其餘的列顯示了六個訓練圖像,其在最後隱藏層中產生的特徵向量與測試圖像的特徵向量具有最小歐幾裏得距離。


推薦閱讀:
相關文章