花書+吳恩達深度學習(十四)卷積神經網絡 CNN 之經典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

目錄

0. 前言

1. LeNet-5

2. AlexNet

3. VGG-16

4. ResNet 殘差網絡

5. Inception Network


如果這篇文章對你有一點小小的幫助,請給個關注,點個贊喔~我會非常開心的~

花書+吳恩達深度學習(十)卷積神經網絡 CNN 之卷積層

花書+吳恩達深度學習(十一)卷積神經網絡 CNN 之池化層

花書+吳恩達深度學習(十二)卷積神經網絡 CNN 之全連接層

花書+吳恩達深度學習(十三)卷積神經網絡 CNN 之運算過程(前向傳播、反向傳播)

花書+吳恩達深度學習(十四)卷積神經網絡 CNN 之經典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

0. 前言

本篇文章主要介紹一些經典的卷積神經網絡。

  • LeNet-5
  • AlexNet
  • VGG-16
  • ResNet
  • Inception Network

1. LeNet-5

LeNet-5 表示一個 5 層的卷積神經網絡,主要作用於灰度圖像。

  • 輸入層是 32\times 32\times 1 的灰度圖像
  • 第一層是 5\times 5,\ s=1 的 6 個過濾器的卷積層,運算結果是 28\times 28\times 6,加上 f=2,\ s=2 的平均池化,運算結果是 14\times 14\times 6 
  • 第二層是 5\times 5,\ s=1 的 16 個過濾器的卷積層,運算結果是 10\times 10\times 16, 加上 f=2,\ s=2 的平均池化,運算結果是 5\times 5\times 16
  • 第三層是 120 個神經元的全連接層
  • 第四層是 84 個神經元的全連接層
  • 第五層是 10 個輸出的 softmax 輸出層

因論文的發表時間較早,激活函數多采用 sigmoid 或者 tanh 。

如下圖所示(圖源:吳恩達深度學習):

2. AlexNet

AlexNet 表示一個 8 層的卷積神經網絡,主要作用於彩色圖像。

  • 輸入層是 227\times 227\times 3 的彩色圖像
  • 第一層是 11\times 11,\ s=4  的 96 個過濾器的卷積層,運算結果是 55\times 55\times 96,加上 f=3,\ s=2 的最大池化,運算結果是 27\times 27\times 96
  • 第二層是 5\times 5 的 256 個過濾器的相同卷積,運算結果是 27\times 27\times 256,加上 f=3,\ s=2 的最大池化,運算結果是 13\times 13\times 256
  • 第三層是 3\times 3 的 384 個過濾器的相同卷積,運算結果是 13\times 13\times 384
  • 第四層是 3\times 3 的 384 個過濾器的相同卷積,運算結果是 13\times 13\times 384
  • 第五層是 3\times 3 的 256 個過濾器的相同卷積,運算結果是 13\times 13\times 256,加上 f=3,\ s=2 的最大池化,運算結果是 6\times 6\times 256
  • 第六層是 4096 個神經元的全連接層
  • 第七層是 4096 個神經元的全連接層
  • 第八層是 1000 個輸出的 softmax 輸出層

激活函數採用 ReLu

如下圖所示(圖源:吳恩達深度學習):

3. VGG-16

VGG-16 網絡是一種專注於構建卷積層的簡單架構網絡,但是網絡很深,總共有 16 層。

  • 每一個卷積層都是 3\times 3,\ s=1 的相同卷積,每一個池化層都是 f=2,\ s=2 的最大池化
  • 輸入層是 224\times 224\times 3 的彩色圖像
  • 第一層至第二層是 2 個 64 個過濾器的相同卷積層和最大池化,運算結果是 112\times 112\times 64
  • 第三層至第四層是 2128 個過濾器的相同卷積層和最大池化,運算結果是 56\times 56\times 128
  • 第五層至第七層是 3 個 256 個過濾器的相同卷積層和最大池化,運算結果是 28\times 28\times 256
  • 第八層至第十層是 3512 個過濾器的相同卷積層和最大池化,運算結果是 14\times 14\times 512
  • 第十一層至第十三層是 3512 個過濾器的相同卷積層和最大池化,運算結果是 7\times 7\times 512
  • 第十四層是 4096 個神經元的全連接層  
  • 第十五層是 4096 個神經元的全連接層
  • 第十六層是 1000 個輸出的 softmax 輸出層

