找回密碼
 註冊
搜索
查看: 1395|回復: 0

[教學] 卷積神經網路 (Convolutional Neural , CNN)

[複製鏈接]
發表於 2021-2-7 10:25:56 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
當我們剛開始接觸深度學習的時候,最常看到的例子便是使用 MINST 資料庫進行手寫數字的辨識。概念如下圖所示,將所有像素灰階數值壓成一維資料後再丟進全連接層進行學習。

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

(圖片來源 : 3Blue1Brown Youtube : 究竟神經網路是什麼? 第一章 深度學習)
如果在進行一般的圖片辨識時,我們不會使用上面的方式,因為這樣子做會有幾個問題 :
(1) 在一般的圖片辨識問題中,事實上會有一些 pattern 可能會出現在圖片中的某個部位,且這樣的 pattern 可能由許多個鄰近像素構成,如果依照上面的方式會破壞這樣的 pattern 結構。
(2) 全連接層搭配高像素的圖片,會讓整個計算成本大幅增加。
基於上面幾個理由便衍伸出 Convolutional Neural Network ( CNN ) 卷積神經網路來進行圖像辨識。
整個 CNN 結構主要分成幾個部分 : 卷積層 ( Convolution layer )、池化層 (Pooling layer) 以及最後一個全連接層 ( Fully Connected layer )。

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN


Convolution Layer 卷積層

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

(圖片取自 : [ 機器學習 ML NOTE ] Convolution Neural Network 卷積神經網路)
kernel 我們也稱為 filter , 我認為 filter 這樣的概念可以讓人更體會卷積層的作用,一般我們使用修圖軟體的各種濾鏡功能即是不同的 kernel 在圖片上作用後的結果。
( 想知道許多不同的 filter 造成的效果可以參考 Wikipedia – Kernel ( image processing ))
在全連接層神經網路中經由學習不斷更新的權重,在 CNN 這邊指的就是 filter ,如上圖 3X3 的 filter 內就相當於有 9 個權重。我們可以想像,CNN 訓練的過程就是不斷地在改變 filter 來凸顯這個輸入圖像上的特徵。
不過,CNN 還是有一些值得注意的地方 :
1. 每一層卷積層的 filter 不會只有一個
我們引用 CNN 的經典論文 GradientBased Learning Applied to Document Recognition 中的 LeNet-5 結構,第一層的卷積層就給了 6 個 3X3 kernel,也就是說在這同一層中就有 54 個權重需要同時更新,而這六個 filter 也會相對應給出六個 feature map 。

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

(圖片來源 : Yann LeCun Leon Bottou Yoshua Bengio and Patrick Haffner.(1998).GradientBased Learning Applied to Document Recognition[2])
2. 彩色的圖片同時會有 RGB 三個 channel
也就是說,我們每一張圖片都會有深度,既然輸入圖有深度,那麼我們的 filter 也相同的會有一個深度,每一個 channel 會對應著 filter 的深度做卷積,filter 每一個深度的數值可能會不一樣。

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN
攤開看大概會像這樣子

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

(圖片取自 : Undrestanding Convolutional Layers in Convolutional Neural Networks (CNNs))
3. 經過卷積層過後的 feature map 會變得比原尺寸小
這其實不難看出來,只要親自做一輪卷積運算便可以很容易地發現這個結論,如果不想要讓整個 feature map 縮小,我們可以使用 padding 的方法 ( 於輸入圖片的周圍補上一圈 0 ),來避免 feature map 縮小的狀況。

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN
4. filter 滑動的步伐 (Stride) 不一定必須是 1
當我們滑動的步伐加大,那麼出來的 feature map 尺寸會相對縮得更小

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

卷積層的特色


卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

卷積神經網路 Convolutional Neural CNN

卷積神經網路 Convolutional Neural  CNN

(影片來源 : Henry Warren – The Convolution Layer (CNN Visualization))


(影片來源 : Gene Kogan – ml4a @ itp nyu :: 03 convolutional neural networks )

文章出處
 
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|TShopping

GMT+8, 2025-5-1 11:53 , Processed in 0.026369 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表