1. 程式人生 > >卷積神經網路(CNN)一之概念原理

卷積神經網路(CNN)一之概念原理

  什麼是卷積神經網路呢?這個的確是比較難搞懂的概念,特別是一聽到神經網路,大家腦海中第一個就會想到複雜的生物學,讓人不寒而慄,那麼複雜啊.卷積神經網路是做什麼用的呢?它到底是一個什麼東東呢?

卷積神經網路的靈感源一種生物程序,其中神經元之間的聯結模式和動物視覺皮層組織非常相似。所以發明者把它叫做卷積神經網路.只是做了類比,沒有生物學知識的同學不要怕,只要有良好的數學基礎(這個也不是很容易喔).

下面看看各方神聖對CNN的概念的定義吧:

  科學的說法:

  卷積神經網路(Convolutional Neural Network,CNN)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型影象處理有出色表現。 它包括卷積層(convolutional layer)和池化層(pooling layer)。

  通俗的說法:

  簡單說,卷積神經網路是一種類似於人工神經網路的深度學習模型或多層感知機,常用於分析和處理視覺資料。

  個人理解:

  卷積神經網路是一種能夠有效對資料進行分類的神經網路演算法,它的特點是簡單,高效.

  卷積神經網路為什麼那麼火?它的優點是什麼呢?試用場景又是什麼呢?卷積神經網路包括一維卷積神經網路、二維卷積神經網路以及三維卷積神經網路。一維卷積神經網路常應用於序列類的資料處理;二維卷積神經網路常應用於影象類文字的識別;三維卷積神經網路主要應用於醫學影象以及視訊類資料識別。

可見,CNN主要用來識別位移、縮放及其他形式扭曲不變性的二維圖形

  發展歷史:

  20世紀60年代,Hubel和Wiesel在研究貓腦皮層中用於區域性敏感和方向選擇的神經元時發現其獨特的網路結構可以有效地降低反饋神經網路的複雜性,繼而提出了卷積神經網路(Convolutional Neural Networks-簡稱CNN)。現在,CNN已經成為眾多科學領域的研究熱點之一,特別是在模式分類領域,由於該網路避免了對影象的複雜前期預處理,可以直接輸

原始影象,因而得到了更為廣泛的應用。 K.Fukushima在1980年提出的新識別機是卷積神經網路的第一個實現網路。隨後,更多的科研工作者對該網路進行了改進。其中,具有代表性的研究成果是Alexander和Taylor提出的“改進認知機”,該方法綜合了各種改進方法的優點並避免了耗時的誤差反向傳播。

  幾個概念:

  1 什麼是卷積?

  2 什麼是神經網路?

  卷積神經網路的步驟解析:

卷積神經網路模型通常建立在前饋神經網路模型基礎上,只是隱藏層換成了卷積層、池化層、全連線層

卷積層:

在卷積層中,我們會計算輸入影象某個區域和權重矩陣(稱為過濾器)之間的點積結果,過濾器會在整個影象上滑動,重複相同的點積計算操作。這裡不得不提兩樣東西:

 

  • 過濾器的通道必須和輸入影象的通道數量一致。
  • 通常,隨著網路的層級越深入,你使用的過濾器也會更多,其背後的原理就是我們使用越多的過濾器就意味著會有更多的邊緣和特徵檢測。

我們計算卷積層的輸出的維度:

輸出寬度:

輸出高度:

其中:

  • W:輸入影象的寬度
  • H:輸入影象的高度
  • Fw:過濾器或核心的寬度
  • Fh:過濾器的高度
  • P:填充(padding)
  • S:步幅(stride)

 

卷積層輸出的通道數量和卷積計算期間使用的過濾器數量相同。

池化層:

有兩種最常用的池化方式——平均池化和最大池化,其中後者用的更多些。在卷積神經網路中,池化層用於降低空間維度,但不會降低網路的深度。在使用最大池化層時,我們是取用輸入區域(一個 n X m 矩陣)中的最大(影象中最敏感的區域)特徵點,而使用平均池化層時,我們取用輸入區域的平均特徵點。   非線性層:

在非線性層中,我們大多時候使用 ReLU 啟用函式,或者 S 型啟用函式和 Tan-H 啟用函式。 ReLU 啟用函式會為輸入影象中的每個負值返回 0,每個正值則返回同樣的值。

全連線層:

 在全連線層中,我們會將最後一個卷積層的輸出壓平,並把當前層的每個節點和下一層的節點相連。其實全連線層就是一種常規的人工神經網路,如下圖所示。全連線層中的操作和人工神經網路中的操作是一某一樣的: