InceptionV1/GoogLeNet

Paper : Going deeper with convolutions
Code : torchvision

概要

GoogLeNet 的核心思想其實與之後的ResNet有一定的相關性,都是在嘗試解決梯度爆炸/梯度消失的問題,只不過ResNet採用了更加激進的方式。GoogLeNet 嘗試在網絡深度與參數規模達到一種平衡,採用的方法相對來說比較trick,GoogLeNet引入了對於同一層輸入使用不同大小的卷積核進行特徵提取的觀點。

網絡結構

更深的網絡可以帶來更好的表現,因此加深加寬網絡結構是發展的趨勢,但是更深的網絡會帶來以下幾個問題

  1. 參數規模增大,難以訓練
  2. 參數規模增大,更容易帶來過擬合問題
  3. 梯度爆炸/梯度消失

因此,GooLeNet 提出了兩個有意思的結構:Inception Module和輔助分類器。Inception Module具有一定的可取之處,而在這篇論文作者認爲輔助分類器的作用是協助梯度的反向傳播,加快收斂速度,但是在不久以後就被證實輔助分類器的真實作用是正則化,因此之後就沒什麼人去研究輔助分類器了。

Inception Module 的初始版本如下
image.png

既然深度增大可能會導致梯度爆炸/梯度消失的問題,那麼控制網絡的最大深度即可。而我們又希望輸入可以經過更多的、不同的卷積層與池化層,提取出更多有用的特徵,因此設計出來的結構如上。有以下幾個特點

  1. MaxPool層並不是用於縮小輸入數據的長寬,它的步長爲1。
  2. 1*1的卷積核的作用原文並沒有特別說明,可能是爲了提高channel。

    We assume that each unit from the earlier layer corresponds to some region of the input image and these units are grouped into filter banks. In the lower layers (the ones close to the input) correlated units would concentrate in local regions. This means, we would end up with a lot of clusters concentrated in a single region and they can be covered by a layer of 1×1 convolutions in the next layer, as
    suggested in [12]

  3. filter concatenation 是指卷積後的四個輸出在channel維度上進行連接,不妨設輸出爲 (batch, channel_x, width, height),那麼連接之後的輸出爲 (batch, channel_1 + channel_2 + channel_3 + channel_4, width, height)。
  4. 在一個或幾個inception module 連接之後再連接MaxPool + ReLU 縮小長寬。

以上的結構雖然理論可行,但是存在以下的問題:對於卷積層來說,5*5的卷積核帶來的參數規模和訓練過程中的計算量實在是太大了,參數規模大致爲 in_channel*filter_height*filter_width*out_channel,因此如果我們可以在經過大的卷積核之前將in_channel儘可能降低,那麼計算量和參數規模將會大大下降。Inception Module V2 如下所示
image.png

這裏,1*1的卷積核作用就是在經過卷積層之前降低channel,減少參數規模。這樣做的前提是即使channel的個數很低,輸出也可以包含足夠的信息。這是因爲MaxPool是一種信息損失很大的操作,而大多數神經網絡在經過多次MaxPool之後仍能有較好的表現,這說明對於每層的輸出而言,有效信息較少,冗餘性較高。這種觀點其實在之後的Pyramidal Net中也可以有所體現。GoogLeNet的總體結構如下

image.png

接下來簡要談一下輔助分類器,輔助分類器長成這個樣子

image.png

其中黃色代表softmax層,每個softmax都可以輸出一個對答案的預測,三個softmax的輸出可以同時進行反向傳播,論文作者認爲如果從最深的一層反向傳播會發生梯度爆炸/梯度消失問題,那麼多設置幾個反向傳播開的位置就可以了,除了最上面的softmax提供預測稱作分類器,其他幾個被稱爲輔助分類器,輔助分類器還可以提供額外的正則化,也可以看作是部分參數共享的集成學習。儘管後來有Paper證明輔助分類器沒他想的那麼好。

核心觀點

  1. 網絡不只有層疊一種方式,引入了多卷積核並列的結構。
  2. 更深的網絡如果帶來的問題不好解決,嘗試將網絡的寬度(channel)變寬,也可以達到很好的效果。
  3. 1*1的卷積核可以自由控制channel的大小,可以降低卷積核帶來的參數規模,爲ResNet中著名的bottleneck結構奠定了基礎。
  4. 引入模塊化的概念,神經網絡開始以模塊爲單位,便於操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章