李宏毅機器學習筆記5:CNN卷積神經網絡

李宏毅老師的機器學習課程和吳恩達老師的機器學習課程都是都是ML和DL很是好的入門資料,在YouTube、網易雲課堂、B站都能觀看到相應的課程視頻,接下來這一系列的博客我都將記錄老師上課的筆記以及本身對這些知識內容的理解與補充。(本筆記配合李宏毅老師的視頻一塊兒使用效果更佳!)html


Lecture 7: CNN

目錄git

1、CNN的引入github

2、CNN的層次結構算法

3、CNN的小Demo加深對CNN的理解網絡

4、CNN的特色機器學習

 

在學習本節課知識以前,先讓咱們來了解一下有關CNN的知識,讓咱們對CNN有一個大概的認知。卷積神經網絡(Convolutional Neural Networks, CNN)是一類包含卷積計算且具備深度結構的前饋神經網絡(Feedforward Neural Networks),是深度學習(deep learning)的表明算法之一,被大量應用於計算機視覺、圖片處理等領域。在CNN中,卷積層的神經元只與前一層的部分神經元節點相連,即它的神經元間的鏈接是非全鏈接的,且同一層中某些神經元之間的鏈接的權重 和偏移 是共享的(即相同的),這樣大量地減小了須要訓練參數的數量。ide

卷積神經網絡CNN的結構通常包含這幾個層:函數

輸入層:用於數據的輸入學習

卷積層:使用卷積核進行特徵提取和特徵映射spa

激勵層:因爲卷積也是一種線性運算,所以須要增長非線性映射

池化層:進行下采樣,對特徵圖稀疏處理,減小數據運算量。

全鏈接層:一般在CNN的尾部進行從新擬合,減小特徵信息的損失

輸出層:用於輸出結果

以上是最主要的層次結構,固然中間還可使用一些其餘的功能層:

歸一化層(Batch Normalization):在CNN中對特徵的歸一化

切分層:對某些(圖片)數據的進行分區域的單獨學習

融合層:對獨立進行特徵學習的分支進行融合


接下來就進入咱們的正題!

1、看完上面的介紹,確定有人會有一下的疑問:

爲何CNN對圖片處理有那麼好的效果呢?

計算機又是如何識別咱們人工輸入的圖片呢?

機器識圖的過程:機器識別圖像並非一會兒將一個複雜的圖片完整識別出來,而是將一個完整的圖片分割成許多個小部分,把每一個小部分裏具備的特徵提取出來(也就是識別每一個小部分),再將這些小部分具備的特徵彙總到一塊兒,就能夠完成機器識別圖像的過程了。

Why CNN for Image:CNN與全鏈接神經網絡相比,其所用的參數少的多,那爲何CNN可以作到用更少的參數做圖像處理反而獲得更好的表現結果呢?這是由於圖像具備如下三點特徵: 

(1)一些模式比整張圖片小得多,例如「鳥喙」就比整張圖片小得多;

(2)一樣的模式可能出如今圖像的不一樣區域,例如「鳥喙」可能出如今圖片的左上方也可能出如今圖像的中間;

(3)對圖像的降採樣不會改變圖像中的物體。

CNN的卷積層的設計對應着前兩點,池化層的設計對應着第三點。

 

 

 

 

2、CNN的層次結構

 1.卷積層

卷積說白了其實就是一種神經網絡的鏈接方式,就是由於這種卷積的方式,才使得CNN的參數要比全鏈接神經網絡的參數少得多。

(1)對於黑白,通道數爲1的圖片,卷積方式以下:

(2)對於彩色,通道數爲3的圖片

 

具體卷積過程(能幫助你更好的理解):http://cs231n.github.io/assets/conv-demo/index.html

(3)卷積和全鏈接方式的對比,體現出利用卷積的鏈接方式比全鏈接方式所需的參數更少。

接下來,讓咱們換個角度去看待卷積的鏈接方式

 (4)卷積層和激勵層一般合併在一塊兒稱爲「卷積層」

激勵層主要對卷積層的輸出進行一個非線性映射,而後把映射結果輸入到池化層,由於卷積層的計算仍是一種線性計算。使用的激勵函數通常爲ReLu函數:卷積層和激勵層一般合併在一塊兒稱爲「卷積層」。

2.池化層

池化層又稱下采樣,它的做用是減少數據處理量同時保留有用信息

當輸入通過卷積層時,若感覺視野比較小,布長stride比較小,獲得的feature map (特徵圖)仍是比較大,能夠經過池化層來對每個 feature map 進行降維操做,輸出的深度仍是不變的,依然爲 feature map 的個數。

池化層也有一個「池化視野(filter)」來對feature map矩陣進行掃描,對「池化視野」中的矩陣值進行計算,通常有兩種計算方式:

  • Max pooling:取「池化視野」矩陣中的最大值
  • Average pooling:取「池化視野」矩陣中的平均值

以Max pooling爲例,見下圖:

3.全鏈接層

做用:把全部局部特徵結合變成全局特徵,用來計算最後每一類的得分

換句話說全鏈接層就是把卷積層和池化層的輸出展開成一維形式,在後面接上與普通網絡結構相同的迴歸網絡或者分類網絡,通常接在池化層後面,如圖所示;

4.輸出層

輸出層就不用介紹了,就是對結果的預測值,通常會加一個softmax,其損失函數通常爲cross entropy

3、瞭解了CNN的層級結構,如今讓咱們經過一個Demo加深對CNN的理解

CNN做用於手寫數字識別,有關這個Demo我博客有一篇有詳細的介紹,歡迎跳轉瀏覽。

4、CNN的主要特色

這裏主要討論CNN相比與傳統的神經網絡的不一樣之處,CNN主要有三大特點,分別是局部感知、權重共享和多卷積核

 1.局部感知

局部感知就是咱們上面說的感覺野,實際上就是卷積核和圖像卷積的時候,每次卷積核所覆蓋的像素只是一小部分,是局部特徵,因此說是局部感知。CNN是一個從局部到總體的過程(局部到總體的實現是在全連通層),而傳統的神經網絡是總體的過程。具體以下圖所示

2.權重共享

傳統的神經網絡的參數量是很是巨大的,好比1000X1000像素的圖片,映射到和本身相同的大小,須要(1000X1000)的平方,也就是10的12次方,參數量太大了,而CNN除全鏈接層外,卷積層的參數徹底取決於濾波器的設置大小,好比10x10的濾波器,這樣只有100個參數,固然濾波器的個數不止一個,也就是下面要說的多卷積核。但與傳統的神經網絡相比,參數量小,計算量小。整個圖片共享一組濾波器的參數。

3.多卷積核

一種卷積核表明的是一種特徵,爲得到更多不一樣的特徵集合,卷積層會有多個卷積核,生成不一樣的特徵,這也是爲何卷積後的圖片的高,每個圖片表明不一樣的特徵。

 

 

參考資料:https://blog.csdn.net/soulmeetliang/article/details/73188417

     https://blog.csdn.net/xzy_thu/article/details/69808817

 


以上就是有關CNN的基礎知識介紹,歡迎交流

相關文章
相關標籤/搜索