ImageNet Classification with Deep Convolutional Neural Networks (2012)
內容目錄
一.abstract
說到深度學習的重大突破就不得不了解這曠世鉅作-Alexnet,現今深度學習的許多技巧在此篇著作中還是可以看到,說明此篇論文對後世影響廣大阿。這CNN架構是模仿著當時很有名的Lenet做修改,隨後在ILSVRC-2010競賽中嶄露頭角,當時最好的成績也不過是錯誤率Top1-45%,Top5-25.7%,與第二名也才差個兩個百分比,可是Alexnet一下就名列前茅且錯誤率達到Top1-37.5%,Top5-17%,一下子就超越七八個百分比,且論文中提及因為運算資源的關係(GPU 只有3GB記憶體)所以網路只能設計這麼大,說明還有很大的進步空間阿,幾年後果不其然,出現了甚至低於人類辨識率的網路,說明CNN的強大阿。本篇論文提出非常多的構想,包括relu、lrn、dropout,以及最重要的概念-加深網路深度可以讓辨識率提高
二.main idea
a.relu nonlinearity
在Alexnet之前,大部分的網路都是採用tanh(x)當作激活函數,但alex從hinton的論文當中發現了relu函數可以使得訓練速度更快,因此便把這個技術引進CNN中,成為現在家喻戶曉的relu函數
Hinton relu 起源:rectified linear units improve restricted boltzmann machines
b.local response normalization
lrn起源是來自神經學中的later-inhibition,主要講述的是發出的神經元訊號會抑制周圍的神經元訊號,這也是我們人類會在某些圖片中擁有錯覺的主要原因,具體可以參考下面連結。文中說明可以使得top-1、top-5錯誤率下降1.4%、1.2%,在cifar-10資料庫中也可以下降2%,不過參考多篇論文心得後發現後續研究者證明這技巧並沒什麼功效。
http://linfengwei.pixnet.net/blog/post/10515788-lateral-inhibition(側抑制)
https://prateekvjoshi.com/2016/04/05/what-is-local-response-normalization-in-convolutional-neural-networks/
c.overlapping pooling
正常的pool層都是stride=n,kernel_size=n,這樣就都不會有重複到的地方,而overlapping pooling就是stride<kernel size的意思,這裡作者設k=3,s=2,作者與k=2,s=2的卷積網路比較發現可以降低top-1:0.4%,top-5:0.3%,不過後來也證實這沒什麼用處。
d.data augmentation
法一:
將訓練圖片放大成256*256,然後隨機crop出224 * 224的圖片,論文稱說這樣可以讓圖片增加2048倍,並說明沒有做這個步驟的話模型會很容易over-fitting。在測試階段的時候分別取圖片的四個角落以及中間和它們的翻轉圖片(共10張)當成測試資料。
法二:利用PCA的方法求出所有訓練圖片的principal components,然後再對原圖片加上剛剛求出的值,這方法文中闡述可以使得top-1錯誤率減少1%
e.dropout
同樣是引用自Hinton大師的論文中,dropout通常用在全連接層中,沒有用dropout的模型在訓練的時候很容易over-fitting,雖然可以減少over-fitting的情況但也代表著要比平常的網路訓練更久,文中敘述是兩倍。
- Dropout 起源:
Hinton, Geoffrey E., et al. “Improving neural networks by preventing co-adaptation of feature detectors.” arXiv preprint arXiv:1207.0580 (2012).
f.learning procedure
用了weight decay以及momemtum的概念來更新權重,文中稱不只減少了over-fitting還減少了錯誤率。
三.structure
本來以為Alexnet是什麼特殊的結構可以分成上下兩層去訓練,看完論文後才知道其實這網路弄成一層的架構也可以,會分成上下兩層的原因是因為記憶體不夠所以要分別在兩塊GPU上訓練。
- 網路上有人整理出更仔細的網路架構如下:
四.result
五.reference:
1.http://hacker.duanshishi.com/?p=1661
2.https://read01.com/zh-tw/2e5mR4.html#.We6lBVuCzcs
3.https://www.zybuluo.com/coolwyj/note/202469#3-lrn
4.http://blog.csdn.net/sunbaigui/article/details/39938097
5.http://blog.csdn.net/qq_31531635/article/details/71024115#优缺点及其发展
6.http://hacker.duanshishi.com/?p=1661
code:
1.https://github.com/tensorflow/models/blob/master/tutorials/image/alexnet/alexnet_benchmark.py
2.https://github.com/kratzert/finetune_alexnet_with_tensorflow/blob/master/alexnet.py
3.https://github.com/dontfollowmeimcrazy/imagenet