卷積神經網絡(CNN)簡易教程

做者|Renu Khandelwal
編譯|VK
來源|Medium數組

讓咱們先來了解一下咱們的大腦是如何識別物體的。咱們將學習什麼是CNN, CNN如何利用大腦的啓發進行物體識別,CNN是如何工做的。網絡

讓咱們來了解一下咱們的大腦是如何識別圖像的機器學習

根據諾貝爾獎得到者Hubel和Wiesel教授的說法,視覺區域V1由簡單細胞和複雜細胞組成。簡單的單元有助於特徵檢測,而複雜的單元則結合了來自小空間鄰域的多個這樣的局部特徵。空間池有助於實現平移不變特徵。函數

當咱們看到一個新的圖像時,咱們能夠從左到右和從上到下掃描圖像,以瞭解圖像的不一樣特徵。咱們的下一步是結合咱們掃描的不一樣的局部特徵來對圖像進行分類。CNN就是這樣工做的性能

平移不變特徵是什麼意思?學習

圖像的不變性意味着,即便圖像旋轉、大小不一樣或在不一樣照明下觀看,對象也將被識別爲同一對象。spa

這有助於對象識別,由於圖像表示對圖像變換(如平移、旋轉或小變形等)保持不變。.net

咱們使用卷積神經網絡進行圖像識別和分類。3d

讓咱們瞭解什麼是CNN,以及咱們如何使用它。對象

CNN是什麼?

CNN是Convolutional Neural Network卷積神經網絡的縮寫,卷積神經網絡是一種專門用來處理數據的神經網絡,它的輸入形狀相似於二維的矩陣圖像。

CNN一般用於圖像檢測和分類。圖像是二維的像素矩陣,咱們在其上運行CNN來識別圖像或對圖像進行分類。識別一個圖像是一我的,仍是一輛車,或者只是一個地址上的數字。

和神經網絡同樣,CNN也從大腦中獲取啓發。咱們使用Hubel和Wiesel提出的對象識別模型。

卷積是什麼?

卷積是一種數學運算,其中咱們有一個輸入I和一個參數核K來產生一個輸出。

讓咱們用圖像來解釋。

咱們有一個圖像「x」,它是一個具備不一樣顏色通道(紅色、綠色和藍色RGB)的二維像素矩陣,咱們有一個特徵檢測器或核「w」,而後應用數學運算後獲得的輸出稱爲特徵圖

這個數學運算有助於計算兩個信號的類似度。

咱們可能有一個特徵檢測器或濾波器來識別圖像中的邊緣,因此卷積運算將有助於咱們識別圖像中的邊緣。

咱們一般假設卷積函數在除存儲值的有限點集外的任何地方都爲零。

I是二維數組,K是核卷積函數

由於卷積是可交換的,咱們能夠把上面的方程從新寫一下,以下圖所示。咱們這樣作是爲了便於在機器學習中實現,由於m和n的有效值範圍變化較小。這是大多數神經網絡使用的互相關函數。

以上是互相關函數

那麼,咱們如何在CNN中實現它呢?

咱們實現它的方式是經過卷積層

卷積層是CNN的核心構件,它有助於特徵檢測。

核K是一組可學習的過濾器,與圖像相比,它在空間上很小,可是能夠擴展到整個輸入圖像的深度。

理解這一點的一個簡單方法是,若是你是一名偵探,你在黑暗中看到一幅很大的圖像或一幅畫,你將如何識別圖像?

你將使用你的手電筒和掃描整個圖像。這正是咱們在卷積層中所作的。

核K是一個特徵檢測器,它至關於圖像I上的手電筒,咱們正在嘗試檢測特徵並建立多個特徵圖來幫助咱們識別或分類圖像。

咱們有多個特徵探測器,以幫助像邊緣檢測,識別不一樣的形狀,彎曲或不一樣的顏色等事情。

這一切是如何運做的?

讓咱們取一幅3通道5×5矩陣的圖像(RGB), 3通道3×3的特徵檢測器(RGB),而後以步長爲1來掃描圖像上的特徵檢測器。

當我在圖像上應用特徵檢測時,輸出矩陣或特徵圖的維數是多少?

