常見的網絡結構

隨着深度學習的普及開來,設計一個網絡結構變得愈來愈「簡單」,若是一個新的網絡只是簡單的卷積、池化、全鏈接,改改其中的參數,那就大錯特錯了。因此網絡在應用中,每每要面臨的問題是:如何設計一個好的網絡結構。html

目前常見的網絡結構:AlexNet、ZF、GoogLeNet、VGG、ResNet等等均可謂曾一戰成名,它們都具備自身的特性,它們都提出了創新點。設計一個優秀網絡的第一步是學習這些優秀的網絡。git

LeNet

是由Yann LeCun完成的具備開拓性的卷積神經網絡,是大量網絡結構的起點。網絡給出了卷積網絡的基本特性:github

1.局部感知。人對外界的認知是從局部到全局的,相鄰局部的像素聯繫較爲緊密。每一個神經元不必對全局圖像進行感知,只須要對局部進行感知,而後更高層將局部的信息綜合起來獲得全局的信息。網絡

2.多層卷積。層數越高,學到的特徵越全局化。架構

3.參數共享。每一個卷積都是一種提取特徵的方式,大大下降了參數的數目。ide

4.多卷積核。提取多類特徵,更爲豐富。函數

5.池化。下降向量維度,並避免過擬合。性能

特性1天然引出了特性2,特性3天然引出了特性4。學習

網絡用於mnist手寫體識別任務,網絡結構用 http://ethereon.github.io/netscope/#editor 查看,常見網絡:http://ethereon.github.io/netscope/quickstart.htmldown優化

AlexNet

2012年,深度學習崛起的元年,Alex Krizhevsky 發表了Alexet,它是比LeNet更深更寬的版本,並以顯著優點贏得了ImageNet競賽。貢獻有:

1.使用RELU做爲激活單元。

2.使用Dropout選擇性忽略單個神經元,避免過擬合。

3.選擇最大池化,避免平均池化的平均化效果。

AlexNet是目前應用極爲普遍的網絡,結構講解見:http://blog.csdn.net/sunbaigui/article/details/39938097down

網絡總體上給咱們帶來了三個結構模塊:

image

一、單層卷積的結構:conv-relu-LRN-pool。前面的卷積步長大,快速下降featureMap的大小(較少後面的計算量),後面深層卷積保持featureMap大小不變。LRN的功能放在今天來看是無關痛癢的,並非很強。

二、多層卷積的結構,網絡更深,特徵更抽象。

三、全鏈接的結構,drop避免過擬合。

CaffeNet

AlexNet網絡的變體,網絡結構的變更主要是調整了pool和norm的位置。 down

ZFNet

由 Matthew D Zeiler和Rob Fergus於2013年在「Visualizing and Understanding Convolutional Networks」論文中提出,屬於AlexNet網絡的變體。論文具備重要意義,闡述了卷積網絡爲何有效,ZF網絡是他們順帶提出來的。ZF在faster rcnn等應用中作爲特徵提取模塊被普遍應用,通常來說比AlexNet略優。

主要的改動是:減小第一層卷積的size和stride(11->七、4->2),提取更多的底層特徵,增長第二層卷積的步長stride(1->2)。從而取獲得了和AlexNei基本相同的感知野,featureMap的大小相同,後面的卷積計算量也保持不變。 

VGG

VGG-16又稱爲OxfordNet,是由牛津視覺幾何組(Visual Geometry Group)開發的卷積神經網絡結構。該網絡贏得了ILSVR(ImageNet)2014的冠軍。時至今日,VGG仍然被認爲是一個傑出的視覺模型——儘管它的性能實際上已經被後來的Inception和ResNet超過了。

網絡結構:http://ethereon.github.io/netscope/#/preset/vgg-16

1709146-203d21703e0c7ac9

咱們就看D(VGG16)和E(VGG19)好了。由於前面的網絡效果沒有D和E的效果好,並且比起D和E來說不夠簡潔。

VGG是把網絡分爲5組(模仿AlexNet的五層),然而它使用了3*3的過濾器,並把它們組合起來做爲一個卷積序列進行處理。特徵:

1.網絡更深DCNN,channel數目更大。

2.採用多個3*3的卷積,模仿出更大的感覺野的效果。這些思想也被用在了後續的網絡架構中,如 Inception 與 ResNet。

NIN

NIN中的MLPconv是對conv+relu的改進,conv+relu構建的是一個廣義線性模型。舉例子解釋:假設如今有一個3x3的輸入,用一個9維的向量x表明,卷積核大小也是3x3,也9維的向量w表明。

