Coursera Deep Learning筆記 深度卷積網絡


參考

1. Why look at case studies

介紹幾個典型的CNN案例:

  • LeNet-5

  • AlexNet

  • VGG

Residual Network(ResNet): 特點是可以構建很深的神經網絡

Inception Neural Network

2. Classic Networks

典型的 LeNet-5 結構包含CONV layer,POOL layer 和 FC layer

  • 順序一般是 CONV layer->POOL layer->CONV layer->POOL layer->FC layer->FC layer->OUTPUT layer,即 \(\hat{y}\)

  • 下圖所示的是一個數字識別的LeNet-5的模型結構:

LeNet模型 總共包含了大約6萬個參數

  • Yann LeCun提出的 LeNet-5模型 池化層使用的是:average pool

  • 各層激活函數一般是Sigmoid和tanh。現在,我們可以根據需要,做出改進,使用 max pool 和 激活函數ReLU。


AlexNet模型 其結構如下所示:

  • AlexNet模型與LeNet-5模型類似,更加復雜,共包含了大約6千萬個參數

  • 同樣可以根據實際情況使用 激活函數ReLU。有一個優化技巧,叫做Local Response Normalization(LRN)。 而在實際應用中,LRN的效果並不突出。


VGG-16模型 更復雜,其 CONV layer 和 POOL layer 設置如下:

  • CONV = 3x3 filters, s = 1, same

  • MAX-POOL = 2x2, s = 2

VGG-16結構如下所示,VGG-16的參數多達1億3千萬。:

3. ResNets

如果神經網絡層數越多,網絡越深,源於 梯度消失梯度爆炸 的影響,整個模型難以訓練成功。

解決的方法:

  • 人為地讓神經網絡 某些層 跳過下一層神經元的連接,隔層相連,弱化每層之間的強聯系。

  • 這種神經網絡被稱為 Residual Networks(ResNets)

  • Residual Networks由許多 隔層相連的神經元子模塊 組成,稱之為 Residual block。

單個Residual block的結構如下圖所示:

上圖中紅色部分就是skip connection,直接建立 \(a^{[l]}\)\(a^{[l+2]}\) 之間的隔層聯系。相應表達式:

\[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]}) \]

\(a^{[l]}\)直接隔層 與 下一層的線性輸出相連,與 \(z^{[l+2]}\)共同通過激活函數 (Relu) 輸出 \(a^{[l+2]}\).

由多個Residual block組成的神經網絡就是Residual Network。

實驗表明,這種模型結構對於 訓練非常深的神經網絡,效果很好。另外,為了便於區分,我們把 非Residual Networks稱為 Plain Network。

Residual Network的結構如圖所示:

  • 與Plain Network相比,Residual Network能夠訓練更深層的神經網絡,有效避免發生發生梯度消失和梯度爆炸

  • 下圖對比中可看出,隨着神經網絡層數增加,Plain Network實際性能會變差,training error甚至會變大。然而,Residual Network的訓練效果卻很好,training error一直呈下降趨勢。

4. Why ResNets Work

  • 如圖,輸入 \(x\) 經過很多層神經網絡后,輸出 \(a^{[l]}\)\(a^{[l]}\)經過一個 Residual block 輸出 \(a^{[l+2]}\)

  • \(a^{[l+2]}\) 表達式:

\[a^{[l+2]} = g(z^{[l+2]} + a^{[l]}) = g(W^{[l+2]}a^{[l+1]} + b^{[l+2]} + a^{[l]}) \]

  • 輸入x經過Big NN后, 若\(W^{[l+2]}\approx0\)\(b^{[l+2]}\approx0\),則有:

\[a^{[l+2]}=g(a^{[l]})=ReLU(a^{[l]})=a^{[l]}\ \ \ \ when\ a^{[l]}\geq0 \]

  • 即使發生梯度消失,\(W^{[l+2]}\approx0\)\(b^{[l+2]}\approx0\)\(a^{[l+2]}\)\(a^{l]}\)之間也有線性關系。即:identity function

  • \(a^{[l]}\) 直接連到 \(a^{[l+2]}\),從效果來說,相當於直接忽略了\(a^{[l]}\) 之后的兩層神經層.

  • 看似很深的神經網絡,其實由於許多Residual blocks的存在,弱化削減了某些神經層之間的聯系,實現隔層線性傳遞,而不是一味追求非線性關系.

