卷積神經網路(Convolutional Neural Network, CNN) 在一般神經網路的前端加上卷積層(Convolution Layer),進行『特徵萃取』(Feature Extraction),將像素轉換為各種線條特徵,再交給Dense層辨識,這就是機器學習流程的第3步驟 -- 特徵工程(Feature Engineering)。

卷積(Convolution)簡單說就是將圖形逐步抽樣化(Abstraction),把不必要的資訊刪除,例如色彩、背景等,下圖經過三層卷積後,有些圖依稀可辨識出人臉的輪廓了,因此,模型就依據這些線條辨識出是人、車或其他動物。

卷積神經網路(Convolutional Neural Network),以下簡稱CNN,它的模型結構如下:

 

  1. 先輸入一張圖像,可以是彩色的,每個色彩通道(Channel)分別卷積再合併。
  2. 圖像經過卷積層(Convolution Layer)運算,變成特徵圖(Feature Map),卷積可以指定很多個,卷積矩陣不是固定的,而是由反向傳導推估出來的,與傳統的影像處理不同,卷積層後面通常會附加ReLU Activation Function。
  3. 卷積層後面會接一個池化層(Pooling),作下採樣(Down Sampling),以降低模型的參數個數,避免模型過於龐大。
  4. 最後把特徵圖(Feature Map)壓扁成一維(Flatten),交給Dense層辨識。

 

卷積有很多種,包括影像模糊化(Blur)、銳化(sharpen)、邊緣偵測等,在卷積神經網路設計時,我們並不需要指定卷積類別,只要指定濾波器(Filter)個數,相關的卷積參數會在優化的過程中與權重一併被推算出來。

 

深度學習永遠不會跟你說錯,『垃圾進、垃圾出』(Garbage In, Garbage Out),確認模型推估的合理性是相當重要的。因此,我們可以用視覺化的方式觀察卷積的影響力,透過程式可以重建圖像,顯示每一層卷積後的圖像,以下是一隻鳥的圖片經卷積的處理結果。

 

第一層影像處理結果:

第17層影像處理結果:

相關程式可詳閱『深度學習最佳入門』一書說明。