【算法類】【算法介紹】deepCNNs之基於空間利用的模型:LeNet、AlexNet、VGG、GoogleNet(持續更新中)

本文介紹基於空間利用系列的CNN模型

1、LeNet

在這裏插入圖片描述
上圖爲LeNet的模型圖,也是我們經常從CNN中看到的模型架構圖,其主要包含3個卷積操作,2個池化操作,1個全連接操作

step1:卷積操作

輸入層:32 * 32
卷積核:5 * 5
步長:1 * 1
filter_map個數:6個
輸出大小:28 * 28 * 6

step2:池化操作

輸入層:28 * 28 * 6
池化大小:2 * 2
步長:2 * 2
輸出:14 * 14 * 6
解釋:這裏不是執行max_pooling操作,而是在2*2的窗口中,對每一個元素進行相加再乘以一個coefficient,得到的結果在加上一個bias,並輸入到sigmoid激活函數中得到輸出。output = sigmoid((s1 + s2 + s3 + s4) * coefficient + bias),si爲一個池化窗口中的4個元素。

step3:卷積操作

輸入層:14 * 14 * 6
卷積核:5 * 5
步長:1 * 1
filter_map個數:16個
輸出大小:10 * 10 * 16

step4:池化操作

輸入層:10 *10 * 16
池化大小:2 * 2
步長:2 * 2
輸出:5 * 5 * 16

step5:卷積操作

輸入層:5 * 5 * 16
卷積核:5 * 5
步長:1 * 1
filter_map個數:120個
輸出大小:1 * 1 * 120

step6:全連接層

輸入層:120。這裏其實是把上一層輸出向量進行一個平鋪,如果是多維,可以將他們進行排列起來得到一維向量。
全連接節點個數:84
激活函數:sigmoid

step7:輸出層:Gaussian連接

輸入:84
輸出節點:10(分類的個數)
gaussian連接的計算方式爲:
在這裏插入圖片描述
對於每一個輸出類別節點而言,其表示84個輸入節點和其所對應的參數的歐式距離

2、AlexNet

先貼張圖
在這裏插入圖片描述
這張圖是AlexNet的整體架構,可以看到,該架構包含6個卷積層,2個標準化層,3個最大池化層,3個全連接層。那它跟LeNet相比有哪些提升的地方呢。

激活函數選用Relu激活函數

Relu激活函數相較於sigmoid和tanh激活函數有着以下優點

  • 使用sigmoid激活函數時,計算量大,因爲從求導就可以看出,sigmoid涉及除法操作,f '( x) =f(x)(1 - f(x)) 。而Relu的導數在x小於0時爲0,在大於0時爲1,節省了很多運算步驟。
  • 在使用Relu作爲激活函數時,由於部分導數爲0,等同於加入了droupout,可以有效的減少過擬合的發生。
  • sigmoid函數由於兩端飽和,即在x無窮大和無窮小的時候,y趨近於不變。

局部響應歸一化

可以參考這篇博客深度學習的局部響應歸一化LRN(Local Response Normalization)理解。以下是公式
局部相應歸一化
這裏寫一下自己對局部相應歸一化的解釋:舉個例子,對於[512,32,32,16]的輸入,經過局部相應歸一化後結果還是[512,32,32,16]的維度,所以很好理解,這個公式是對圖像當中的每一個點進行處理後得到結果。公式中ai x,y表示圖像中的某一個點,例如[5,4,4,7],N表示通道數,這裏爲16。k,n,alpha,beta均爲自己設定。所以,這裏的求和爲在某一個通道上的n個點的相加的和,是通道方向上的求和。
那加入局部相應歸一化有什麼作用呢,引用一句話:對局部神經元的活動創建競爭機制,使得其中響應比較大的值變得相對更大,並抑制其他反饋較小的神經元,增強了模型的泛化能力。

droupout

加入了droupout,即使相應比例的神經元不參與計算,起到了防止過擬合的作用。由於AlexNet最後加入了許多的全連接層,使得網絡很容易過擬合。

重疊的最大池化

此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。並且AlexNet中提出讓步長比池化核的尺寸小,這樣池化層的輸出之間會有重疊和覆蓋,提升了特徵的豐富性。

3、VGG

3.1導讀

VGGNet是2014年ILSVRC競賽的第二名,沒錯你沒聽錯它是第二名,第一名是GoogLeNet(也就是後續要介紹的GoogLeNet,之所以L要大寫,是爲了紀念LeNet).爲什麼先講VGG,因爲它這個模型在多個遷移學習任務中的表現要優於googLeNet。而且,從圖像中提取CNN特徵,VGG模型是首選算法。它的缺點在於,參數量有140M之多,需要更大的存儲空間。但是這個模型很有研究價值。

3.2模型解讀

借用博客VGGNet模型解讀的模型圖
在這裏插入圖片描述
這裏共包括6個模型,其中後續模型均爲在前一個模型基礎上進行改進的模型,這些模型也均爲在AlexNet模型的基礎上進行改進的。

3.2.1模型概述

