什么是CNN--Convolutional Neural Networks


是近些年在機器視覺領域很火的模型,最先由 Yan Lecun 提出。
如果想學細節可以看 Andrej Karpathy 的 cs231n 。

How does it work?

給一張圖片,每個圓負責處理圖片的一部分。
這些圓就組成了一個 filter。
filter 可以識別圖片中是否存在指定的 pattern,以及在哪個區域存在。

 
 

下圖中有4個filter,每個filter的平行的點會負責圖片上相同的區域。

 
 

神經元利用 convolution 的技術查找pattern,簡單地理解就是用 filter 的形式去查找圖片是否具有某種 pattern。

 
 

weights 和 bias 對模型的效果起着重要的作用。

把白圓圈換成神經元,就是CNN的樣子。

 
 

Convolution層的神經元之間沒有聯系,它們各自都只連接inputs。

 
 

同一層的神經元用相同的 weights 和 bias,這樣同一層的神經元就可以抓取同樣的pattern,只不過是在圖片上的不同的區域。

 
 

接下來是 ReLU(Rectified Linear Unit) 層和 Pooling 層,它們用來構建由 convolution 層找到的 pattern。

CNN 也用 Back propagation 訓練,所以也有 vanishing gradient 的可能。而 ReLU 作為激活函數的話,gradients會大體保持常值的樣子,這樣就不會在關鍵的那幾層有很明顯的下降。

Pooling 層是用來降維的。
經過 convolution 和 ReLU 的作用后,會有越來越復雜的形式,所以Pooling 層負責提取出最重要的 pattern,進而提高時間空間的效率。

 
 

這三層可以提取出有用的 pattern,但它們並不知道這些 pattern 是什么。
所以接着是 Fully Connected 層,它可以對數據進行分類。

 
 

一個典型的 Deep CNN 由若干組 Convolution-ReLU-Pooling 層組成。


 
 

但CNN也有個缺點,因為它是監督式學習,所以需要大量的有標簽的數據





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM