[Neural Network]Convolution Neural Network 卷積神經網路

之前寫了兩篇的 CNN 課程筆記,但後來因為太忙沒有繼續看完課程就中斷了 T_T。
[Machine Learning]Covolutional Neural Networks(CNN)(1)
[Machine Learning]Covolutional Neural Networks(CNN)(2)

卷積神經網絡(Convolutional Neural Network)簡稱 CNN,主要應用在影像辨識,這篇想要簡單的說明 CNN 的概念。


先看下面兩張 CNN 概念圖

圖片來源

圖片來源

從上圖可以看到整個流程各經過兩次的 Convolution、Pooling 和 Fully Connected,所以其實只要搞懂 ConvolutionPoolingFully Connected 分別在做什麼就可以掌握 CNN 了。

整個流程是,前面的 Convolution 和 Pooling (又稱為 subsampling) 在做的是 feature extraction (特徵擷取),而 Fully connection 在做的是 classification (分類辨識)。


1. Convolution Layer 卷積層

Convolution Layer 由 filter 和激活函數 (ex. Relu) 所構成。

下圖是常見的美圖效果,其實就是使用 filter 達成的 圖片來源

卷積 (Convolution) 做的是特徵擷取,而不同的效果在做的就是對不同的特徵做擷取。例如,銳化效果在做的就是強化邊緣的特徵,也就是加強擷取出邊緣的特徵。

那所以卷積到底是如何擷取不同的特徵的呢? 圖片來源

特徵擷取的方式是使用 Filter (或稱作 Kernel) 來萃取圖片中的特徵,上圖是一個 3x3 window 的 filter,而算法就是像圖那樣移動 (移動的步數是 stride),將數字相乘後再相加 (詳情可以看之前的筆記1筆記2,包括 padding 和 stride 的概念)。美圖的不同效果就是使用不同的 Filter (Kernel) 做出來的。

下圖是不同的 filter 做出來的效果 圖片來源

現在明白了 filter,但再回去看最一開始的流程圖,為什麼 converlution 有三個呢?這是因為使用了三個 filter 去擷取不同的特徵。

看完 filter 再看 Relu。可以看到最上圖圖中有個 Relu,也就是將所有計算出來結果的負值都變為 0。 圖片來源

如果是彩色的圖,通常會有三個 channel (RGB),也就是一開始輸入的 image 有三個,可以看下圖 圖片來源

2. Pooling Layer 池化層

pooling 又稱為 subsampling,是為了提取特定區域主要特徵,但又想要減少參數的數量,以防止模型過擬合,常用的是 max pooling,也就是取該區域最大的值,也有 average pooling,也就是取該區域的平均值。 圖片來源

下圖是取 max pooling,使用 2x2 的 window,且 stride 為 2

3. Fully Connected Layer 全連接層

Fully Connected Layer 主要是進行 Flattening 平坦化,將最後的矩陣轉換成一維,然後再使用傳統的 neural network + softmax()。

參考我之前的[Neural Network]Neural Network 1


以上就是 CNN 的流程。

最後提一下,從上面的過程我們可以知道,CNN 整個過程中需要求解的參數是

  1. Convolution layer filters
  2. Full Connected Layer filters

來源


Reference:
[資料分析&機器學習] 第5.1講: 卷積神經網絡介紹(Convolutional Neural Network)
[機器學習 ML NOTE]Convolution Neural Network 卷積神經網路
【DL笔记6】从此明白了卷积神经网络(CNN)
Convolutional Neural Networks’ (CNN) Backward Propagation