# 【Note】Deep Learning Neural Network : 卷積神經網路 (CNN) ###### tags: `DeepLearning` `筆記` ## CNN概念圖 ![](https://i.imgur.com/5t4xEtF.png) ## CNN核心結構 一個基本的CNN由以下四個部分為核心元素 1. Convolution layer 2. Pooling layer 3. Activation function 4. Fully connected layer ![](https://i.imgur.com/sbpK46T.png) > 一般Neural Network (left) vs. Convolution Neural Network (right) ## Convolution Layer * 要點 : * 使用複數filter提取input的不同局部特徵作為下一層的features * 組成 : * Input Data ( W x H x C ) * Filter (or Kernel) * Feature Map * Convolution Calculation ![](https://i.imgur.com/kCMVZ56.png) 利用設定好的filter對input data做convolution運算,概念上可以將每個filter視為一組weights,對所有input X(i)進行element-wise multiplication。 Output feature map的大小計算公式 : ![](https://i.imgur.com/OGhmnk5.png),f為filter大小 有n個filter就會形成n個feature map,同時下一層的channel也會是n * 參數共享 當我們希望某些不同的receptive field偵測的是一張圖片中相似的特徵時,我們可以透過共享參數的方式來減少重複neuron的數量,意即共用filter > Stride : 指filter map移動的距離,可不為1 > Padding : 指filter可以超出input邊界進行計算,此時超出的範圍補上的數據稱為padding ## Pooling Layer * 要點 : * 對取得的features做downsampling,減少parameters以避免overfitting,在減少計算資源的同時也保留input data的重要特徵 * 以filter與stride作為參數 * 近年來因為計算資源充裕,加上偵測細微特徵的需求,有些model會選擇不使用pooling layer * Max Pooling * 取該filter區域的最大值 * 特色 : 喪失較多全局資訊,但保留顯著特徵 * Average Pooling * 取該filter區域的平均值 * 特色 : 保留較完整資訊,但特徵較為不明顯 ## Activation Function * 這邊常常使用的Activation function有 : ReLU、Sigmod ![](https://i.imgur.com/vpafC9V.png) ## Fully Connected Layer * 要點 : * 將取得的feature mapping到樣本(label)空間做classification * 進入fully connected layer之前先進行dropout可以避免overfitting * Flatten : 將matrix轉為vector data,概念上類似將矩陣鋪平,運算類似convolution * 不同layer間的節點完全互連,傳遞過程中進行weight matrix multiplication * 經過softmax後即可傳至output layer並進行perdiction * 最後一層output layer的節點數量與class數量相同 --- 暫時這樣,有缺漏再補充