目錄
如果這篇文章對你有一點小小的幫助,請給個關注,點個贊喔~我會非常開心的~
花書+吳恩達深度學習(十二)卷積神經網絡 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 表示一個 層的卷積神經網絡,主要作用於灰度圖像。
- 輸入層是 的灰度圖像
- 第一層是 的 個過濾器的卷積層,運算結果是 ,加上 的平均池化,運算結果是
- 第二層是 的 個過濾器的卷積層,運算結果是 , 加上 的平均池化,運算結果是
- 第三層是 個神經元的全連接層
- 第四層是 個神經元的全連接層
- 第五層是 個輸出的 softmax 輸出層
因論文的發表時間較早,激活函數多采用 sigmoid 或者 tanh 。
如下圖所示(圖源:吳恩達深度學習):
2. AlexNet
AlexNet 表示一個 層的卷積神經網絡,主要作用於彩色圖像。
- 輸入層是 的彩色圖像
- 第一層是 的 個過濾器的卷積層,運算結果是 ,加上 的最大池化,運算結果是
- 第二層是 的 個過濾器的相同卷積,運算結果是 ,加上 的最大池化,運算結果是
- 第三層是 的 個過濾器的相同卷積,運算結果是
- 第四層是 的 個過濾器的相同卷積,運算結果是
- 第五層是 的 個過濾器的相同卷積,運算結果是 ,加上 的最大池化,運算結果是
- 第六層是 個神經元的全連接層
- 第七層是 個神經元的全連接層
- 第八層是 個輸出的 softmax 輸出層
激活函數採用 ReLu
如下圖所示(圖源:吳恩達深度學習):
3. VGG-16
VGG-16 網絡是一種專注於構建卷積層的簡單架構網絡,但是網絡很深,總共有 層。
- 每一個卷積層都是 的相同卷積,每一個池化層都是 的最大池化
- 輸入層是 的彩色圖像
- 第一層至第二層是 個 個過濾器的相同卷積層和最大池化,運算結果是
- 第三層至第四層是 個 個過濾器的相同卷積層和最大池化,運算結果是
- 第五層至第七層是 個 個過濾器的相同卷積層和最大池化,運算結果是
- 第八層至第十層是 個 個過濾器的相同卷積層和最大池化,運算結果是
- 第十一層至第十三層是 個 個過濾器的相同卷積層和最大池化,運算結果是
- 第十四層是 個神經元的全連接層
- 第十五層是 個神經元的全連接層
- 第十六層是 個輸出的 softmax 輸出層
如下圖所示(圖源:吳恩達深度學習):
4. ResNet 殘差網絡
通常的前向傳播是例如:
而殘差網絡是指這樣的網絡:
其中,加上的 使得這兩層網絡構成了一個殘差塊(residual block)。
這種跳躍幾層的連接稱爲跳遠連接(skip connection)或捷徑(short cut)。
如下圖所示(圖源:吳恩達深度學習):
在殘差塊中, 具有相同的維度,所以才殘差網絡中多采用相同卷積。
如果維度不同,則可採用 。
爲什麼使用殘差網絡:
-
在神經網絡很深的情況下,存在梯度消失或者梯度爆炸的情況,而 ResNet 可以解決這類問題,構建更深的網絡
-
雖然理論上,網絡越深,訓練誤差會越低,但是實際上,隨着網絡的加深,訓練誤差會先降低然後升高。但是在殘差網絡中,隨着網絡的加深,訓練誤差會越來越低
例如,在一個大型網絡後方加一個上述的殘差塊 ,當使用正則化的時候,可能會使得 很小,以至於 ,所以 ,因爲採用 ReLU 激活函數,,所以 ,所以更深的網絡可能並不會影響梯度的什麼問題。
ResNet 通常是幾個卷積層加一個池化層,再幾個卷積層加一個池化層,最後一個全連接層和一個 softmax 輸出層。
ResNet 如下圖所示(圖源:吳恩達深度學習):
5. Inception Network
Inception 這個名字來源於電影 Inception(盜夢空間),意味着我們要走的更深。
Inception Network 可以代替人工決定是否使用卷積層或者池化層,如何構建卷積層過濾器。
對一個輸入,同時卷積於幾種不同過濾器,或者同時使用相同最大池化,保證輸出的維度都是不變的。
然後將每個通道疊加在一起,組成一個新的輸出。
如下圖所示(圖源:吳恩達深度學習):
代價是計算成本提高了。
爲了降低計算代價,可以使用 卷積作爲瓶頸層先壓縮通道數,然後再通過卷積擴大通道數。
單個 Inception 模塊如下所示(圖源:吳恩達深度學習):
Inception 網絡如下所示(圖源:吳恩達深度學習):
可在其中加入一些分支,使得中間隱藏層同樣也能作爲輸出進行預測。
如果這篇文章對你有一點小小的幫助,請給個關注,點個贊喔~我會非常開心的~