1. 程式人生 > >臺大李巨集毅--CNN

臺大李巨集毅--CNN

CNN與普通深度學習(全網路連線 )的很大區別就是:CNN是關注圖片的一小部分,一小部分的。而普通深度學習是把影象的每一個畫素全部拉長,都作為輸入。

一:CNN整體流程

這裡寫圖片描述

1. CNN – Convolution

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

CNN 的Convolution與 普通DNN (Fully Connected )的異同

這裡寫圖片描述
這裡寫圖片描述
**由上面的三個圖可以看見,CNN的卷積過程,其實就是 普通DNN 訓練模型的過程。
不同點是:
1. 若把CNN的卷積理解DNN,那麼訓練時,相當於每次僅僅選出

n n = n 2 個輸入元素,而普通DNN一般是 m
m = m 2
個輸入元素(即所有輸入元素都用)。
(這裡n是Filter矩陣的維度,m是輸入的image矩陣的維度)
2. 若把CNN的卷積理解DNN,那麼DNN有很多的權重值都要保持一致(即是共享的)。如上面最後一張圖。顏色相同的線,就表明那裡的元素要保持一致。**

2. CNN – – Max Pooling

這裡寫圖片描述
這裡寫圖片描述

3. CNN – – Flatten

這裡寫圖片描述

二:CNN程式碼實現

這裡寫圖片描述

三:為什麼CNN比普通DNN(Fully Connected)要好

1. 引數少

這裡寫圖片描述
根據是上面已經講解的內容,CNN其實可以理解為是:簡化版本的DNN(Fully Connected)
但是CNN的不同點就在於,
1. CNN的引數少
如上圖,下一層一個神經元其實只取上一層的 n 2 個神經元(n是Filter的行數),而DNN要使用上一層所有的神經元。(還有其他地方都顯示的CNN引數少)
2. . 下一層每一個神經元之間其實共用的權重(上面已講)

2. 同一內容,只用一個神經元處理即可。哪怕在圖片中,該內容在其他地方。The same patterns appear in different regions.

這裡寫圖片描述

3. Subsampling the pixels will not change the object

這裡寫圖片描述

4. Some patterns are much smaller than the whole image

這裡寫圖片描述

考慮每個神經元主要對影象哪方面進行分類?(Which image make the a specific neuron active?)

  1. 對於第一層神經元,可以直接觀察它對每一個影象的選擇,就可以確定出該神經元偏好於哪方面的影象。
    這裡寫圖片描述
  2. 對於高層的神經元
    這裡寫圖片描述