Alexnet論文筆記

前言

沒有多少看論文的經驗,也知道論文筆記非常重要。但是對於如何看和如何記錄沒有特別清晰的認識和了解,網上也找了很多相關的資料,但從看論文的思路到論文筆記的結構都因人而異各不相同。這是我第一篇論文筆記,方便查詢和供各位參閱和探討,裏面也包括了筆者對論文的一些個人意見。雖然各路說法不一,還是先嚐試再慢慢形成自己的套路,這是開端,是探索,筆者本着學習的態度完成這篇筆記,望一同學習和進步。

論文介紹

AlexNet就是由Hinton和他的兩位學生髮表的,該模型取得了ILSVRC2012冠軍,並在這之後掀起CNN研究的熱潮。
AlexNet 一開始在 ILSVARC-2010 數據集(帶標籤)上訓練,在 top-1 和 top-5 錯誤率分別取得 37.5% 和 17.0% 的成績,比以往的所有成績都高。該網絡使用了 60 million 參數和 650000 個神經元。模型使用非飽和神經元(ReLU)和應用GPU來加速訓練,在全連接層使用 dropout 方法來減輕過擬合。該模型在 ILSVAC-2012 (沒有標籤)比賽中取得第一名的成績, 15.3% 的 top-5 成績比第二名的 26.2% 要好得多,也因此讓深度學習開始被廣泛關注。

主要貢獻

  • 構建由 5 層卷積層和 3 層全連接層組成的深度網絡模型並在 ILSVARC-2012 取得第一;
  • 使用 GPU 進行二維卷積;
  • 使用了 ReLU線性神經元,進行並行的GPU計算,使用LRN(局部響應歸一化)以及重疊的池化等方法來提高網絡性能和縮小訓練時間;
  • 使用 Data Augmentation 和 Dropout 等方法來組織過擬合。

網絡結構

在這裏插入圖片描述

原文圖如上,使用了兩個GPU進行訓練,Ng將此網絡介紹如下:

在這裏插入圖片描述

網絡輸入圖像爲 224 X 224 X 3 。網絡順序如下:
input -> Conv1 (LRN) -> Pool1 -> Conv2 (LRN) -> Pool2 -> Conv3 -> Conv4 -> Conv5 -> Pool5 -> Fc6 (dropout) -> Fc6 (dropout) -> Fc7 (dropout) -> Fc8 -> 輸出 1000 類

其中 ReLU 在每個 Conv 和 Fc 的後面都設置有。

網絡細節可以參考附錄。

細節方法

ReLU

公式: f(x)=max(0,x)f(x)=max(0,x)
實驗證明使用4層卷積網絡,使用 ReLUs 達到 25% 訓練誤差的速度要比相同情況下使用 tanh 要快 6 倍。ReLU 加速了網絡的訓練。
筆者補充:
加速的原因可能因爲ReLU的線性,x>0 時梯度不衰減,緩解了梯度消失的問題,加速網絡收斂。
另外,ReLU簡單容易計算也是其另一個優點。
ReLU也要不好的地方,x<0 出現硬飽和,神經元輸出變爲0,梯度自然而然爲0,使得 ReLU神經元難以再更新,這也是“ReLU神經元死亡”問題,也叫“Dead ReLU Problem”,當然,有人說永久失活,私以爲死亡的ReLU神經元可能通過其他同層的未死亡的神經元對梯度的反向傳播來更新 W,更新的 W 重新讓已死亡的 ReLU 神經元激活。所以說永久失活應該是個概率問題,即大概率或者說長時間情況下死亡的 ReLU 神經元都會保持其“死亡”的狀態。
ReLU的輸出不是0均值分佈的,這可能會有一定的影響。

用 GPU 訓練

由於當時 GTX580 GPU 3GB顯存的限制,作者使用兩個 GPU 來進行並行訓練。

局部響應歸一化(LRN: Local Response Normalization)

公式如下圖所示
在這裏插入圖片描述
其中 bx,yib_{x,y}^i 表示第 i 個通道上位置爲 (x,y) 的值。其中 N 表示通道數,n 爲設定的維度之間的關聯範圍。 n,k,α,βn,k,\alpha,\beta 均爲自定義的,文章中設定 k=2,n=5,α=104,β=0.75k=2,n=5,\alpha=10^{-4},\beta=0.75。累加的方向爲維度(通道)方向。總結一下,LRN就是將某一元素與相鄰通道相同位置的其他元素相互抑制,公式裏體現在除法上。
作者將該層放在 ReLU 之後,使得 top-1 和 top-5 錯誤率分別下降 1.4% 和 1.2%。
筆者補充: LRN 參考了神經生物的“側抑制”。其指被激活的神經元抑制相鄰神經元。歸一化的目的就是“抑制”,而LRN 就是借鑑側抑制的思想來實現局部抑制的,據說在用 ReLU 時側抑制很管用,不過還沒有一些證明,後期讀到相關論文再來補充。
參考: https://blog.csdn.net/hduxiejun/article/details/70570086

