論文筆記:ImageNet Classification with Deep Convolutional Neural Networks(AlexNet)

一、基本信息

標題:ImageNet Classification with Deep Convolutional Neural Networks
時間:2012
出版源:Neural Information Processing Systems (NIPS)
論文領域:深度學習,計算機視覺
引用格式:Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems. 2012: 1097-1105.
鏈接:http://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networ

二、研究背景

  • 數據集:出現imageNet這樣的大數據集,可以用來訓練更復雜的模型 。
  • CNN:而CNNs它們的能力可以通過改變深度和廣度來控制,它們還對圖像的本質(即統計的平穩性和像素依賴性的局部性)做出了強有力且基本正確的假設。與具有類似大小層的標準前饋神經網絡相比,CNNs具有更少的連接和參數,因此更容易訓練,而其理論上最好的性能可能只會稍微差一些。
  • GPU: GPU和卷積操作結合,使得訓練大型CNN網絡成爲可能

三、創新點

貢獻點:

  1. 對ImageNet的子集進行了迄今爲止最大的卷積神經網絡訓練,並取得了最好效果
  2. 開高度優化GPU實現2D卷積方法,後面提到網絡在2塊GPU並行
  3. 網絡包含很多新的不尋常特徵
  4. 防止過擬合
    我們最終的網絡包含5個卷積層和3個全連接層,這個深度似乎很重要:我們發現去掉任何卷積層(每個卷積層包含的model s參數不超過1%)都會導致性能下降。

ReLU激活

在這裏插入圖片描述
圖1:使用ReLUs(實線)的四層卷積神經網絡在CIFAR-10上達到25%的訓練錯誤率,比使用tanh神經元(虛線)的同等網絡快六倍。每個網絡的學習率都是獨立選擇的,以使訓練儘可能快。沒有任何形式的正規化。這裏演示的效果的大小隨網絡結構的不同而不同,但是使用ReLUs的網絡始終比使用飽和神經元的網絡學習速度快幾倍。

Local Response Normalization 局部響應歸一化

bx,yi=ax,yi/(k+αj=max(0,in/2)min(N1,i+n/2)(ax,yj)2)βb_{x, y}^{i}=a_{x, y}^{i} /\left(k+\alpha \sum_{j=\max (0, i-n / 2)}^{\min (N-1, i+n / 2)}\left(a_{x, y}^{j}\right)^{2}\right)^{\beta}
此方案有助於泛化,CNN在未歸一化的情況下,測試錯誤率爲13%;在歸一化的情況下,測試錯誤率爲11%。
參考這篇文章吧 深入理解AlexNet網絡,大致意思就是當今kernel的map的(x, y)像素位置在周圍鄰居相同kernel的map的(x, y)像素。也就是上面式子中的 a(x,y)ja_{(x, y)}^{j} 。然後把這些鄰居pixel的值平方再加和。乘以一個係數 α\alpha 再加上一個常數k, 然後 β\beta 次冥, 就是分母,分子 就是第次kernel對應的map的(x, y)位置的pixel值。關鍵是參數 α,β,k\alpha, \beta, k 如何確定, 論文中說在驗證集中確定, 最終確定的結果爲:
k=2,n=5,α=104,β=0.75k=2, n=5, \alpha=10^{-4}, \beta=0.75
在這裏插入圖片描述

Overlapping Pooling 重疊池化

初步理解:假如池化單元爲zxz

  • 步長s = z,就是傳統的池化
  • 步長s < z,就是重疊池化
    作者提到當s = 2 z = 3時,對比s = z = 2,錯誤率減少了0.4%(top-1) 和 0.3%(top-5)
    使用重疊池化可以減少過擬合

網絡架構

在這裏插入圖片描述
一共8層,前5層是卷積層,後3層是全連接層:

  • 卷積層除了第3層,其餘卷積層直接連接在同GPU上。第3層會連接第2層所有輸出。
  • 局部響應規範化(Local Response Normalization)層在第1層和第2層卷積層後。
  • 最大池化層在響應規範化層(第1層和第2層卷積)和第5層卷積後。
  • ReLU非線性激活函數應用在每個卷積和全連接層。

卷積輸出計算公式,具體看這裏
設圖像大小:n*n, 步長:s,卷積核大小:f,padding:p
(n+2pfs+1)(n+2pfs+1)\left(\frac{n+2 p-f}{s}+1\right) *\left(\frac{n+2 p-f}{s}+1\right)

