從Lenet 到incepetion-resnet v2

Lenet

  • LeNet 交替使用卷積層和最大池化層後接全連接層來進行圖片分類。
  • 相鄰兩個卷積層之間包含了一個2*2的maxpooling層

 

Alexnet

AlextNet 與 LeNet 的設計理念非常相似。但也有非常顯著的區別。

  1. 與相對較小的 LeNet 相比,AlexNet 包含 8 層變換,其中有五層卷積和兩層全連接隱含層,以及一個輸出層。
  2. 將 sigmoid 激活函數改成了更加簡單的 relu 函數 f(x)=max(x,0)f(x)=max(x,0)。它計算上更簡單,同時在不同的參數初始化方法下收斂更加穩定。
  3. 通過丟棄法來控制全連接層的模型複雜度。
  4. 引入了大量的圖片增廣,例如翻轉、裁剪和顏色變化,進一步擴大數據集來減小過擬合。

VGG網絡

VGG16結構圖

 

VGG19網絡結構圖

特點:

AlexNet 在 LeNet 的基礎上增加了三個卷積層。但作者對它們的卷積窗口、通道數和構造順序均做了大量的調整。VGG 模型的基礎組成規律是:連續使用數個相同的填充爲 1 的 3×33×3 卷積層後接上一個步幅爲 2 的 2×22×2 最大池化層。卷積層保持輸入高寬,而池化層則對其減半。每次我們將長寬減半,直到最後高寬變成 7 後進入全連接層。與此同時輸出通道數每次都翻倍。因爲每個卷積層的窗口大小一樣,所以每層的模型參數大小和計算複雜度跟 高 ×× 寬 ×× 輸入通道數 ×× 輸出通道數 成正比。VGG 這種高寬減半和通道翻倍的設計使得每個卷積層都有相同的模型參數大小和計算複雜度。

 

NIN(network in network)

我們看到 LeNet、AlexNet 和 VGG 均由兩個部分組成:以卷積層構成的模塊充分抽取空間特徵,然後以全連接層構成的模塊來輸出最終分類結果。AlexNet 和 VGG 對 LeNet 的改進主要在於如何加深加寬這兩個模塊。這一節我們介紹網絡中的網絡(NiN)。它提出了另外一個思路,即串聯多個由卷積層和“全連接”層構成的小網絡來構建一個深層網絡。

                                                                            å¯¹æ¯NiNï¼å³ï¼åå¶ä»ï¼å·¦ï¼ã

                                                                        其他網絡(左)NIN(右)

  • NiN 提供了兩個重要的設計思路:(1) 重複使用由卷積層和代替全連接層的 1×11×1 卷積層構成的基礎塊來構建深層網絡;(2) 去除了容易造成過擬合的全連接輸出層,而是替換成輸出通道數等於標籤類數的卷積層和全局平均池化層。
  • 雖然因爲精度和收斂速度等問題,NiN 並沒有像本章中介紹的其他網絡那麼被廣泛使用,但 NiN 的設計思想影響了後面的一系列網絡的設計
  • 這裏解釋下爲什麼NIN網絡需要兩個
  • image
  • 引自liuguochao

GoogleNet

Googlenet V1

Inception 裏有四個並行的線路。前三個線路里使用窗口大小分別是 1×1、3×3 和 5×5 的卷積層來抽取不同空間尺寸下的信息。其中中間兩個線路會對輸入先作用 1×11×1卷積來減小輸入通道數,以此降低模型複雜度。第四條線路則是使用 3×33×3 最大池化層,後接 1×11×1 卷積層來變換通道。四條線路都使用了合適的填充來使得輸入輸出高寬一致。最後我們將每條線路的輸出在通道維上合併,輸入到接下來的層中去。最後的輸出層用全局池化接上一個Dense層。

googlenet V2

Inception V2 學習了 VGG 用兩個3´3的卷積代替5´5的大卷積,在降低參數的同時建立了更多的非線性變換,使得 CNN 對特徵的學習能力更強

此外在V2網絡中進入了batch normalization解決內部協變量偏移情況導致的影響訓練速度的問題,通過減少內部協變量的偏移,也就是通過歸一化來將輸入的均值和方差固定,Batch Normalization也能通過減小梯度對參數和初始值的依賴,從而使得減少梯消失,梯度爆炸的問題,從而使得我們能夠用更快的學習率(原來使用太快的學習率就是怕不能收斂,梯度消失\爆炸)。不僅如此,Batch Normalization還對網絡進行了正則化處理,減小了對dropout的需要,還能使用飽和非線性防止網絡陷入飽和狀態。

googlenet V3

一是引入了 Factorization into small convolutions 的思想,將一個較大的二維卷積拆成兩個較小的一維卷積,比如將7´7卷積拆成1´7卷積和7´1卷積,或者將3´3卷積拆成1´3卷積和3´1卷積,如上圖所示。一方面節約了大量參數,加速運算並減輕了過擬合(比將7´7卷積拆成1´7卷積和7´1卷積,比拆成3個3´3卷積更節約參數),同時增加了一層非線性擴展模型表達能力。論文中指出,這種非對稱的卷積結構拆分,其結果比對稱地拆爲幾個相同的小卷積核效果更明顯,可以處理更多、更豐富的空間特徵,增加特徵多樣性。

另一方面,Inception V3 優化了 Inception Module 的結構,現在 Inception Module 有35*35、17*17和8*8三種不同結構。這些 Inception Module 只在網絡的後部出現,前部還是普通的卷積層。

googlenet V4

Figure 3 爲stem模塊,Figure 4 爲inceptionA 模塊,Figure 5 爲Reduction-A模塊,Figure 6 爲inception-B模塊,Figure 7爲Reduction-B模塊, Figure-8爲Incepetion-C模塊。

 

  • 1、在Inception v3的基礎上發明了Inception v4,v4比v3更加複雜
  • 2、結合ResNet與GoogLeNet,發明了Inception-ResNet-v1、Inception-ResNet-v2,其中Inception-ResNet-v2效果非常好,但相比ResNet,Inception-ResNet-v2的複雜度非常驚人,跟Inception v4差不多
  • 3、加入了Residual Connections以後,網絡的訓練速度加快了
  • 4、在網絡複雜度相近的情況下,Inception-ResNet-v2略優於Inception-v4
  • 5、Residual Connections貌似只能加速網絡收斂,真正提高網絡精度的是“更大的網絡規模

Incepetion-ResNet V1

Figure 14 爲stem模塊,Figure 10 爲Inception-ResNet-A 模塊,table 1 爲Reduction-A模塊,Figure 11 爲Inception-ResNet-B模塊,Figure 12爲Reduction-B模塊, Figure-13爲Incepetion-C模塊。

Inception-ResNet V2

 

Figure 3 爲stem模塊,Figure 16 爲Inception-ResNet-A 模塊,table 1 爲Reduction-A模塊,Figure 17 爲Inception-ResNet-B模塊,Figure 18爲Reduction-B模塊, Figure-19爲Incepetion-C模塊。

 

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