卷積神經網絡發展歷程

經典的LeNet誕生於1998年。然而之後CNN的鋒芒開始被SVM等手工設計的特徵蓋過。隨着ReLU和dropout的提出,以及GPU和大數據帶來的歷史機遇,CNN在2012年迎來了歷史突破–AlexNet,從此CNN呈現爆炸式發展。
從此,Deep Learning一發不可收拾,ILSVRC每年都不斷被Deep Learning刷榜,如圖所示,隨着模型變得越來越深,Top-5的錯誤率也越來越低,目前降到了2.25%附近(2017,SENet),而在同樣的ImageNet數據集合上,人眼的辨識錯誤率大概在5.1%,也就是目前的Deep Learning模型的識別能力已經超過了人眼。而下圖中的這些模型,也是Deep Learning視覺發展的里程碑式代表。

在這裏插入圖片描述

CNN主要的經典結構包括:LeNet、AlexNet、ZFNet、VGG、NIN、GoogleNet、ResNet、SENet等,最古老的CNN模型。1985年,Rumelhart和Hinton等人提出了反向傳播(Back Propagation,BP)算法(也有說1986年的,指的是他們另一篇paper:Learning representations by back-propagating errors),使得神經網絡的訓練變得簡單可行,目前還是比Cortes和Vapnic的Support-Vector Networks稍落後一點,不過以Deep Learning最近的發展勁頭來看,超越指日可待。

1、LeNet5
LeNet是卷積神經網絡的祖師爺LeCun在1998年提出,用於解決手寫數字識別的視覺任務。自那時起,CNN的最基本的架構就定下來了:卷積層、池化層、全連接層。如今各大深度學習框架中所使用的LeNet都是簡化改進過的LeNet-5(-5表示具有5個層),和原始的LeNet有些許不同,比如把激活函數改爲了現在很常用的ReLu。
1998年的LeNet5[4]標註着CNN的真正面世,但是這個模型在後來的一段時間並未能火起來,主要原因是費機器(計算跟不上),而且其他的算法(SVM)也能達到類似的效果甚至超過。但是LeNet最大的貢獻是:定義了CNN的基本結構,是CNN的鼻祖。
1)LeNet的結構:
LeNet5包含Input、卷積層1、池化層1、卷積層2、池化層2、全連接層、輸出層。
2)LeNet的特點
LeNet5當時的特性有如下幾點:
每個卷積層包含三個部分:卷積、池化和非線性激活函數使用卷積提取空間特徵(起初被稱爲感受野,未提“卷積”二字)降採樣(Subsample)的平均池化層(Average Pooling)雙曲正切(Tanh)的激活函數MLP作爲最後的分類器層與層之間的稀疏連接減少計算複雜性。
3)LeNet的突出貢獻
LeNet定義了CNN的基本結構,是CNN的鼻祖。

2.AlexNet
AlexNet在2012年ImageNet競賽中以超過第二名10.9個百分點的絕對優勢一舉奪冠,從此深度學習和卷積神經網絡名聲鵲起,深度學習的研究如雨後春筍般出現,AlexNet的出現可謂是卷積神經網絡的王者歸來。

1).AlexNet的結構
alexNet爲8層深度網絡,其中5層卷積層和3層全連接層,不計LRN層和池化層。如下圖所示:
在這裏插入圖片描述
2).AlexNet的特點
(1)ReLU作爲激活函數。
ReLU爲非飽和函數,論文中驗證其效果在較深的網絡超過了SIgmoid,成功解決了SIgmoid在網絡較深時的梯度彌散問題。
(2)Dropout避免模型過擬合
類似於淺層學習算法的中集成算法,該方法通過讓全連接層的神經元(該模型在前兩個全連接層引入Dropout)以一定的概率失去活性(比如0.5)失活的神經元不再參與前向和反向傳播,相當於約有一半的神經元不再起作用。在測試的時候,讓所有神經元的輸出乘0.5。Dropout的引用,有效緩解了模型的過擬合。
(3)重疊的最大池化
之前的CNN中普遍使用平均池化,而Alexnet全部使用最大池化,避免平均池化的模糊化效果。並且,池化的步長小於核尺寸,這樣使得池化層的輸出之間會有重疊和覆蓋,提升了特徵的豐富性。
(4)提出LRN層
提出LRN(局部響應歸一化)層,對局部神經元的活動創建競爭機制,使得響應較大的值變得相對更大,並抑制其他反饋較小的神經元,增強了模型的泛化能力。
(5)GPU加速
(6)數據增強
隨機從256256的原始圖像中截取224224大小的區域(以及水平翻轉的鏡像),相當於增強了(256-224)*(256-224)*2=2048倍的數據量。使用了數據增強後,減輕過擬合,提升泛化能力。避免因爲原始數據量的大小使得參數衆多的CNN陷入過擬閤中。
AlexNet的貢獻
AlexNet的貢獻也就是AlexNet的新特點:
(1)Relu做激活函數,代替Sigmoid來加快SGD的收斂速度
(2)dropout避免過擬合
(3)重疊最大池化 overlapping Max Pooling
(4)LRN(局部響應歸一化),利用臨近的數據做歸一化,加速訓練。
(5)GPU加速
(6)數據增強,增加模型泛化能力

3.ZF-Net
ZFNet是2013ImageNet分類任務的冠軍,其網絡結構沒什麼改進,只是調了調參,性能較Alex提升了不少。ZF-Net只是將AlexNet第一層卷積核由11變成7,步長由4變爲2,第3,4,5卷積層轉變爲384,384,256。這一年的ImageNet還是比較平靜的一屆,其冠軍ZF-Net的名堂也沒其他屆的經典網絡架構響亮。

4.VGG-Nets
VGG-Nets是由牛津大學VGG(Visual Geometry Group)提出,是2014年ImageNet競賽定位任務的第一名和分類任務的第二名的中的基礎網絡。VGG可以看成是加深版本的AlexNet. 都是conv layer + FC layer,在當時看來這是一個非常深的網絡了,因爲層數高達十多層,我們從其論文名字就知道了(《Very Deep Convolutional Networks for Large-Scale Visual Recognition》),當然以現在的目光看來VGG真的稱不上是一個very deep的網絡。VGGNet探索了CNN的深度及其性能之間的關係,通過反覆堆疊33的小型卷積核和22的最大池化層,VGGNet成功的構築了16-19層深的CNN。

5.GoogleNet
Googe Inception Net首次出現在ILSVRC2014的比賽中(和VGGNet同年),以較大的優勢獲得冠軍。那一屆的GoogleNet通常被稱爲Inception V1,Inception V1的特點是控制了計算量的參數量的同時,獲得了非常好的性能-top5錯誤率6.67%, 這主要歸功於GoogleNet中引入一個新的網絡結構Inception模塊,所以GoogleNet又被稱爲Inception V1(後面還有改進版V2、V3、V4)架構中有22層深,V1比VGGNet和AlexNet都深,但是它只有500萬的參數量,計算量也只有15億次浮點運算,在參數量和計算量下降的同時保證了準確率,可以說是非常優秀並且實用的模型。

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