1. 程式人生 > 實用技巧 >AlexNet論文(ImageNet Classification with Deep Convolutional Neural Networks)學習筆記

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

ImageNet Classification with Deep Convolutional Neural Networks學習筆記

第一個典型的CNN是LeNet5網路結構,但是第一個引起大家注意的網路卻是本論文所提出的AlexNet。這篇文章的AlexNet網路是在2012年的ImageNet競賽中取得冠軍的一個模型整理後發表的文章。作者是多倫多大學的Alex Krizhevsky等人。Alex Krizhevsky其實是Hinton的學生,這個團隊領導者是Hinton。

這個筆記是對論文《ImageNet Classification with Deep Convolutional Neural Networks》綜述論文的一些筆記。筆記嚴格文章的結構來做的。

論文地址: https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

同時提供一箇中英對應翻譯的連結: https://www.jianshu.com/p/ea922866e3be

  • 引言
  1. 論述了大規模的、真實的、高質量的影象資料集對物體識別的重要性。處理物體識別的解決方法: 更大規模的資料集 + 更強大的模型 + 更好的避免過擬合的技術。
  2. 現在已經有了大規模的資料集了, 如ImageNet、LabelMe等,而更強大的模型的話,可以使用神經網路,它有足夠大的學習容量去carry這樣規模的資料集。
  3. 但即便是ImageNet這樣的資料集, 其實對於複雜的物體識別問題而言,都是不夠的。因此, 一種方法是, 根據對問題的理解,將先驗知識揉合進模型中,如本文所使用的CNN網路就是這樣。CNN相比於全連線網路,它有更少的連線, 更少的引數, 更容易訓練,並且理論上效果與全連線網路相當。
  4. 雖然CNN有各種各樣的優點,但訓練仍然是一件困難的事情。當前的GPU,使得在ImageNet這樣大規模的資料集上部署CNN模型成為可能。
  5. 論文的主要貢獻:

1) 在ILSVRC-2012資料(ImageNet的一個子集)上取得了最好的成績.

2) 設計了AlexNet的神經網路,實現了高度優化的GPU並行部署的方案來訓練,同時還使用了RELU, LRN, 重疊的Pooling技術細節

3) 使用了資料增強、Dropout等技術方法來避免過擬合

  • 資料集
  1. ImageNet包含有1500萬帶人工標註的高清圖片, 大概有22000類別
  2. ILSVRC每年舉辦一次比賽,使用的資料集為: 從ImageNet中, 抽取1000個類別,每個類別大概1000張的圖片所構成的總數給為120萬圖片。
  3. 比賽使用的評價指標為: Top-1錯誤率 及 Top5錯誤率。
  4. 論文中對資料的處理: 原始資料集的大小不一, 通過縮放使每張圖片短邊的長度為256, 再對長邊擷取它最中心256長度的部分, 從而得到256x256的圖片。
  5. 對每張圖片的RGB通道進行白化處理,將每個RGB的畫素值轉化成零均值處理,避免過度曝光或低曝光的圖片的影響.
  • 神經網路架構
  1. ReLU非線性啟用函式

1) 傳統的飽和的啟用函式(如tanh, sigmoid函式)訓練時間過長, 根據實驗, 使用ReLU的方法可以極大的壓縮訓練的過程

2) 論文不是第1個考慮使用非飽和啟用函式的方法,如Jarrett就提出了非飽和的啟用函式f(x)=|tanh(x)|,但這兩種啟用函式的側重點不同,Jarrett它主要是為了避免過擬合,而ReLU主要是為了提速,以便於縮短大規模神經網路的訓練時間.

2.多卡並行訓練

1) 作者使用2塊GTX-580的GPU平行計算,並讓兩塊GPU僅在特定的層發生互動. 例如: 第3個卷積層每個filter使用了第2個卷積層的所有feature map, 而在第4層卷積層中只使用第3層卷積層上在同塊GPU上面的feature map.