注意:

  • 如果Residual blocks中 \(a^{[l]}\)\(a^{[l+2]}\) 的維度不同,通常可以引入矩陣 \(W_s\),與 \(a^{[l]}\) 相乘,使得 \(W_s∗a^{[l]}\) 的維度與 \(a^{[l+2]}\)一致。

  • 參數矩陣 \(W_s\) 有來兩種方法得到:

    • 一種是將 \(W_s\) 作為學習參數,通過模型訓練得到.

    • 一種是固定 \(W_s\) 值(類似單位矩陣),不需要訓練,\(W_s\)\(a^{[l]}\) 的乘積僅使得 \(a^{[l]}\) 截斷或者補零。

  • 如圖,CNN中 ResNets 的結構:

  • ResNets同類型層之間,例如CONV layers,大多使用same類型,保持維度相同。

  • 如果是不同類型層之間的連接,例如CONV layer與POOL layer之間,如果維度不同,則引入矩陣 \(W_s\)

5. Networks in Networks and 1x1 Convolutions

一種新的CNN結構,即1x1 Convolutions,也稱Networks in Networks。

這種結構的特點:濾波器算子filter的維度為1x1。對於單個filter,1x1的維度,意味着卷積操作等同於乘積操作

對於多個filters,1x1 Convolutions的作用類似 全連接層的神經網絡結構。效果等同於Plain Network中 \(a^{[l]}\)\(a^{[l+1]}\) 的過程。

1x1 Convolutions可以用來 縮減輸入圖片的通道數目

6. Inception Network Motivation

上面我們介紹的CNN單層的濾波算子filter尺寸是固定的,1x1或者3x3等。

Inception Network (初始網絡)

  • 在 單層網絡 上可以 使用多個 不同尺寸的filters,進行same convolutions,把各filter下得到的輸出拼接起來。

  • 除此之外,還可以將CONV layer與POOL layer混合,同時實現各種效果。但是要注意使用same pool。

總結: Inception Network使用不同尺寸的filters,並將CONV和POOL混合起來,將所有功能輸出組合拼接,再由神經網絡本身去學習參數並選擇最好的模塊

Inception Network在提升性能的同時,會帶來計算量大的問題。例如:

  • 此CONV layer需要的計算量為:28x28x32x5x5x192=120m,其中m表示百萬單位。

  • 可以看出但這一層的計算量都是很大的。

  • 為此,我們可以引入1x1 Convolutions來減少其計算量,結構如下圖所示:

  • 通常把該1x1 Convolution稱為“瓶頸層”(bottleneck layer)。

  • 引入bottleneck layer之后,總共需要的計算量為:28x28x16x192 + 28x28x32x5x5x16=12.4m。

  • 明顯地,雖然多引入了1x1 Convolution層,但是總共的計算量減少了近90%。由此可見,1x1 Convolutions還可以有效減少CONV layer的計算量。

7.Inception Network

引入1x1 Convolution后的Inception module如下圖所示:

多個Inception modules組成Inception Network,效果如下圖所示:

上述Inception Network除了由許多Inception modules組成之外,網絡中間隱藏層也可以作為輸出層Softmax,有利於防止發生過擬合。

8. Using Open-Source Implementation

9. Transfer Learning

10. Data Augmentation(數據增強)

  • 常用的Data Augmentation方法是對已有的樣本集進行Mirroring和Random Cropping

  • 另一種Data Augmentation的方法是color shifting。

    • color shifting就是對圖片的RGB通道數值進行隨意增加或者減少,改變圖片色調。

11. State of Computer Vision

神經網絡需要數據,不同的網絡模型所需的數據量是不同的。

Object dection,Image recognition,Speech recognition所需的數據量依次增加。

  • 如果data較少,那么就需要更多的hand-engineering,對已有data進行處理,比如上一節介紹的data augmentation

一些方法能夠有助於提升神經網絡模型的性能:(計算成本太大,不適用實際項目開發)

  • Ensembling: Train several networks independently and average their outputs.

  • Multi-crop at test time: Run classifier on multiple versions of test images and average results.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM