ML Lecture 10: Convolutional Neural Network



CNN全名叫做 Convolutional Neural Network 卷積神經網路。因為他在一般NN之前加入了一些特殊的 layer,這些layer的運算方式類似於卷積(convolution)的運算,固取名為 Convolutional Neural Network

Why CNN for Image

CNN通常被用來做影像處理

Regular NN for image

其實一般的 NN (或稱DNN, Deep NN, 因為全是fully connected) 也可以做影像處理:

train 一個 NN,input 是一張圖片,用一個vector表達所有pixel。假設要分成1000個class,output就用1000個neuron。

而在這個NN裡面,我們會期待每一個neuron都是一個基本的classifier,而根據文獻,實際上確實如此,例如第一層的neuron是一個最簡單的classifier,可以用來區別是不是橘色?是不是綠色?有沒有線條?之類。第二層則根據第一層hidden layer的結果,做更複雜的事情,例如某些材質。

但問題是,如果用一般的NN做的話,往往一張圖片會要用到太多的參數:例如一張100100的彩色照片,他的input會是一個 100100*3 (RGB, 又稱3個channel) = 3萬維 的向量,假設第一層hidden layer只有1000個neuron ,光 input+第一層hidden layer就有3000萬個參數了(容易overfitting)

因次,我們希望利用用其他知識,來簡化這個NN的架構,所以其實CNN比一般的NN還簡單

Using less parameters

我們對照片的觀察,可以得出三個結論:

  1. 某些特徵只佔整張照片的小部分
  2. 這些特徵可能會在照片不同地方出現