2) 使用多卡並行訓練會造成交叉驗證比較困難, 但我們可以調整互動量,以達到在可接受的執行時間內完成訓練。

3) 與單卡訓練較小規模的網路的方式相比,多卡訓練更大規模的網路可以在Top1和Top5上,降低1.7%和1.2%的錯誤率。

3. 區域性響應歸一化(Local Response normalization)

1) 區域性響應的動機: 在神經生物學中, 有一個概念叫做側抑制,指被啟用的神經元抑制相鄰神經元的表達。

公式看起來很複雜,但其實解釋起來很簡單, 就是把與當前位置相鄰的,且處於同一位置上不同的值, 進行歸一化處理。思想就是,取出一些臨近的神經元, 做歸一化, 然後,不同神經元的相對大小的差距變得更大了(有些類似於softmax函式一樣),從而達到"側抑制"的效果。

2) 在AlexNet中, 只在第1層卷積層和第2個卷積層中使用, 具體的, 是在經過ReLU啟用函式之後使用.

3) 經過後期的不斷測試,研究人員(VGG網路)發現,這個LRN在其它網路中其實效果並不怎麼好,LRN並非CNN中必須包含的層,甚至有些網路加入LRN後效果反而降低,所以現在用LRN比較少了。

4) 卷積核矩陣的排序是隨機任意,並且在訓練之前就已經決定好順序。這種LPN形成了一種橫向抑制機制。

4. 重疊的Pooling方法

1) 傳統的池化層的方法是不重疊的,有些類似於網格一樣, 把每個特徵層劃分成z*z大小網路, 然後對網路內的元素進行處理.

2) 本文首先使用了重疊的Pooling方法, 將Top1和Top5錯誤率分別降低了0.4%和0.3%.

3) 相比於傳統的不重疊的Pooling, 使用重疊的Pooling方法, 更加不容易發生過擬合.

5. 完整的網路結構

上圖引自https://zhuanlan.zhihu.com/p/47391705, 同時,對網路的結構也有具體的描述,對此,不再進行贅述.

  • 減少過擬合
  1. 資料增強(保持標籤不變, 人工加大資料集)

1) 第1種資料增強方式包括產生影象變換和水平翻轉。從256×256影象上通過隨機提取224 × 224的影象塊然後在這些提取的影象塊上進行訓練。這樣子訓練集就增大了2048(2*(256-224)*(256-224)),雖然最終的訓練樣本是高度相關的。而在測試階段, 對每張圖片通過選取上下左右4個邊角位置以及最中間的位置得到5張圖片, 再對這5張圖片進行水平翻轉, 就得到10張測試集了。

2) 第2種資料增強的方式, 是通過改變訓練影象的RGB通道的強度論文通過求得每個畫素點的協方差矩陣(3*3),從而求得特徵值和特徵向量,然後在對特徵值進行一部分的波動,求出一個新的協方差矩陣,在加到原本的畫素上,從而實現一種濾鏡的效果。這種方法同樣也可以產生大量的新樣本。論文中解釋到該操作能夠獲取自然影象的重要資訊,具有亮度和光照不變性,能夠提高超過1%的識別率。

2. Dropout

1)對神經網路做整合是代價非常高的操作。Dropout方法也可以看作是一種整合, 但Only costs about a factor of two during training.

2)它會以0.5的概率對每個隱含層的神經元的輸出設為0, 這些失活的的神經元將不再進行前向傳播並且不參與反向傳播。

3)Dropout減少了複雜的神經元互適應,因為一個神經元不能依賴特定的其它神經元的存在。因此,神經元被強迫學習更魯棒的特徵,它在與許多不同的其它神經元的隨機子集結合時是有用的。

4)在測試時,使用所有的神經元但它們的輸出乘以0.5,對指數級的許多失活網路的預測分佈進行幾何平均,這是一種合理的近似。

後面省略…