A模型:總共有11層

  • input:224 * 224 * 3的RGB圖片
  • stage1:64個3 * 3的卷積層,接着是一個maxpool層
  • stage2:128個3 * 3的卷積層,接着是一個maxpool層
  • stage3:256個3 * 3的卷積層,256個3 * 3的卷積層,接着是一個maxpool層
  • stage4:512個3 * 3的卷積層,512個3 * 3的卷積層,接着是一個maxpool層
  • stage5:512個3 * 3的卷積層,512個3 * 3的卷積層,接着是一個maxpool層
  • stage6:三個全連接層和一個softmax層,三個全連接層的節點數爲4096 * 4096 * 1000

A-LRN模型:總共有11層
區別:在stage2中保留AlexNet中的LRN

B模型:總共有13層
區別:在A的基礎上,在stage1中加入了64個3 * 3的卷積層,在stage2中加入了128個3 * 3的卷積層。

C模型:總共有13層
區別:在B的基礎上,在stage3上加入了256個1 * 1的卷積層,在stage4上加入了512個1 * 1 的卷積層,在stage5上加入了512個1 * 1的卷積層。

D模型:總共有13層
區別:在B的基礎上,在stage3上加入了256個3 * 3的卷積層,在stage4上加入了512個3 * 3 的卷積層,在stage5上加入了512個3 * 3的卷積層。

E模型:總共有13層
區別:在D的基礎上,在stage3上加入了256個3 * 3的卷積層,在stage4上加入了512個3 * 3 的卷積層,在stage5上加入了512個3 * 3的卷積層。

3.2.2 模型對比

  • A與A-LRN比較:A-LRN結果沒有A好,說明LRN作用不大。
  • A與B, C, D, E比較,A是這當中layer最少的,相比之下A效果不如B,C,D,E,說明Layer越深越好;
  • ·B與C比較:增加1x1filter,增加了額外的非線性提升效果;
  • C與D比較:3x3 的filter(結構D)比1x1(結構C)的效果好

3.3 VGG模型在AlexNet模型的改進之處

  • 使用層層的更小filter尺寸和間隔。
    引入cs231n上面一段話:
    幾個小濾波器卷積層的組合比一個大濾波器卷積層好:
    假設你一層一層地重疊了3個3x3的卷積層(層與層之間有非線性激活函數)。在這個排列下,第一個卷積層中的每個神經元都對輸入數據體有一個3x3的視野。
    第二個卷積層上的神經元對第一個卷積層有一個3x3的視野,也就是對輸入數據體有5x5的視野。同樣,在第三個卷積層上的神經元對第二個卷積層有3x3的視野,
    也就是對輸入數據體有7x7的視野。假設不採用這3個3x3的卷積層,二是使用一個單獨的有7x7的感受野的卷積層,那麼所有神經元的感受野也是7x7,但是就有一些缺點。
    首先,多個卷積層與非線性的激活層交替的結構,比單一卷積層的結構更能提取出深層的更好的特徵。其次,假設所有的數據有C個通道,那麼單獨的7x7卷積層將會包含
    77C=49C2個參數,而3個3x3的卷積層的組合僅有個3*(33C)=27C2個參數。直觀說來,最好選擇帶有小濾波器的卷積層組合,而不是用一個帶有大的濾波器的卷積層。前者可以表達出輸入數據中更多個強力特徵
    使用的參數也更少。唯一的不足是,在進行反向傳播時,中間的卷積層可能會導致佔用更多的內存
  • 在整個圖片和multi-scale上訓練和測試圖片。

3.4 個人理解

VGG模型更像是爲了獲得比賽名次而進行的調參方法,通過引入更多的層數,每層用更小的filter組合,可以提取深層的更好的特徵。

4、GoogLeNet

下面我們來介紹2014年ILSVRC競賽的第一名,先上個模型圖來大致的看下。(巨長無比)
在這裏插入圖片描述
巨長無比是不是,但是沒關係,我們發現其中一些結構都是相似的。
相似的結構可以歸納爲下圖(如b所示),我們稱之爲Inception
在這裏插入圖片描述
其實結構沒有什麼可說的,可以看到,模型在深度上要比VGG和AlexNet都要深,同時在寬度上有所增加。總結一下他的改進之處如下:

  • 採用模型化Inception。採用模塊化Inception的好處就是可以方便的插入刪除。通過多個卷積核提取圖像不同尺度的特徵,並進行融合,可以得到更好的特徵表示
  • average_pool代替全連接層。可以使精確率提高0.6%
  • 網絡採用了兩個輔助softmax。作用有兩點,一是爲了避免梯度消失,用於向前傳導梯度。反向傳播時如果有一層求導爲0,鏈式求導結果則爲0。二是將中間某一層輸出用作分類,起到模型融合作用。最後的loss=loss_2 + 0.3 * loss_1 + 0.3 * loss_0。實際測試時,這兩個輔助softmax分支會被去掉。

Inception後續

Inception V2:提出BN算法,這是一種標註化的算法,即將輸出數據進行相應處理,使得其加速收斂。
Inception V3:將卷積進行拆分,可以更好的提取特徵,例如將7*7的卷積拆分成兩個1 * 7 和 7 * 1的卷積。

參考

LeNet詳解
VGGNet模型解讀
深度網絡VGG理解

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