重疊池化

作者使用大小爲3,步長爲2的池化方法。和大小爲2步長爲2的方法比,這個方法在 top-1 和 top-5 分別減少 0.4% 和 0.3% 的錯誤率,同時作者發現這個方法可以阻止過擬合。

數據增強(Data Augmentation)

兩種擴充數據的方法。

  • 其一,由於 ImageNet 數據集的圖片大小爲 256 X 256,作者需要進行裁剪到變長爲 224 的圖片。作者先遍歷原圖進行裁剪,再將原圖進行水平翻轉再進行裁剪,可以獲得((256224)+1)2×2=33×33×2=2178((256-224) + 1)^2 \times 2 = 33 \times 33 \times 2=2178 倍的數據集。論文裏說是2048,公式裏沒有加1,可能是漏了。預測的時候,對圖片進行五次裁剪(四個角和中心位置),並對5次的softmax輸出平均獲得結果。
  • 其二,fancy PCA 方法,另一種擴充數據的方法。論文沒說這個稱呼,但是網上都稱其爲 fancy PCA。首先對 RGB 三個通道計算PCA矩陣,在對於每個RGB圖像 Ixy=[IxyR,IxyG,IxyB]TI_xy = [I_{xy}^R, I_{xy}^G, I_{xy}^B]^T,增加如下項目: [P1,P2,P3][α1λ1,α2λ2,α3λ3]T[P_1,P_2,P_3] \centerdot [\alpha_1 \lambda_1,\alpha_2 \lambda_2,\alpha_3 \lambda_3]^T
    其中 PiP_iλi\lambda_i 分別是圖像三個通道的協方差矩陣的的第 ii 個特徵向量和特徵值,而 αi\alpha_i 是服從均值0標準差0.1的正太分佈的隨機量。論文中說這種方法可以近似捕捉自然圖像的一個重要性質,即物體的同一性對於光照的強度和顏色的變化是不變的。該方法使得 Top1 錯誤率降低1%。
Dropout

該方法就是使得全連接層的神經元以 50% 的概率隨機失活。作者認爲更利於學習更加魯棒且有用的特徵。
筆者補充: Ng對dropout有如下解釋

  • 正是因爲在每一層隨機的丟棄了一些單元,所以相當於訓練出來的網絡要比正常的網絡小的多,在一定程度上解釋了避免過擬合的問題。
  • 因爲每一個特徵都有可能被丟棄,所以整個網絡不會偏向於某一個特徵(把某特徵的權重的值賦的很大),會把每一個特徵的權重都賦的很小,這就有點類似於L2正則化了,能夠起到減輕過擬合的作用。
其他訓練細節
  • batchsize = 128, momentum = 0.9, weight decay = 0.0005;
  • 2,4,5卷積層和全連接層的偏置初始化爲1,其他卷積層偏置初始化爲0,權重初始化爲均值爲0標準差爲0.01的高斯分佈;
  • 學習率初始化0.01,如果驗證集的錯誤率不能改善就將學習率除以10,不過只進行3次這樣的操作就終止學習;
  • 兩塊NVIDIA GTX 580 3GB GPU 訓練了 90 個epoch,花費 5-6天。

實驗結果

在 ILSVRC-2010 上結果比當時的 best performance 要好很多,錯誤率如下圖:
在這裏插入圖片描述

在 ILSVRC-2012 結果如下圖:
在這裏插入圖片描述

其中,論文的模型在top-5中達到 18.2% 錯誤率。作者做了其他工作。使用5個類似結構的CNN預測並對結果取平均,獲得 16.4% 的結果;在CNN模型的最後一個池化層中添加第六個卷積層,事先訓練過整個 ImageNet 2011秋 的數據集,並在 ILSVRC-2012 上進行微調獲得 16.6% 的結果,將事先訓練的兩個CNN與前面說的 5 CNNs 模型的預測值取平均獲得 15.3% 的結果。

另外,作者還對 ImageNet 2009 數據集進行訓練,將其按訓練集測試集對半分。模型採用論文中的模型再加上第六個卷積層,在 top-1 和 top-5 上分別獲得 67.4% 和 40.9% 的錯誤率結果,也比當時最好的結果要好。

附錄:
在這裏插入圖片描述

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