1. 程式人生 > >【Coursera】吳恩達 deeplearning.ai 04.卷積神經網路 第二週 深度卷積神經網路 課程筆記

【Coursera】吳恩達 deeplearning.ai 04.卷積神經網路 第二週 深度卷積神經網路 課程筆記

深度卷積神經網路

2.1 為什麼要進行例項化

實際上,在計算機視覺任務中表現良好的神經網路框架,往往也適用於其他任務。

2.2 經典網路

  • LeNet-5
  • AlexNet
  • VGG

LeNet-5

主要針對灰度影象
LeNet-5

隨著神經網路的加深,影象的高度 n H 和寬度

n W 在減小,通道數 n C 一直在增加。
該神經網路中有一個至今仍在使用的模式:
conv —pool —fc —fc —output" role="presentation" style="position: relative;"> c o n v
  p o o l   c o n v   p o o l   f c   f c   o u t p u t

AlexNet

AlexNet

AlexNet大約包含6000w個引數,當用於訓練影象和資料集時mAlexNet**可以處理非常相似的基本構造模組**,這些模組往往包含著大量的隱藏單元。另外,使用ReLU啟用函式也使其效能更加出色。

VGG-16

VGG-16

這是一種只需要專注構建卷積層的簡單網路。16表示在這個網路中包含16個卷積層和全連線層。總共包含約1.38億個引數,但是VGG-16結構並不複雜,包含一定規律:

  • 幾個卷積層後面跟著一個池化層,用於壓縮影象大小。
  • 卷積層的過濾器數量翻倍增加。

優點:簡化了網路結構。
缺點:需要訓練的引數巨大。

2.3 殘差網路 Residual Network

非常深非常深的神經網路是很難訓練的,因為存在梯度消失和梯度爆炸的問題。
解決方法:跳遠連線,可以從某一網路層獲取啟用,然後迅速反饋給另外一層,甚至是神經網路的更深層。我們可以利用跳遠連線構建能夠訓練深度網路的ResNets。

這裡寫圖片描述

殘差網路的變化主要體現在:
a [ l ] 直接向後拷貝到神經網路深層,在ReLU非線性啟用前面加上 a [ l ] (shortcut / Skip connection)。 a [ l ] 的資訊直接傳遞到神經網路的深層而不用沿著主路徑傳遞,從而產生一個殘差塊。 a [ l ] 插入的時機是線上性啟用之後,ReLU啟用之前。

每兩層增加一個捷徑,構成一個殘差塊,則整個網路構成一個殘差網路。

這裡寫圖片描述

對於普通的訓練,隨著網路深度的增加,訓練錯誤會先減少,後增加。因為深度越深,意味著用優化演算法越難訓練。
對於殘差網路,即使網路再深,訓練效果都會不錯——訓練誤差在減小,有助於解決梯度爆炸和梯度消失的問題。

2.4 殘差網路為什麼有用?

這裡寫圖片描述

學習恆等式函式對於殘差塊來說很容易,Skip Connection使我們很容易得出 a [ l + 2 ] = a [ l ] ,這意味著即使我們在 a [ l ] a [ l + 2 ] 之間加入兩層,其效率也不會遜色於簡單的神經網路,因為學習恆等函式對它來說很簡單。
因此,不論是把殘差塊新增到神經網路的中間還是末端位置,都不會影響網路的表現,有時候甚至可以提高效率(或者說至少不會降低效能)。

假設 a [ l ] a [ l + 2 ] 具有不同的維度,則需要在 a [ l ] 前乘以一個相應的矩陣 W S 以使其維度相同。
這裡寫圖片描述

2.5 網路中的網路以及1×1卷積

這裡寫圖片描述
對於6×6×32的圖片來說,1×1卷積實現的功能是計算藍色圖中32個數字和過濾器中32個數字的元素乘積,然後應用ReLU非線性函式。
1×1卷積(network in network)的作用可以理解為,在這32個單元都應用了一個全連線神經網路,全連線層的作用是輸入32個數字和過濾器數量(標記為 n C [ l + 1 ] ),在36個單元(6×6)上重複此過程,輸出結果是6×6×過濾器數量。

2.6 谷歌Inception網路簡介

Inception網路或Inception層的作用是:代替人工來決定卷積層中的過濾器型別,或者確定是否需要建立卷積層或池化層。
核心內容:

這裡寫圖片描述

這裡寫圖片描述

使用1×1卷積,將最左打的輸入層,壓縮成中間這個較小層,又是被稱為“瓶頸層”。先縮小,再擴大,從而大大降低了計算成本。
只要合理構建瓶頸層,則既可以縮小表示層規模,又不會降低網路效能。

2.7 Inception網路

這裡寫圖片描述

Inception模組將之前層的啟用或輸出作為其輸入,然後將不同操作得到的結果直接連線起來——Channel Concat。
注意,如果使用最大池化,則輸出通道數與輸入相同,需要加一個1×1卷積將通道數減少。

這裡寫圖片描述

上圖中的分支實際上是全連線層,通過softmax獲得預測結果,起到調節作用,防止過擬合。

2.9 遷移學習

遷移學習——將公共資料集上的知識(權重引數等)遷移到自己的問題上。

這裡寫圖片描述

對於較小的資料集,網上的神經網路開源實現程式碼,可以直接使用其程式碼和權重引數,去掉最後的softmax層,建立自己的softmax單元以解決自己的實際問題。
可以將中間的神經網路視為凍結的,通過使用別人預訓練的引數來獲得比較好的效能效果。

對於更大的資料集,應該只凍結一部分層。凍結的層數越少,需要訓練的引數越多。

如果有大量的資料,則可以凍結更少的層,甚至將開源神經網路和權重引數只作為初始化,來訓練更多引數。

2.10 資料擴充

資料擴充方法:
1. 垂直映象對稱隨機裁剪區域性彎曲等。
2. 色彩轉換
對RGB不同的取樣方法:PCA(主成分分析)——影響顏色扭曲;PCA顏色增強;

2.11 計算機視覺現狀

學習演算法兩種知識來源:

  • Labeled data 已標籤的資料
  • Hand Engineered手工工程

ppt

  • 整合
    獨立地訓練幾個神經網路,並對其輸出做平均。(幾乎不用於實際生產)

  • 測試時的multi-crop

是一種將資料擴充套件應用到測試影象的形式。