1.對於常規卷積層,直接x和w求卷積,而後relu一下就行了。
2.maxout,有k個的3x3的w(這裏的k是自由設定的),分別卷積獲得k個1x1的輸出,而後對這k個輸入求最大值
3.NIN,有k個3x3的w(這裏的k也是自由設定的),分別卷積獲得k個1x1的輸出,而後對它們都進行relu,而後再次對它們進行卷積,結果再relu。(這個過程,等效於一個1*1的卷積網絡

maxout想代表它可以擬合任何凸函數,也就可以擬合任何的激活函數;NIN想代表它不只可以擬合任何凸函數,並且可以擬合任何函數。

使用多層感知機這種微網絡結構後,能夠抽象出更好的局部特徵,增長局部模型的表達能力。基於MLPconv,在最後類別輸出時能夠不採用全鏈接操做,而是將特徵圖和類別之間創建一致性,採用全局平均池化的方法,每一個特徵圖的平均值即爲每一個類別的置信度。

例如:一共有100類,那麼在最後一層的輸出feature map則爲100,計算這100張feature map的平均值,做爲這100類的置信度。

NIN的優勢:

1.更好的局部抽象能力,這是MLPconv帶來的。
2.全局平均池化,不須要全鏈接的參數優化,避免過擬合。
3.參數更少,模型更小。

網絡結構見:http://ethereon.github.io/netscope/#/preset/nin

GoogLeNet

Christian Szegedy開始追求減小深度神經網絡的計算開銷,並於2014年設計出 GoogLeNet——第一個 Inception 架構。

「Going Deeper with Convolutions」中google提出了Inception模塊:

image

受NIN的啓發,Inception的思路是減小每一層的特徵過濾器的數目,從而減小運算量。用 1*1的卷積塊在昂貴的並行模塊以前減小特徵的數量,比 AlexNet 與 VGG 的分類器的運算數量少得多。這種作法通常稱爲瓶頸層(Bottleneck)。

並且,儘管咱們作了更好的運算,咱們在此層也沒有損失其通用性(generality)。事實證實瓶頸層在 ImageNet 這樣的數據集上已經表現出了頂尖水平,並且它也被用於接下來介紹的 ResNet 這樣的架構中。

它之因此成功是由於輸入特徵是相關聯的,所以可經過將它們與 1×1 卷積適當結合來減小冗餘。而後,在小數量的特徵進行卷積以後,它們能在下一層被再次擴展成有意義的結合。down

Inception

Christian 和他的團隊都是很是高產的研究人員。2015 年 2 月,Batch-normalized Inception 被引入做爲 Inception V2(論文:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift)。Batch-normalization 在一層的輸出上計算全部特徵映射的均值和標準差,而且使用這些值規範化它們的響應。所以使得全部神經圖(neural maps)在一樣範圍有響應,並且是零均值,這有助於訓練,還能重點關注如何最好的結合這些特徵。

2015 年 12 月,該團隊發佈 Inception 模塊和相似架構的一個新版本V3(論文:Rethinking the Inception Architecture for Computer Vision)。該論文更好地解釋了原始的 GoogLeNet 架構,在設計選擇上給出了更多的細節。

1.經過謹慎建築網絡,平衡深度與寬度,從而最大化進入網絡的信息流。
2.當深度增長時,網絡層的深度或者特徵的數量也系統性的增長。使用每一層深度增長在下一層以前增長特徵的結合。
3.只使用 3×3 的卷積,可能的狀況下給定的 5×5 和 7×7 過濾器能分紅多個 3×3。新的Inception結構爲:

image

 

也能夠經過將卷積平整進更多複雜的模塊中而分拆過濾器:將3*3拆分爲3*1和1*3的兩個過濾器。在進行 inception 計算的同時,Inception 模塊也能經過提供池化下降數據的大小。

ResNet

2015 年 12 月又出現了新的變革,這和 Inception V3 出現的時間同樣。ResNet 有着簡單的思路:供給兩個連續卷積層的輸出,並分流(bypassing)輸入進入下一層(論文:Deep Residual Learning for Image Recognition),在imagenet2015奪得冠軍。

計算機視覺領域,特徵隨着網絡加深而越發抽象,並且深層網絡也會帶來梯度彌散/爆炸等問題。並且在實踐中,深層網絡(很深)的性能會劣於淺層網絡,這反映了一個事實:非線性網絡沒法逼近恆等映射網絡(y=x)。因此咱們轉而去學習恆等映射的擾動。

ResNet要學習的即是殘差函數:F(x)=H(x)-x,殘差塊的結構是:

20160907100309_40

這是第一次網絡層數超過一百,甚至還能訓練出 1000 層的網絡。實際中,考慮計算的成本,對殘差塊作了計算優化,即將兩個3x3的卷積層替換爲1x1 + 3x3 + 1x1。

20160907100309_801

經過首先是由帶有更小輸出(一般是輸入的 1/4)的 1×1 卷積較少特徵的數量,而後使用一個 3×3 的層,再使用 1×1 的層處理更大量的特徵。相似於 Inception 模塊,這樣作能保證計算量低,同時提供豐富的特徵結合。

Inception V4

Inception V4 也結合了 Inception 模塊和 ResNet 模塊:

image

滿滿的啓發式應用,很難給出良好的解釋,考慮到網絡的間接性,ResNet就很不錯了。

相關文章
相關標籤/搜索