如下圖所示(圖源:吳恩達深度學習):

4. ResNet 殘差網絡

通常的前向傳播是例如:

\begin{align*} &z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]} \\ &a^{[l+1]}=g(z^{[l+1]}) \\ &z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]} \\ &a^{[l+2]}=g(z^{[l+2]}) \\ \end{align*}

而殘差網絡是指這樣的網絡:

\begin{align*} &z^{[l+1]}=W^{[l+1]}a^{[l]}+b^{[l+1]} \\ &a^{[l+1]}=g(z^{[l+1]}) \\ &z^{[l+2]}=W^{[l+2]}a^{[l+1]}+b^{[l+2]} \\ &a^{[l+2]}=g(z^{[l+2]}+a^{[l]}) \\ \end{align*}

其中,加上的 a^{[l]} 使得這兩層網絡構成了一個殘差塊(residual block)。

這種跳躍幾層的連接稱爲跳遠連接(skip connection)或捷徑(short cut)。

如下圖所示(圖源:吳恩達深度學習):

在殘差塊中,z^{[l+2]}\ a^{[l]} 具有相同的維度,所以才殘差網絡中多采用相同卷積

如果維度不同,則可採用 a^{[l+2]}=g(z^{[l+2]}+w_sa^{[l]}) 。

爲什麼使用殘差網絡:

  1. 在神經網絡很深的情況下,存在梯度消失或者梯度爆炸的情況,而 ResNet 可以解決這類問題,構建更深的網絡

  2. 雖然理論上,網絡越深,訓練誤差會越低,但是實際上,隨着網絡的加深,訓練誤差會先降低然後升高。但是在殘差網絡中,隨着網絡的加深,訓練誤差會越來越低

例如,在一個大型網絡後方加一個上述的殘差塊 a^{[l+2]}=g(z^{[l+2]}+a^{[l]}),當使用正則化的時候,可能會使得 w^{[l+2]} 很小,以至於 z^{[l+2]}=0 ,所以 a^{[l+2]}=g(a^{[l]}) ,因爲採用 ReLU 激活函數,a^{[l]} \geq 0,所以 a^{[l+2]}=a^{[l]},所以更深的網絡可能並不會影響梯度的什麼問題。

ResNet 通常是幾個卷積層加一個池化層,再幾個卷積層加一個池化層,最後一個全連接層和一個 softmax 輸出層。

ResNet 如下圖所示(圖源:吳恩達深度學習):

5. Inception Network

Inception 這個名字來源於電影 Inception(盜夢空間),意味着我們要走的更深

Inception Network 可以代替人工決定是否使用卷積層或者池化層,如何構建卷積層過濾器。

對一個輸入,同時卷積於幾種不同過濾器,或者同時使用相同最大池化,保證輸出的維度都是不變的。

然後將每個通道疊加在一起,組成一個新的輸出。

如下圖所示(圖源:吳恩達深度學習):

代價是計算成本提高了。

爲了降低計算代價,可以使用 1\times 1 卷積作爲瓶頸層先壓縮通道數,然後再通過卷積擴大通道數。

單個 Inception 模塊如下所示(圖源:吳恩達深度學習):

Inception 網絡如下所示(圖源:吳恩達深度學習):

可在其中加入一些分支,使得中間隱藏層同樣也能作爲輸出進行預測。


如果這篇文章對你有一點小小的幫助,請給個關注,點個贊喔~我會非常開心的~

 

 

 

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