CNN的發展過程

Ray Lin
學以廣才
Published in
6 min readJun 14, 2018

LeNet(1998)

由LeCun在1998年提出,來辨識手寫數字。 它定出CNN最基本的架構:卷積層(Convolution)、池化層(pooling)、全連接層( fully connected layers)。可參考此文了解更多。

現在常用的LeNet-5(5表示有5個層),和原始的不同在於:

  1. Activation function是現在很常用的ReLu。
  2. 架構是conv1 → pool1 → conv2 → pool2再接全連接層。

AlexNet(2012)

它是模仿上述的LeNet所做的修改,它提出許多亮點:

  • 更深的網路架構。
  • overlapping pooling:
    目前證實這沒什麼用處。
  • Dropout:
    引自Hinton大師的論文,它讓通過全連接層的神經元(該模型在前兩個全連接層引入Dropout)以一定的概率(如0.5)失去作用,解決over-fitting。
  • Local Response Normalization:
    目前證實這沒什麼用處。
  • ReLU nonlinearity:
    用ReLU代替Sigmoid加快SGD(Stochastic gradient descent)的收斂速度。
  • Data augmentation:
    放大圖片成256*256,然後隨機複製並轉出224 * 224的圖片,當成測試資料。利用PCA的方法求出所有訓練圖片的principal components,再對原圖片加上剛剛求出的值。細節可以參考此文。它也是為了解決over-fitting。
  • 用了weight decay以及momemtum的概念來更新權重:
    解決over-fitting並降低錯誤率。

VGG-Net(2014)

它由牛津大學VGG(Visual Geometry Group)於2014年提出,並在當年ImageNet競賽獲得佳績。根據網路與學校的大神分享,還是有些亮點如下:

  • VGG可以看成是加深版本的AlexNet。
  • 小卷積核。作者將捲積核全部替換為3x3(極少用了1x1)。
  • 小池化核。相比AlexNet的3x3的池化核,VGG全部為2x2的池化核。

GoogLeNet(2014)

它在ImageNet分類競賽打敗VGG。它的特點有:

  • 引入Inception結構:
    它降低了計算和參數量的同時,還達到很好的分類性能。
  • 中間層使用輔助分類節點(auxiliary classifiers):
    目的是為了幫助網絡的收斂,google論文中,這輔助單元的計算結果會乘以0.3當作補償,和最後的LOSS相加作後為最終損失函數來訓練網絡。
  • 後面的全連接層(FC)全部替換成全局平均池(Global Average Pooling):
    它降低使用大網絡在最後全連接層的運算量,但不影響結果的精確度。

ResNet(2015)

何愷明提出,並於當年在ISLVRC與COCO數據集獲得冠軍。

自AlexNet問世,CNN結構都在不斷地變深。加深網絡就是希望執行複雜的功能,但只是簡單地疊加層來增加網絡深度。當梯度在被反向傳播到前面的層時,重複的相乘可能會使梯度變得無限小。隨著網絡深度的不斷增加,後層學習等於停滯,稱之為梯度消失

當網絡更深時也意味參數空間更大。因此,簡單地去增加網絡深度反而出現更高的訓練誤差。換句話說,深層網絡雖然收斂了,但網絡卻開始退化了,即增加網絡層數卻導致更大的誤差。上述兩個原因,使深度網絡的訓練變得相當困難。

為了處理這兩個問題的,有人在中間層添加輔助損失(auxiliary loss)作為額外的監督。ResNet是引入殘差學習來解決這些問題。

X 經過了兩條路線,一條是直接往下,另一條是右邊捷徑(shortcut)。通過實驗,這種帶有shortcut的結構確實可以很好地應對退化問題。y=H(x)是我們想要的輸出,那麼直接通過梯度法求H(x)就會遇到上面提到的退化。如果加上走捷徑的結構,那麼可變參數部分的優化目標就不再是H(x),而是
F (x)=H(x)-x。所以F(x)就對應著殘差,因而叫殘差網絡。

為啥要這樣做,因為作者認為學習殘差F(X)比直接學習H(X)簡單!直觀地想,現在根據我們只需要去學習輸入和輸出的差值就可以了,絕對量變為相對量( H(x) - x 就是輸出相對於輸入變化了多少),優化起來簡單很多。

考慮到x的維度與F(X)維度可能不匹配情況,需進行維度匹配。這裡論文中採用兩種方法解決這一問題(其實是三種,但通過實驗發現第三種方法會使performance急劇下降,故不採用):

  • zero_padding: 對恆等層進行0填充的方式將維度補充完整。這種方法不會增加額外的參數
  • projection: 在恆等層採用1x1的捲積層來增加維度。這種方法會增加額外的參數

以這樣的方式,可理解整個讓DesneNet(2016)出現的脈絡和時間序。本文參考很多網路文章與論文。特別是這篇,作者的描述很對我胃口,很多內容是我根據他的文章,節錄或修改成我比較能理解的描述。推薦大家閱讀原文,或許會有不同啟發。

--

--

Ray Lin
學以廣才

善歌者,使人繼其聲;善教者,使人繼其志。其言也,約而達,微而臧,罕譬而喻,可謂繼志矣