Author:Alex Krizhevsky ; Ilya Sutskever ; Geoffrey E. Hinton
摘要
本文訓練了一個大規模的深度卷積神經網絡來將ImageNet LSVRC-2010比賽中的包含120萬幅高分辨率的圖像數據集分為1000種不同類別。在測試集上,本文所得的top-1和top-5錯誤率分別為37.5%和17.0%,該測試結果大大優于當前的最佳水平。本文的神經網絡包含6千萬個參數和65萬個神經元,包含了5個卷積層,其中有幾層后面跟著最大池化(max-pooling)層,以及3個全連接層,最后還有一個1000維的softmax層。為了加快訓練速度,本文使用了不飽和神經元以及一種高效的基于GPU的卷積運算方法。為了減少全連接層的過擬合,本文采用了最新的正則化方法“dropout”,該方法被證明非常有效。我們以該模型的變體參加了ILSVRC-2012比賽,相比第二名26.2%,我們以15.3%的top-5測試錯誤率獲勝。
1 引言
當前的目標識別方法基本上都使用了機器學習方法。為了提高目標識別方法的性能,我們可以收集更大的數據集,學習更強大的模型,使用更好的技術來防止過擬合。直到目前,帶標簽的圖像的數據集都相對較小——都僅僅在成千上萬的數量級上(例如,NORB[16],Caltech-101/256 [8, 9]和CIFAR-10/100 [12])。簡單的識別任務在這樣大小的數據集上可以被解決的相當好,特別是如果他們進行帶標簽的轉換來增廣數據集。例如,目前在MNIST數字識別任務上(<0.3%)的最好準確率已經接近了人類水平[4]。但現實情況的目標呈現出很大的變化,因此為了學習識別它們,有必要使用更大的訓練數據集。實際上,人們也已廣泛地認識到小圖像數據集的缺點(例如,Pinto et al. [21]),但收集上百萬圖像的標注數據僅在最近才變得的可能。新的更大的數據集包括由數十萬張全分割圖像的LabelMe[23]和包含超過22000類的1500萬張帶標簽高分辨率圖像ImageNet[6]組成。
為了從數以百萬計的圖像中學習出數千種的目標,我們需要一個有很強學習能力的模型。然而,目標識別任務的巨大復雜性意味著,即使在ImageNet這樣大的數據集也不能完成任務,因此我們的模型也要有許多先驗知識來彌補所有我們沒有的數據。卷積神經網絡(CNNs)構成了一個這樣的模型[16, 11, 13, 18, 15, 22, 26]。卷積神經網絡的學習能力可以通過改變網絡的廣度和深度來控制,并且它們都能對圖像的本質做出強大而又正確的判別(即統計的穩定性和像素位置的依賴性)。因此,與具有層次大小相似的標準前饋神經網絡,CNNs有更少的連接和參數,因此它更容易訓練,盡管在理論上cnn的最佳性能可能比標準前饋神經網絡差一點。
盡管CNN具有引人注目的特性,盡管它們的局部架構相當有效,但大規模地應用于高分辨率圖像消耗資源仍然過多。幸運的是,目前的GPU,搭配了高度優化的2維卷積計算,已經足夠強大到幫助大規模CNN的訓練,最新的數據集例如ImageNet包含足夠的標注樣本來訓練不會嚴重的過擬合的模型。
本文具體的貢獻如下:我們在ILSVRC-2010和ILSVRC-2012[2]的ImageNet子集上訓練了到目前為止最大的卷積神經網絡,并取得了迄今為止在這些數據集上報道過的最好結果。我們編寫了高度優化的2維卷積的GPU計算以及卷積神經網絡訓練中所有其他運算,這些都已公開提供。我們的網絡包含許多新的不尋常的特性,這些特性提高了神經網絡的性能并減少了訓練時間,詳見第三節。即使使用了120萬帶標簽的訓練樣本,網絡的大小仍然使過擬合成為一個嚴重的問題,因此本文使用了許多有效的防止過擬合的技術,詳見第四節。本文最終的網絡包含5個卷積層和3個全連接層,深度似乎是非常重要的:我們發現移除任何一層卷積層(每個卷積層包含的參數不超過模型參數的1%)都會導致更差的性能。
最后,網絡的大小主要受限于目前GPU的內存容量和我們愿意忍受的訓練時間。本文的網絡在兩個GTX 580 3GB GPU上訓練五六天。本文所有的實驗表明,如果有更快的GPU、更大的數據集,結果可以更好。
2 數據集
ImageNet數據集包含有大概22000種類別共150多萬帶標簽的高分辨率圖像。這些圖像是從網絡上收集得來,由亞馬遜的Mechanical Turkey的眾包工具進行人工標記。從2010年開始,作為Pascal視覺目標挑戰的一部分,ImageNet大規模視覺識別挑戰(ImageNet Large-Scale Visual Recognition Challenge ,ILSVRC)比賽每年都會舉行。ILSVRC采用ImageNet的子集,共包含一千個類別,每個類別包含大約1000幅圖像。總的來說,大約有120萬張訓練圖像,5萬張驗證圖像以及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.1節至3.4節根據他們的重要性從大到小排序。
3.1 ReLU非線性
通常使用一個關于輸入x的函數模擬神經元的輸出f。這種標準函數是f(x) = tanh(x)或f(x) = (1 + e?x)?1。考慮到梯度下降的訓練時間,這些飽和的非線性函數比不飽和的非線性函數f(x) = max(0,x)更慢。根據Nair和Hinton[20]的說法,本文將這種非線性特征神經元稱為修正線性單元(ReLU)。采用ReLU的深度卷積神經網絡訓練時間比同樣情況下使用tanh單元的速度要快幾倍。在圖1中,對于一個特定的四層卷積網絡,在CIFAR-10數據集上達到25%的訓練誤差所需要的迭代次數可以證實這一點。這幅圖表明,如果我們采用傳統的飽和神經元模型,我們將不能在如此大的神經網絡上實驗該工作。
本文不是第一個考慮在CNNs中尋找傳統神經模型替代方案的。例如,Jarrett等人[11]考慮使用非線性函數f(x) = |tanh(x)|,在數據集Caltech-101上,與基于局部平均池化的對比歸一化結合取得了很好地效果。但是,在這個數據集上他們主要關心的就是防止過擬合,而本文用ReLUs主要是對訓練集的擬合進行加速。快速學習對由大規模數據集上訓練出大模型的性能有相當大的影響。
圖1:使用ReLU(實線)的四層卷積神經網絡在CIFAR-10數據集上達到25%的訓練誤差比使用tanh神經元的等價網絡(虛線)快六倍。為了使訓練盡可能快,每個網絡的學習率是單獨選擇的。沒有采用任何類型的正則化。影響的大小隨著網絡結構的變化而變化,這一點已得到證實,但使用ReLU的網絡都比等價的飽和神經元快幾倍。
3.2 多GPU訓練
單個GTX580 GPU只有3G內存,這限制了可以在GTX580上進行訓練的網絡最大規模。事實證明120萬訓練樣本圖像用來進行網絡訓練是足夠的,但是這個任務對一個GPU來說太大了。因此我們將網絡分布在兩個GPU上。當前的GPU都能很方便地進行交叉GPU并行,因為它們可以直接相互讀寫內存,而不用經過主機內存。我們采用的并行模式本質上來說就是在每一個GPU上放二分之一的核(或者神經元),我們還使用了另一個技巧:只有某些層才能進行GPU之間的通信。這就意味著,例如第三層的輸入為第二層的所有特征圖。但是,第四層的輸入僅僅是第三層在同一GPU上的特征圖。在交叉驗證時,連接模式的選擇是一個問題,而這個也恰好允許我們精確地調整通信的數量,直到他占計算數量的一個合理比例。
最終的結構有點像Ciresan等[5]采用的柱狀卷積神經網絡,但是本文的列不是獨立的(見圖2)。與每個卷積層擁有本文一半的核,并且在一個GPU上訓練的網絡相比,這種組合讓本文的top-1和top-5錯誤率分別下降了1.7%和1.2%。本文的2-GPU網絡訓練時間比一個GPU的時間都要略少。
3.3 局部響應歸一化
ReLU具有讓人滿意的特性,它不需要通過輸入歸一化來防止飽和。只要一些訓練樣本產生一個正輸入給一個ReLU,那么在那個神經元中學習就會開始。然而,我們仍然發現接下來的局部響應歸一化有助于增加泛化性能。這里,對同一個空間位置的n個鄰接核特征圖(kernel maps)求和,N是該層的核的總數目。核特征圖的順序顯然是任意的,并且在訓練之前就已決定了的。這種響應歸一化實現了側抑制的一種形式,側抑制受啟發于一種在真實神經中發現的形式,對利用不同核計算得到的神經輸出之間的大的活躍度生成競爭。常量k,n,α,β是超參數,它們的值通過驗證集確定;我們設k=2,n=5,α=0.0001,β=0.75。我們在特定的層使用的ReLU非線性之后應用了這種歸一化(請看3.5小節)。
這個方案與Jarrett等人[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。這個方案分別降低了top-1 0.4%,top-5 0.3%的錯誤率,與非重疊方案s=2,z=2相比,輸出的維度是相等的。我們在訓練過程中通常觀察采用重疊池化的模型,發現它更難過擬合。
3.5 整體結構
現在我們準備描述我們的CNN的整體架構。如圖2所示,我們的網絡包含8個帶權重的層;前5層是卷積層,剩下的3層是全連接層。最后一層全連接層的輸出傳遞給一個1000維softmax層,softmax會產生1000類標簽的分布。我們的網絡最大化多項邏輯回歸的目標,這等價于最大化預測分布下訓練樣本正確標簽的對數概率的均值。
第2,4,5卷積層的核只與位于同一GPU上的前一層的核映射相連接(看圖2)。第3卷積層的核與第2層的所有核映射相連。全連接層的神經元與前一層的所有神經元相連。第1,2卷積層之后是響應歸一化層。3.4節描述的這種最大池化層在響應歸一化層和第5卷積層之后。ReLU非線性應用在每個卷積層和全連接層的輸出上。
第一層卷積層使用96個大小為11x11x3的卷積核對224x224x3的輸入圖像以4個像素為步長(這是核特征圖中相鄰神經元感受域中心之間的距離)進行濾波。第二層卷積層將第一層卷積層的輸出(經過響應歸一化和池化)作為輸入,并使用256個大小為5x5x48的核對它進行濾波。第三層、第四層和第五層的卷積層在沒有任何池化或者歸一化層介于其中的情況下相互連接。第三層卷積層有384個大小為3x3x256的核與第二層卷積層的輸出(已歸一化和池化)相連。第四層卷積層有384個大小為3x3x192的核,第五層卷積層有256個大小為 的核。每個全連接層有4096個神經元。
圖2 本文CNN的結構圖示,明確地描述了兩個GPU之間的職責。一個GPU運行圖上方的層,另一個運行圖下方的層。兩個GPU只在特定的層通信。網絡的輸入是150,528維的,網絡剩余層中的神經元數目分別是253440,186624,64896,64896,43264,4096,4096,1000
4 減少過擬合
本文的神經網絡結構有6千萬個參數。盡管ILSVRC的1000個類別使得每一個訓練樣本利用10bit的數據就可以將圖像映射到標簽上,但是如果沒有大量的過擬合,是不足以學習這么多參數的。接下來,本文描述了兩種對抗過擬合的主要的方法。
4.1 數據增強
圖像數據上最簡單常用的用來減少過擬合的方法是使用標簽保留變換(例如[25, 4, 5])來人工增大數據集。我們使用了兩種獨特的數據增強方式,這兩種方式都可以從原始圖像通過非常少的計算量產生變換的圖像,因此變換圖像不需要存儲在硬盤上。在我們的實現中,變換圖像通過CPU的Python代碼生成,而此時GPU正在訓練前一批圖像。因此,實際上這些數據增強方案是計算免費的。
第一種數據增強方式包括生成圖像變換和水平翻轉。我們從256×256圖像上通過隨機提取224 × 224的圖像塊實現了這種方式,然后在這些提取的圖像塊上進行訓練。這個讓我們的訓練集增大了2048倍((256-224)2*2=2048),盡管產生的這些訓練樣本顯然是高度相互依賴的。如果不使用這個方法,本文的網絡會有大量的過擬合,這將會迫使我們使用更小的網絡。在測試時,網絡通過提取5個224x224塊(四個邊角塊和一個中心塊)以及它們的水平翻轉(因此共十個塊)做預測,然后網絡的softmax層對這十個塊做出的預測取均值。
第二種數據增強方式包括改變訓練圖像的RGB通道的強度。特別地,我們在整個ImageNet訓練集上對RGB像素值集合執行PCA。對每一幅訓練圖像,本文加上多倍的主成分,倍數的值為相應的特征值乘以一個均值為0標準差為0.1的高斯函數產生的隨機變量。因此對每一個RGB圖像像素Ix,y=[IRx,y , IGx,y , IBx,y]T加上如下的量,
[p1,p2,p3][α1λ1,α2λ2,α3λ3]T
pi,λi分別是RGB像素值3 × 3協方差矩陣的第i個特征向量和特征值,αiαi是前面提到的隨機變量。對于某個訓練圖像的所有像素,每個αi只獲取一次,直到圖像進行下一次訓練時才重新獲取。這個方案近似抓住了自然圖像的一個重要特性,即光照的顏色和強度發生變化時,目標特性是不變的。這個方案降低了top 1錯誤率1%
4.2 失活(Dropout)
結合多種不同模型的預測結果是一種可以降低測試誤差的非常成功的方法[1,3],但是這對于已經要花很多天來訓練的大規模神經網絡來說顯得太耗費時間了。但是,有一種非常有效的模型結合的方法,訓練時間只需要原先的兩倍。最新研究的技術,叫做“dropout”[10],它將每一個隱藏神經元的輸出以50%的概率設為0。這些以這種方式被“踢出”的神經元不會參加前向傳遞,也不會加入反向傳播。因此每次有輸入時,神經網絡采樣一個不同的結構,但是所有這些結構都共享權值。這個技術降低了神經元之間復雜的聯合適應性,因為一個神經元不是依賴于另一個特定的神經元的存在的。因此迫使要學到在連接其他神經元的多個不同隨機子集的時候更魯棒性的特征。在測試時,本文使用所有的神經元,但對其輸出都乘以了0.5,對采用多指數dropout網絡生成的預測分布的幾何平均數來說這是一個合理的近似。
本文在圖2中的前兩個全連接層使用dropout。如果不采用dropout,本文的網絡將會出現大量的過擬合。Dropout大致地使達到收斂的迭代次數增加了一倍。
5 學習細節
我們使用隨機梯度下降來訓練我們的模型,樣本的batch size為128,動量為0.9,權重衰減為0.0005。我們發現少量的權重衰減對于模型的學習是重要的。換句話說,權重衰減不僅僅是一個正則項:它減少了模型的訓練誤差。權重w的更新規則是是在點ωi,目標對ω求得的導數的第i個batch:Di的均值。
本文對每一層的權值使用均值為0、標準差為0.01的高斯分布進行初始化。對第二層、第四層、第五層卷積層以及全連接的隱藏層使用常數1初始化神經元偏置項。這個初始化通過給ReLUs提供正輸入加快了學習的初始階段。本文對剩余的層使用常數0初始化神經元偏置項。
本文對所有層使用相同的學習速率,這個由在整個學習過程中手動地調整得到。我們采用啟發式算法:當驗證錯誤率停止降低就將當前學習速率除以10。本文的學習速率初始值設為0.01,在終止之前減小了三次。本文訓練該網絡對120萬的圖像訓練集大約進行了90個周期,使用了兩個NVIDIA GTX 580 3GB GPU,花費了5到6天的時間。
圖3 第一層卷積層對224x224x3的輸入圖像使用96個大小為11x11x3的卷積核學習得到的特征圖。上面的48個卷積核在GPU1上學習,下面的48個卷積核在GPU2上學習。詳見6.1節
6 結果
我們在ILSVRC-2010上的結果概括為表1。我們的神經網絡取得了top-1 37.5%,top-5 17.0%的錯誤率。在ILSVRC-2010競賽中最佳結果是top-1 47.1%,top-5 28.2%,采用的方法是對六個基于不同特征訓練得到的稀疏編碼模型的預測結果求平均數[2],此后最好的結果是45.7%和25.7%,采用的方法是對基于從兩種密集采樣特征計算得到的Fisher向量(FVs),訓練得到兩個分類器,所得的預測結果求平均數[24]。
表1:ILSVRC-2010測試集上的結果對比。斜體是其它方法取得的最好結果。
我們也用我們的模型參加了ILSVRC-2012競賽并在表2中報告了我們的結果。由于ILSVRC-2012的測試集標簽不是公開的,我們不能報告我們嘗試的所有模型的測試錯誤率。在本段的其余部分,我們會使用驗證誤差率和測試誤差率互換,因為在我們的實驗中它們的差別不會超過0.1%(看圖2)。本文中描述的CNN取得了top-5 18.2%的錯誤率。五個類似的CNN預測的平均誤差率為16.4%。我們在最后的池化層之后增加一個額外的第6個卷積層,使用整個ImageNet Fall 2011的數據(15M圖像,22000種類別)作為分類數據預訓練得到的一個CNN,再經過微調,用ILSVRC-2012對該CNN進行測試得到的錯誤率為16.6%。對上述的五個在整個Fall 2011數據集上預訓練過的CNN,得到的預測求平均得到的錯誤率結果為15.3%。當時第二的隊伍得到的錯誤率為26.2%,使用的方法是對基于從多種密集采樣特征計算得到的FVs,訓練得到多個分類器的預測值求平均[7]。
表2:ILSVRC-2012驗證集和測試集的誤差對比。斜線部分是其它人取得的最好的結果。帶星號的是“預訓練的”對ImageNet 2011秋季數據集進行分類的模型。更多細節請看第六節。
最后,我們也報告了我們在ImageNet 2009秋季數據集上的誤差率,ImageNet 2009秋季數據集有10,184個類,890萬張圖像。在這個數據集上我們按照慣例用一半的圖像來訓練,一半的圖像來測試。由于沒有確定的測試集,我們的分割必然與前面作者使用的不一樣,但是這并不會明顯地影響結果。我們在該數據集上得到top-1和top-5錯誤率分別為67.4%和40.9%,這個結果是由在上述網絡的最后一個池化層加了第六層卷積層所得到的。之前在這個數據集上最好的結果是78.1%和60.9%[19]。
6.1 定性評估
圖3顯示了網絡的兩個數據連接層學習到的卷積核。網絡學習到了大量的頻率核、方向選擇核,也學到了各種顏色點。注意兩個GPU表現出的專業化,3.5小節中描述的限制連接的結果。GPU1上的核主要是沒有顏色的,而GPU2上的核主要是針對顏色的。這種特殊化在每次運行時都會發生,并且獨立于任何特定隨機權值初始化(模除GPU的重編號)。在圖4的左邊部分,我們通過在8張測試圖像上計算它的top-5預測定性地評估了網絡學習到的東西。注意即使是不在圖像中心的目標也能被網絡識別,例如左上角的小蟲。大多數top-5標簽都顯得很合理。例如,只有別的種類的貓被似是而非貼上豹子的標簽。在一些情況下(窗格、櫻桃)會存在對照片的意圖的判斷的含糊不清。
圖4:(左)8張ILSVRC-2010測試圖像和我們的模型認為最可能的5個標簽。每張圖像的下面是它的正確標簽,正確標簽的概率用紅條表示(如果正確標簽在top 5中)。(右)第一列是5張ILSVRC-2010測試圖像。剩下的列展示了6張訓練圖像,這些圖像在最后的隱藏層的特征向量與測試圖像的特征向量有最小的歐氏距離。
另一種探討網絡的視覺知識的方法就是考慮最終圖像在最后4096維隱藏層產生的特征激活度。如果兩幅圖像生成的特征激活向量之間有較小的歐式距離,我們可以認為神經網絡的更高層特征認為它們是相似的。圖4顯示了根據這種測度下的五幅測試集圖像和六幅跟他們最相似的訓練集圖像。注意在像素水平,第二列中檢索到的訓練圖像一般地不會和第一列的查詢圖像相近。例如,檢索到的狗和大象以多種姿勢出現。我們在補充材料中展示更多測試圖像的結果。
使用歐氏距離計算4096維、實值向量之間的相似度效率較低,但是可以通過訓練一個自動編碼器來將這些向量壓縮為短的二進制編碼而提高效率。 這個相比將自動編碼器直接應用到原始像素上,是一個更加好的圖像檢索方法[14],前者沒有利用圖像的標簽,因此會傾向于檢索到有相似邊界模式的圖像,而不論他們語義上是否相似。
7 探討
我們的結果表明一個大型深度卷積神經網絡在一個具有高度挑戰性的數據集上僅使用有監督學習可以取得破紀錄的結果。值得注意的是,如果移除一個卷積層,我們的網絡性能會降低。例如,移除任何中間層都會引起網絡損失大約2%的top-1性能。因此深度對于實現我們的結果非常重要。
為了簡化本文的實驗,我們沒有使用任何無監督的預訓練,盡管我們認為它會有所幫助,尤其是我們可以在標簽數據沒有發生相應增長的情況下,獲得足夠的計算資源來增大我們網絡的大小,能夠有足夠的計算能力去顯著地增加網絡的大小。到目前為止,由于我們使用更大的網絡網絡、訓練了更長時間,本文的結果已經有所提高,但我們仍然有很多需求來進行時空下人類視覺系統的研究。最后我們想在視頻序列上使用非常大規模的深度卷積網絡,視頻序列的時序結構會提供許多有幫助的信息,而這些信息在靜態圖像上是丟失了或者不那么明顯。