經典 CNN 模型整理 (02) - AlexNet
本篇為 AlexNet 的重點整理筆記
Sep 30, 2020
本系列將整理一些經典 CNN 模型的重點,目的是讓讀者和自己可以在最短的時間內回想起被遺忘的記憶,比較不熟悉的朋友也可以用重點去搭配論文幫助消化!
上一篇:LeNet
<ImageNet Classification with Deep Convolutional Neural Networks>
Krizhevsky et al., 2012.
作為 2012 年 ImageNet 競賽冠軍,且遠遠甩開亞軍(top5 錯誤率 15.3%,第二名 26.2%),再次掀起 CNN 熱潮,下面來看看 AlexNet 的一些特點和其使用的技巧:
- ReLU (Rectified Linear Units)-取代原先常用的飽和函數 tanh, sigmoid 提升了速度[如圖二],就現在來看也改善了梯度消失(Gradient Vanishing)的問題,並提升了訓練效果。
- 多 GPU 訓練-由於其使用的 GTX 580 只有 3GB 內存,他們將所有核(神經元)均分到兩張 GPU 中訓練。
- LRN (Local Response Normalization)-同一空間位置下除以其鄰近數個核圖 (kernel map)之平方和以通道方向進行疊加之值(同一座標下鄰近通道的加總),透過在 ReLU 後加上此步驟以達到局部抑制的作用。
- Overlapping Pooling-核大小 > 步長會有重疊效果,來避免過擬合,順帶一提這裡使用 Max pooling (LeNet 使用 Average pooling)。
- Data Augmentation-這裡從 256 x 256 的影像中隨機裁剪(crop)出 224 x 224 的影像並做水平翻轉,這樣數據集就變成 2048 (32 x 32 x 2) 倍;也透過 PCA 計算出特徵向量/值並透過高斯隨機變量改變顏色。
- Dropout-訓練時每次迭代中讓該隱藏層中的神經元節點以一定機率(在論文中 P = 0.5)被丟棄(值為 0),測試時則將所有節點保留並乘以 (1-p) (每個節點在訓練時平均有 (1-p) 的機率出現),用以避免過擬合,在論文中只使用於前兩個全連接層。
然而隨著深度學習領域持續發展,如今 LRN 和 Overlapping Pooling 基本上不再被使用,而 Dropout 也幾乎被 Batch Normalization 所取代。
感謝觀看,有任何問題歡迎留言討論或連繫我,祝有個愉快的一天😉