特徵圖的維數與輸入圖像的大小(W)、特徵檢測器的大小(F)、步長(S)和圖像的填充大小(P)有關

\((W−F+2p)/S + 1\)

在咱們的例子中,W是輸入圖像的大小,爲5。

F是特徵檢測器接受域大小,在咱們的例子中,爲3

步長(S)爲1,圖像上使用的填充大小(P)爲0。

所以,咱們的特徵圖維度爲(5-3+0)/1+1=3。

所以特徵圖將是一個3*3的矩陣,有3個通道(RGB)。

下面一步一步進行解釋

咱們看到5×5的輸入圖像被簡化爲3×3的特徵圖,通道爲3(RGB)

咱們使用多個特徵檢測器來尋找邊緣,咱們可使用特徵檢測器來銳化圖像或模糊圖像。

若是咱們不想減小特徵圖的維數,那麼咱們可使用以下所示的填充0

在這種狀況下應用相同的公式,咱們獲得

\((W−F + 2 p) / S + 1 => (5 - 3 +2)/1 + 1= 5\)

如今輸出的尺寸將是5×5,帶有3個顏色通道(RGB)。

讓咱們看看這一切是如何運做的

若是咱們有一個3×3的特徵檢測器或濾波器,一個偏置單元,那麼咱們首先應用以下所示的線性變換

輸出=輸入*權重+誤差

參數個數 = (3 * 3 * 3)+1 = 28

對於100個特徵檢測器或過濾器,參數的數量將是2800。

在每個線性函數的卷積運算以後,咱們應用ReLU激活函數。ReLU激活函數在卷積層中引入了非線性。

它將特徵圖中的全部負像素值替換爲零。

下圖是應用ReLU激活函數後的特徵圖變換。

如今咱們已經完成了局部區域的特徵檢測,咱們將結合全部這些來自空間鄰域的特徵檢測來構建圖像。

記住你是一個在黑暗中掃描圖像的偵探,你如今已經從左到右、從上到下掃描了圖像。如今咱們須要結合全部的特徵來識別圖像

池化

咱們如今應用池來得到平移不變性。

平移的不變性意味着當咱們少許改變輸入時,合併的輸出不會改變。這有助於檢測輸入中常見的特徵,如圖像中的邊緣或圖像中的顏色

咱們使用最大池函數,它提供了比最小或平均池更好的性能。

當咱們使用最大池時,它總結了整個鄰居的輸出。與原來的特徵圖相比,咱們如今有更少的單元。

在咱們的例子中,咱們使用一個2x2的框掃描全部的特徵圖,並找到最大值。

如今咱們知道卷積網絡由如下構成

  • 並行的多重卷積,輸出是線性激活函數
  • 卷積層中應用非線性函數ReLU
  • 使用像最大池這樣的池函數來彙總附近位置的統計信息。這有助於「平移不變性」
  • 咱們將結果展平,而後將其輸入到全鏈接神經網絡

下圖是完整的卷積神經網絡

卷積使用了三個重要的思想

  • 稀疏的交互
  • 參數共享
  • 等變表示

稀疏交互或稀疏權值是經過使用小於輸入圖像的核或特徵檢測器來實現的。

若是咱們有一個大小爲256 * 256的輸入圖像,那麼就很難檢測到圖像中的邊緣,由於其可能只佔圖像中像素的一個更小的子集。若是咱們使用更小的特徵檢測器,那麼當咱們專一於局部特徵識別時,就能夠很容易地識別邊緣。

另外一個優勢是計算輸出所需的操做更少,從而提升了統計效率。

參數共享用於控制CNN中使用的參數或權值的數量。

在傳統的神經網絡中,每一個權值只使用一次,可是在CNN中,咱們假設若是一個特徵檢測器能夠用來計算一個空間位置,那麼它能夠用來計算一個不一樣的空間位置。

當咱們在CNN中共享參數時,它減小了須要學習的參數的數量,也減小了計算需求。

等變表示

這意味着目標檢測對光照、位置的變化是不變的,而內部表示對這些變化是等方差的

原文連接:https://medium.com/datadriveninvestor/convolutional-neural-network-cnn-simplified-ecafd4ee52c5

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/

相關文章
相關標籤/搜索