在這裏插入圖片描述
具體參數:
輸入圖片爲224x224x3。

  • 第1層卷積:
    卷積
    在這裏插入圖片描述
    輸入:224x224x3
    卷積核大小:11 * 11 *3 步長:4(這個是11x11核的中心視野) 數目:48 * 2 = 96
    輸出:55 * 55 * 48 * 2
    (輸出爲55 * 55:(224 - 11)/4 +1 = 54.25,取了上整55,48個特徵map,因爲有2個GPU,所以總的特徵map數量是48 * 2)
    ReLu激活
    池化層
    核大小:3 * 3 * 1 步長:2
    輸出:27 * 27 * 48 * 2
    (輸出爲27 * 27 :(55 - 3) / 2 + 1 = 27)
    標準化
    【注】圖上的結果沒有進行池化

  • 第2層卷積:
    在這裏插入圖片描述
    卷積
    輸入:27 * 27 * 48 * 2 擴展2個像素:31 * 31 * 48 * 2
    卷積核大小:5 * 5 * 48 步長:1 數目:128 * 2 = 256(還需要連接局部響應規範化層和池化層)
    輸出:27 * 27 * 128 * 2
    (輸出爲27 * 27:31 - 5 + 1 = 27,128個特徵map,因爲有2個GPU,所以總的特徵map數量是128 * 2)
    ReLu激活
    池化層
    核大小:3 * 3 * 1 步長:2
    輸出:13 * 13 * 128 * 2
    (輸出爲13* 13:(27 - 3) / 2 + 1 = 13)
    標準化

  • 第3層卷積(這層卷積核結合了2個GPU):
    在這裏插入圖片描述
    卷積
    輸入:13 * 13 * 128 * 2 擴展1個像素:15 * 15 * 128 * 2
    卷積核大小:3 * 3 * 256(GPU1:128 + GPU2:128) 步長:1 數目:192 * 2 = 384
    輸出:13 * 13 * 192 * 2
    (輸出爲13 * 13:15 - 3 +1 = 13 192個特徵map,因爲有2個GPU,所以總的特徵map數量是192 * 2)
    ReLu激活

  • 第4層卷積:
    ![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200531194815463.png
    卷積
    輸入:13 * 13 * 192 * 2 擴展1個像素:15 * 15 * 192 * 2
    卷積核大小:3 * 3 * 192 步長:1 數目:192 * 2 = 384
    輸出:13 * 13 * 192 * 2
    (輸出爲13 * 13:15 - 3 +1 = 13 192個特徵map,因爲有2個GPU,所以總的特徵map數量是192 * 2)
    ReLu激活

  • 第5層卷積:
    在這裏插入圖片描述
    卷積
    輸入:13 * 13 * 192 * 2 擴展1個像素:15 * 15 * 192 * 2
    卷積核大小:3 * 3 * 192 步長:1 數目:128 * 2 = 256
    輸出:13 * 13 * 128 * 2
    (輸出爲13 * 13:15 - 3 +1 = 13 128個特徵map,因爲有2個GPU,所以總的特徵map數量是128 * 2)
    ReLu激活
    池化層
    核大小:3 * 3 * 1 步長:2
    輸出:6 * 6 * 128 * 2
    (輸出爲6* 6:(13 - 3) / 2 + 1 = 6)

  • 第6層全連接
    在這裏插入圖片描述
    輸入:6 * 6 * 128 * 2
    輸出:2048*2個神經元
    Dropout

  • 第7層全連接
    在這裏插入圖片描述
    輸入:20482個神經元
    輸出:2048
    2個神經元
    Dropout

  • 第8層全連接
    在這裏插入圖片描述
    輸入:2048*2個神經元
    輸出:1000個神經元

防止過擬合

增加數據

就是對圖片進行裝換,又很簡單可以運行時在裝換且在cpu上執行,作者認爲這個是個free操作。

  1. 圖像平移和翻轉,具體做法:從256 * 256圖片中4個角點和中心點取5個,以及它們的水平翻轉 5個,一共10個圖進行訓練。
  2. 改變RGB顏色,使用PCA分解 [p1,p2,p3][α1λ1,α2λ2,α3λ3]T\left[\mathbf{p}_{1}, \mathbf{p}_{2}, \mathbf{p}_{3}\right]\left[\alpha_{1} \lambda_{1}, \alpha_{2} \lambda_{2}, \alpha_{3} \lambda_{3}\right]^{T} α\alpha爲高斯分佈產生。這種方式模擬自然特性,因此可以做到光照不變性。

Dropout

這部分之前總結過:每週學習新知識1:深度學習中的Dropout

四、實驗結果

在這裏插入圖片描述

五、結論與思考

作者結論

值得注意的是,如果去掉一個卷積層,我們的網絡性能就會下降。例如,刪除任何中間層都會導致網絡的頂級性能損失約2%。所以深度對於我們取得的成果非常重要。
最後,我們希望在視頻序列中使用非常大且深的卷積網絡,其中時間結構提供了非常有用的信息,而這些信息在靜態圖像中是不存在的或不太明顯的。

總結

這篇論文爲後續深度學習打下了基礎。

思考

深度指卷積層的深度還是全連接層的深度

參考

深入理解AlexNet網絡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章