2. CNN卷積網絡-前向傳播算法


1. CNN卷積網絡-初識

2. CNN卷積網絡-前向傳播算法

3. CNN卷積網絡-反向更新

1. 前言

我們已經了解了CNN的結構,CNN主要結構有輸入層,一些卷積層和池化層,后面是DNN全連接層,最后是Softmax激活函數的輸出層。這里我們用一個彩色的汽車樣本的圖像識別再從感官上回顧下CNN的結構。圖中的CONV即為卷積層,POOL即為池化層,而FC即為DNN全連接層,包括了我們上面最后的用Softmax激活函數的輸出層。

image

2. 卷積層的前向傳播

還是以上面的圖片作為例子。

先考慮最簡單的,樣本都是二維的黑白圖片。這樣輸入層\(X\)就是一個矩陣,矩陣的值等於圖片的各個像素位置的值。這時和卷積層相連的卷積核\(W\)就也是矩陣。

如果樣本都是有RGB的彩色圖片,這樣輸入\(X\)就是3個矩陣,即分別對應\([R,G,B]\)的矩陣,或者說是一個張量。這時和卷積層相連的卷積核\(W\)就也是張量,對應的最后一維的維度為3.即每個卷積核都是3個子矩陣組成。

同樣的方法,對於3D的彩色圖片之類的樣本,我們的輸入\(X\)可以是4維,5維的張量,那么對應的卷積核W也是個高維的張量。

不管維度多高,對於我們的輸入,前向傳播的過程可以表示為:

\[a^2= \sigma(z^2) = \sigma(a^1*W^2 +b^2) \]

其中,上標代表層數,星號代表卷積,而\(b\)代表我們的偏倚, \(\sigma\)為激活函數,這里一般都是\(ReLU\)

和DNN的前向傳播比較一下,其實形式非常的像,只是我們這兒是張量的卷積,而不是矩陣的乘法。同時由於\(W\)是張量,那么同樣的位置,\(W\)參數的個數就比DNN多很多了。

為了簡化我們的描述,本文后面如果沒有特殊說明,我們都默認輸入是3維的張量,即用\(RBG\)可以表示的彩色圖片。

這里需要我們自己定義的CNN模型參數是:

  1. 一般我們的卷積核不止一個,比如有\(K\)個,那么我們輸入層的輸出,或者說第二層卷積層的對應的輸入就\(K\)個。
  2. 卷積核中每個子矩陣的的大小,一般我們都用子矩陣為方陣的卷積核,比如\([F,F]\)的子矩陣。
  3. 填充padding(以下簡稱P),我們卷積的時候,為了可以更好的識別邊緣,一般都會在輸入矩陣在周圍加上若干圈的0再進行卷積,加多少圈則\(P\)為多少。
  4. 步幅stride(以下簡稱S),即在卷積過程中每次移動的像素距離大小。

3. 池化層的前向傳播

池化層的處理邏輯是比較簡單的,我們的目的就是對輸入的矩陣進行縮小概括。比如輸入的若干矩陣是\([N,N]\)維的,而我們的池化大小是\([k,k]\)的區域,則輸出的矩陣都是\([N_k,N_k]\)維的。

這里需要需要我們定義的CNN模型參數是:

  1. 池化區域的大小\(k\)
  2. 池化的標准,一般是MAX或者Average。

4. 全連接層的前向傳播

由於全連接層就是普通的DNN模型結構,因此我們可以直接使用DNN的前向傳播算法邏輯,即:

\[a^l = \sigma(z^l) = \sigma(W^la^{l-1} + b^l) \]

5. 總結

有了上面的基礎,我們現在總結下CNN的前向傳播算法。

輸入:1個圖片樣本,CNN模型的層數\(L\)和所有隱藏層的類型,對於卷積層,要定義卷積核的大小\(K\),卷積核子矩陣的維度\(F\),填充大小\(P\),步幅\(S\)。對於池化層,要定義池化區域大小k和池化標准(MAX或Average),對於全連接層,要定義全連接層的激活函數(輸出層除外)和各層的神經元個數。

輸出:CNN模型的輸出\(a_L\)

  1. 根據輸入層的填充大小\(P\),填充原始圖片的邊緣,得到輸入張量\(a_1\)
  2. 初始化所有隱藏層的參數\(W,b\)
  3. \(for\;\;l=2\;\;to\;\;L-1\):
    1. 如果第\(l\)層是卷積層,則輸出為\(a^l= ReLU(z^l) = ReLU(a^{l-1}*W^l +b^l)\)
    2. 如果第\(l\)層是池化層,則輸出為\(a_l=pool(a_{l-1})\), 這里的pool指按照池化區域大小\(k\)和池化標准將輸入張量縮小的過程。
    3. 如果第\(l\)層是全連接層,則輸出為\(a^l= \sigma(z^l) = \sigma(W^la^{l-1} +b^l)\)
  4. 對於輸出層第\(L\)層:\(a^L= softmax(z^L) = softmax(W^La^{L-1} +b^L)\)

以上就是CNN前向傳播算法的過程總結。有了CNN前向傳播算法的基礎,我們后面再來理解CNN的反向傳播算法就簡單多了。下一篇我們來討論CNN的反向傳播算法。


免責聲明!

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



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