经典分类网络结构
學習目標
- 目標
- 知道LeNet-5網絡結構
- 了解經典的分類網絡結構
- 知道一些常見的卷機網絡結構的優化
- 知道NIN中1x1卷積原理以及作用
- 知道Inception的作用
- 了解卷積神經網絡學習過程內容
- 應用
- 無
下面我們主要以一些常見的網絡結構去解析,并介紹大部分的網絡的特點。這里看一下卷積的發展歷史圖。
?
3.3.1 LeNet-5解析
首先我們從一個稍微早一些的卷積網絡結構LeNet-5(這里稍微改了下名字),開始的目的是用來識別數字的。從前往后介紹完整的結構組成,并計算相關輸入和輸出。
3.3.1.1 網絡結構
?
- 激活層默認不畫網絡圖當中,這個網絡結構當時使用的是sigmoid和Tanh函數,還沒有出現Relu函數
- 將卷積、激活、池化視作一層,即使池化沒有參數
3.3.1.2 參數形狀總結
| ? | shape | size | parameters |
|---|---|---|---|
| Input | (32,32,3) | 3072 | 0 |
| Conv1(f=5,s=1) | (28,28,6) | 4704 | 450+6 |
| Pool1 | (14,14,6) | 1176 | 0 |
| Conv2(f=5,s=1) | (10,10,16) | 1600 | 2400+16 |
| Pool2 | (5,5,16) | 400 | 0 |
| FC3 | (120,1) | 120 | 48000+120 |
| FC4 | (84,1) | 84 | 10080+84 |
| Ouput:softmax | (10,1) | 10 | 840+10 |
- 中間的特征大小變化不宜過快
事實上,在過去很多年,許多機構或者學者都發布了各種各樣的網絡,其實去了解設計網絡最好的辦法就是去研究現有的網絡結構或者論文。大多數網絡設計出來是為了Image Net的比賽(解決ImageNet中的1000類圖像分類或定位問題),后來大家在各個業務上進行使用。
3.3.2 AlexNet
2012年,Alex Krizhevsky、Ilya Sutskever在多倫多大學Geoff Hinton的實驗室設計出了一個深層的卷積神經網絡AlexNet,奪得了2012年ImageNet LSVRC的冠軍,且準確率遠超第二名(top5錯誤率為15.3%,第二名為26.2%),引起了很大的轟動。AlexNet可以說是具有歷史意義的一個網絡結構。
?
- 總參數量:60M=6000萬,5層卷積+3層全連接
- 使用了非線性激活函數:ReLU
- 防止過擬合的方法:Dropout,數據擴充(Data augmentation)
- 批標準化層的使用
3.3.3 卷積網絡結構的優化
3.3.3.1 常見結構特點
整個過程:AlexNet—NIN—(VGG—GoogLeNet)—ResNet
- NIN:引入1 * 1卷積
- VGG,斬獲2014年分類第二(第一是GoogLeNet),定位任務第一。
- 參數量巨大,140M = 1.4億
- 19layers
- VGG 版本
- VGG16
- VGG19
?
- GoogleNet,2014年比賽冠軍的model,這個model證明了一件事:用更多的卷積,更深的層次可以得到更好的結構。(當然,它并沒有證明淺的層次不能達到這樣的效果)
- 500萬的參數量
- 22layers
- 引入了Inception模塊
- Inception V1
- Inception V2
- Inception V3
- Inception V4
?
- 下面我們將針對卷積網絡架構常用的一些結構進行詳細分析,來探究這些結構帶來的好處
3.3.4 Inception 結構
首先我們要說一下在Network in Network中引入的1 x 1卷積結構的相關作用
3.3.4.1MLP卷積(1 x 1卷積)
?
- 目的:提出了一種新的深度網絡結構,稱為“網絡中的網絡”(NIN),增強接受域內局部貼片的模型判別能力。
- 做法
- 對于傳統線性卷積核:采用線性濾波器,然后采用非線性激活。
- 提出MLP卷積取代傳統線性卷積核
- 作用或優點:
- 1、多個1x1的卷積核級聯加上配合激活函數,將feature map由多通道的線性組合變為非線性組合(信息整合),提高特征抽象能力(Multilayer Perceptron,縮寫MLP,就是一個多層神經網絡)
- 2、1x1的卷積核操作還可以實現卷積核通道數的降維和升維,實現參數的減小化
3.3.4.2 1 x 1卷積介紹
?
從圖中,看到1 x 1卷積的過程,那么這里先假設只有3個1x1Filter,那么最終結果還是56x56x3。但是每一個FIlter的三個參數的作用
- 看作是對三個通道進行了線性組合。
我們甚至可以把這幾個FIlter可以看成就是一個簡單的神經元結構,每個神經元參數數量與前面的通道數量相等。
- 通常在卷積之后會加入非線性激活函數,在這里之后加入激活函數,就可以理解成一個簡單的MLP網絡了。
?
3.3.4.3 通道數變化
那么對于1x1網絡對通道數的變化,其實并不是最重要的特點,因為畢竟3 x 3,5 x 5都可以帶來通道數的變化,
而1x1卷積的參數并不多,我們拿下面的例子來看。
?
- 保持通道數不變
- 提升通道數
- 減少通道數
3.3.4.4 Inception層
這個結構其實還有名字叫盜夢空間結構。
- 目的:
- 代替人手工去確定到底使用1x1,3x3,5x5還是是否需要max_pooling層,由網絡自動去尋找適合的結構。并且節省計算。
?
- 特點
- 是每一個卷積/池化最終結果的長、寬大小一致
- 特殊的池化層,需要增加padding,步長為1來使得輸出大小一致,并且選擇32的通道數
- 最終結果28 x 28 x 256
- 使用更少的參數,達到跟AlexNet或者VGG同樣類似的輸出結果
3.3.4.5 Inception改進
改進目的:減少計算,如5 x 5卷積那的運算量
?
?
- 上面的參數:5 x 5 x 32 x 192 =153600
- 下面的參數:192 x 16 + 5 x 5 x 16 x 32 = 3072 + 12800 = 15872
所以上面的結構會需要大量的計算,我們把這種改進的結構稱之為網絡的"瓶頸",網絡縮小后擴大。
那么這樣改變會影響網絡的性能和效果嗎?
GoogleNet就是如此,獲得了非常好的效果。所以合理的設計網絡當中的Inception結構能夠減少計算,實現更好的效果。
3.3.4.6 GoogleNet結構(了解)
其中包含了多個Inception結構。
?
完整結構:
?
3.3.5 卷積神經網絡學習特征可視化
我們肯定會有疑問真個深度的卷積網絡到底在學習什么?可以將網絡學習過程中產生的特征圖可視化出來,并且對比原圖來看看每一層都干了什么。
- 可視化案例使用的網絡
?
- 可視化結果
?
?
?
?
?
- layer1,layer2學習到的特征基本是顏色、邊緣等低層特征
- layer3學習到的特征,一些紋理特征,如網格紋理
- layer4學習到的特征會稍微復雜些,比如狗的頭部形狀
- layer5學習到的是完整一些的,比如關鍵性的區分特征
3.3.6 總結
- 掌握LeNet-5 結構計算
- 了解卷積常見網絡結構
- 掌握1x1卷積結構作用
- 掌握Inception結構作用
總結
- 上一篇: 卷积神经网络(CNN)原理
- 下一篇: CNN网络实战技巧