上一篇回顧講的是2006年Hinton他們的Science Paper,當時提到,2006年雖然Deep Learning的概念被提出來了,可是學術界的你們仍是表示不服。當時有流傳的段子是Hinton的學生在臺上講paper時,臺下的機器學習大牛們不屑一顧,質問大家的東西有理論推導嗎?有數學基礎嗎?搞得過SVM之類嗎?回頭來看,就算是真的,大牛們也確實不算無理取鬧,是騾子是馬拉出來遛遛,不要光提個概念。git
時間終於到了2012年,Hinton的學生Alex Krizhevsky在寢室用GPU死磕了一個Deep Learning模型,一舉摘下了視覺領域競賽ILSVRC 2012的桂冠,在百萬量級的ImageNet數據集合上,效果大幅度超過傳統的方法,從傳統的70%多提高到80%多。我的以爲,當時最符合Hinton他們心境的歌非《我不作大哥好多年》莫屬。github
這個Deep Learning模型就是後來大名鼎鼎的AlexNet模型。這從天而降的AlexNet爲什麼能耐如此之大?有三個很重要的緣由:算法
- 大量數據,Deep Learning領域應該感謝李飛飛團隊搞出來如此大的標註數據集合ImageNet;
- GPU,這種高度並行的計算神器確實助了洪荒之力,沒有神器在手,Alex估計不敢搞太複雜的模型;
- 算法的改進,包括網絡變深、數據加強、ReLU、Dropout等,這個後面後詳細介紹。
今後,Deep Learning一發不可收拾,ILSVRC每一年都不斷被Deep Learning刷榜,如圖1所示,隨着模型變得愈來愈深,Top-5的錯誤率也愈來愈低,目前降到了3.5%附近,而在一樣的ImageNet數據集合上,人眼的辨識錯誤率大概在5.1%,也就是目前的Deep Learning模型的識別能力已經超過了人眼。而圖1中的這些模型,也是Deep Learning視覺發展的里程碑式表明。網絡
在仔細分析圖1中各模型結構以前咱們先須要瞭解一下深度學習三駕馬車之一————LeCun的LeNet網絡結構。爲什麼要提LeCun和LeNet,由於如今視覺上這些神器都是基於卷積神經網絡(CNN)的,而LeCun是CNN的祖師爺,LeNet是LeCun打造的CNN經典之做。app
LeNet以其做者名字LeCun命名,這種命名方式相似的還有AlexNet,後來又出現了以機構命名的網絡結構GoogLeNet、VGG,以核心算法命名的ResNet。LeNet有時也被稱做LeNet5或者LeNet-5,其中的5表明五層模型。不過別急,LeNet以前其實還有一個更古老的CNN模型。dom
1985年,Rumelhart和Hinton等人提出了後向傳播(Back Propagation,BP)算法[1](也有說1986年的,指的是他們另外一篇paper:Learning representations by back-propagating errors),使得神經網絡的訓練變得簡單可行,這篇文章在Google Scholar上的引用次數達到了19000屢次,目前仍是比Cortes和Vapnic的Support-Vector Networks稍落後一點,不過以Deep Learning最近的發展勁頭來看,超越指日可待。機器學習
幾年後,LeCun利用BP算法來訓練多層神經網絡用於識別手寫郵政編碼[2],這個工做就是CNN的開山之做,如圖2所示,多處用到了5*5的卷積核,但在這篇文章中LeCun只是說把5*5的相鄰區域做爲感覺野,並未說起卷積或卷積神經網絡。關於CNN最原始的雛形感興趣的讀者也能夠關注一下文獻[10]。函數
1998年的LeNet5[4]標註着CNN的真正面世,可是這個模型在後來的一段時間並未能火起來,主要緣由是費機器(當時苦逼的沒有GPU啊),並且其餘的算法(SVM,老實說是你乾的吧?)也能達到相似的效果甚至超過。性能
初學者也能夠參考一下Caffe中的配置文件:
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt學習
LeNet主要是用於識別10個手寫數字的,固然,只要稍加改造也能用在ImageNet數據集上,但效果較差。而本文要介紹的後續模型都是ILSVRC競賽歷年的佼佼者,這裏具體比較AlexNet、VGG、GoogLeNet、ResNet四個模型。如表1所示。
模型名 | AlexNet | VGG | GoogLeNet | ResNet |
---|---|---|---|---|
初入江湖 | 2012 | 2014 | 2014 | 2015 |
層數 | 8 | 19 | 22 | 152 |
Top-5錯誤 | 16.4% | 7.3% | 6.7% | 3.57% |
Data Augmentation | + | + | + | + |
Inception(NIN) | – | – | + | – |
卷積層數 | 5 | 16 | 21 | 151 |
卷積核大小 | 11,5,3 | 3 | 7,1,3,5 | 7,1,3,5 |
全鏈接層數 | 3 | 3 | 1 | 1 |
全鏈接層大小 | 4096,4096,1000 | 4096,4096,1000 | 1000 | 1000 |
Dropout | + | + | + | + |
Local Response Normalization | + | – | + | – |
Batch Normalization | – | – | – | + |
接下里直接上圖便可,AlexNet結構圖以下:
換個視角:
AlexNet相比傳統的CNN(好比LeNet)有哪些重要改動呢:
(1) Data Augmentation
數據加強,這個參考李飛飛老師的cs231課程是最好了。經常使用的數據加強方法有:
- 水平翻轉
- 隨機裁剪、平移變換
- 顏色、光照變換
(2) Dropout
Dropout方法和數據加強同樣,都是防止過擬合的。Dropout應該算是AlexNet中一個很大的創新,以致於Hinton在後來很長一段時間裏的Talk都拿Dropout說事,後來還出來了一些變種,好比DropConnect等。
(3) ReLU激活函數
用ReLU代替了傳統的Tanh或者Logistic。好處有:
- ReLU本質上是分段線性模型,前向計算很是簡單,無需指數之類操做;
- ReLU的偏導也很簡單,反向傳播梯度,無需指數或者除法之類操做;
- ReLU不容易發生梯度發散問題,Tanh和Logistic激活函數在兩端的時候導數容易趨近於零,多級連乘後梯度更加約等於0;
- ReLU關閉了右邊,從而會使得不少的隱層輸出爲0,即網絡變得稀疏,起到了相似L1的正則化做用,能夠在必定程度上緩解過擬合。
固然,ReLU也是有缺點的,好比左邊所有關了很容易致使某些隱藏節點永無翻身之日,因此後來又出現pReLU、random ReLU等改進,並且ReLU會很容易改變數據的分佈,所以ReLU後加Batch Normalization也是經常使用的改進的方法。
(4) Local Response Normalization
Local Response Normalization要硬翻譯的話是局部響應歸一化,簡稱LRN,實際就是利用臨近的數據作歸一化。這個策略貢獻了1.2%的Top-5錯誤率。
(5) Overlapping Pooling
Overlapping的意思是有重疊,即Pooling的步長比Pooling Kernel的對應邊要小。這個策略貢獻了0.3%的Top-5錯誤率。
(6) 多GPU並行
這個很少說,比一臂之力還大的洪荒之力。
VGG結構圖
換個視角看看VGG-19:
VGG很好地繼承了AlexNet的衣鉢,一個字:深,兩個字:更深。
GoogLeNet依然是:沒有最深,只有更深。
主要的創新在於他的Inception,這是一種網中網(Network In Network)的結構,即原來的結點也是一個網絡。Inception一直在不斷髮展,目前已經V二、V三、V4了,感興趣的同窗能夠查閱相關資料。Inception的結構如圖9所示,其中1*1卷積主要用來降維,用了Inception以後整個網絡結構的寬度和深度均可擴大,可以帶來2-3倍的性能提高。
網絡結構如圖10所示。
ResNet依然是:沒有最深,只有更深(152層)。據說目前層數已突破一千。
主要的創新在殘差網絡,如圖11所示,其實這個網絡的提出本質上仍是要解決層次比較深的時候沒法訓練的問題。這種借鑑了Highway Network思想的網絡至關於旁邊專門開個通道使得輸入能夠直達輸出,而優化的目標由原來的擬合輸出H(x)變成輸出和輸入的差H(x)-x,其中H(X)是某一層原始的的指望映射輸出,x是輸入。
Deep Learning一路走來,你們也慢慢意識到模型自己結構是Deep Learning研究的重中之重,而本文回顧的LeNet、AlexNet、GoogLeNet、VGG、ResNet又是經典中的經典。
隨着2012年AlexNet的一鳴驚人,CNN成了計算機視覺應用中的不二選擇。目前,CNN又有了不少其餘花樣,好比R-CNN系列,詳情敬請期待我愛機器學習網站(52ml.net)的#Deep Learning回顧#下一期。
本文只是簡單回顧,疏漏之處敬請諒解,感興趣的能夠加QQ羣一塊兒學習:252085834
[參考文獻][1] DE Rumelhart, GE Hinton, RJ Williams, Learning internal representations by error propagation. 1985 – DTIC Document.[2] Y. LeCun , B. Boser , J. S. Denker , D. Henderson , R. E. Howard , W. Hubbard and L. D. Jackel, 「Backpropagation applied to handwritten zip code recognition」, Neural Computation, vol. 1, no. 4, pp. 541-551, 1989.[3] Kaiming He, Deep Residual Learning, http://image-net.org/challenges/talks/ilsvrc2015_deep_residual_learning_kaiminghe.pdf[4] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11):2278–2324, 1998.[5] A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25, pages 1106–1114, 2012.[6] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott E. Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich: Going deeper with convolutions. CVPR 2015: 1-9[7] Karen Simonyan, Andrew Zisserman: Very Deep Convolutional Networks for Large-Scale Image Recognition. CoRR abs/1409.1556 (2014)[8] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep Residual Learning for Image Recognition. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016[9] 一些對應的caffe實現或預訓練好的模型: https://github.com/BVLC/caffe https://github.com/BVLC/caffe/wiki/Model-Zoo[10] K. Fukushima. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4): 93-202, 1980.