1. 程式人生 > >【譯 | 更新中 】ImageNet Classification with Deep Convolutional Neural Networks

【譯 | 更新中 】ImageNet Classification with Deep Convolutional Neural Networks

原作者:Alex Krizhevsky et al.
譯者:Irene Long

3 結構

8個學習層——5個卷積層和三個全連線層。下面我們討論一些特別的性質在這個網路裡面。3.1-3.4節是根據我們對它重要性的預估來分類的,先從最重要的開始。

3.1 非線性函式ReLU

標準的方法去給一個神經元f作為它的輸入x的函式,一般使用f(x)=tanh(x)或f(x)=1/(1+e^{-x}). 關於用梯度下降的訓練時間,這些飽和的(saturating)非線性比非飽和非線性f(x)=max(0, x)要慢很多。跟隨Nair和Hinton,我們稱神經元和這種非線性函式稱為“矯正線性單元”(ReLUs)。深度卷積神經網路運用ReLUs可以比等同的單元情況下的tanh函式快很多倍。這個從圖1可以證實,它顯示了用CIFAR-10資料集達到25%訓練錯誤迭代次數需要4層卷積網路。這個影象說明我們以前不可能用傳統的飽和神經模型做這個實驗運用這麼大的神經網路。

我們不是第一個去考慮對傳統的CNN神經元模型做改變的人。比如說,Jarrett等人聲稱非線性函式f(x)=|tanh(x)|執行的特別好,運用他們對比正則化型別函式(type of contrast normalization),後面跟隨區域性平均池化(local average pooling)在Caltech-101資料集上。但是在這個資料集上最主要的擔心是避免過擬合,所以他們所注意的效果和我們運用ReLU時模型擬合訓練集的加速能力不一樣。更快的學習對一個從很大的資料集訓練來的大的模型的效果有很大的影響。

3.2 在多個GPU上訓練

單個GTX580 GPU僅有3GB的記憶儲存,這樣限制了神經網路能夠用它來訓練的大小。120萬訓練樣本可以去訓練對於GPU來說太大的網路。因此我們將網路展開到兩個GPU上。現在的GPU已經可以特別的適合於跨GPU(cross-GPU)平行計算,因為他們可以直接讀取和寫入另一個GPU的儲存中,不需要遍歷主機儲存。我們使用的並行組合本質上就是把一半的核(或神經元)到每個GPU上,用一個竅門:GPU旨在某幾個特定的層中交流。這意味著,例如,第3層的核把第2層中所有核的圖作為輸入。但是,第4層的核只把那些放在相同GPU的第3層的核的圖作為輸入。選擇連線的模式是一個交叉驗證問題,但是這個允許我們去準確的調整互動的數量直到它是一個計算上合意的分數。

合成的結構多少有些相似於Ciresan等人的“柱狀(columnar)”CNN,除此之外我們的“柱子”不是獨立的(見圖2)。這個組合與在一個GPU上訓練每個卷積層有一個網路的一半這麼多的核相比分別減少了我們第一和第五的錯誤率1.7%和1.2%(This scheme reduces our top-1 and top-5 error rates by 1.7% and 1.2%, respectively, as compared with a net with half as many kernels in each convolutional layer trained on one GPU.)。兩個GPU網路比一個GPU網路訓練時間短一點。