1. 程式人生 > >一文徹底搞懂卷積神經網路的“感受野”,看不懂你來找我!

一文徹底搞懂卷積神經網路的“感受野”,看不懂你來找我!

1537250305768859.png

 

1537520241840992.png

一、什麼是“感受野”

1.1 感受野的概念

“感受野”的概念來源於生物神經科學,比如當我們的“感受器”,比如我們的手受到刺激之後,會將刺激傳輸至中樞神經,但是並不是一個神經元就能夠接受整個面板的刺激,因為面板面積大,一個神經元可想而知肯定接受不完,而且我們同時可以感受到身上面板在不同的地方,如手、腳,的不同的刺激,如痛、癢等。這說明面板感受器是由很多不同的神經元控制的,那麼每一個神經元所能夠反映的那塊感受器的區域就稱之為“感受野”,感受野即每一個神經元所支配的區域,也可以說這個神經元的活動受到那一塊區域的影響。

      在卷積神經網路中,整個卷積運算的過程正好和上面的面板刺激過程類似,我們可以將原始影象對應看成感受器(面板),將最終的輸出看成是做出反應的那個神經元。最終輸出到底是什麼狀態(神經元的狀態)所受到的初始影象哪一塊區域的影響(受到那一塊面板的刺激)不正是上面所描述的過程嗎?於是我們給出感受野的定義如下:

      卷積神經網路每一層輸出的特徵圖(feature map)上的畫素點在原始影象上對映的區域大小;通俗點說,就是影象的最終輸出的每一個特徵(每一個畫素)到底受到原始影象哪一部分的影響。

二、圖解說明

     為了更好地說明整個卷積神經網路的工作過程,下面以一個例子說明,原始影象的大小為10x10,一共設計了5個網路層,前面4個是卷積層,卷積核的大小為3x3,最後一個是池化層,大小為2x2,為了較簡單的說明,本次所有的步幅stride均為1.

注意:感受野在計算的時候不考慮“邊界填充”,因為填充的邊界已經不是原始影象本身的內容了,感受野描述的是輸出特徵到原始影象的對映關係,故而不考慮padding 。實際建模過程中可能需要填充邊界,原理一樣,只是計算稍微複雜點。

2.1 圖解步驟拆分

2.1.1 第一次卷積運算

1.png

 

從上面可以看出:第一層網路輸出的影象中,輸出結果為8x8,output1輸出的每一個特徵(即每一個畫素)受到原始影象的3x3區域內的影響,故而第一層的感受野為3,用字母表示為                     

RF1=3   (每一個畫素值與原始影象的3x3區域有關)

2.1.2 第二次卷積運算

2.png

 

從上圖可以看出,經歷兩次卷積運算之後,最終的輸出影象為6x6,output2輸出的每一個特徵(即每一個畫素)受到output1的範圍影響為3x3,而output1中的這個3x3又收到原始影象的5x5的範圍的影響,故而第二層的感受野為5,即

RF2=5   (每一個畫素值與原始影象的5x5區域有關)

 

2.1.3 第三次卷積運算

 

3.png

從上圖可以看出,經歷三次卷積運算之後,最終的輸出影象為4x4,output3輸出的每一個特徵(即每一個畫素)受到output2的範圍影響為3x3,而output2中的這個3x3又受到output1的5x5的範圍的影響,而output1中的這個5x5又受到原始影象的7x7的範圍的影響,故而第三層的感受野為7,即

RF3=7   (每一個畫素值與原始影象的7x7區域有關)

2.1.4 第四次卷積運算

 

4.png

 

從上圖可以看出,經歷四次卷積運算之後,最終的輸出影象為2x2,output4輸出的每一個特徵(即每一個畫素)受到output3的範圍影響為3x3,而output3中的這個3x3又受到output2的5x5的範圍的影響,而output2中的這個5x5又受到output1的7x7的範圍的影響,而output1中的這個7x7又受到原始圖形的9x9的範圍的影響,故而第四層的感受野為9,即

RF4=9   (每一個畫素值與原始影象的9x9區域有關)

2.1.5 第五次卷積運算

 

5.png

 

從上圖可以看出,經歷四次卷積運算和一次池化運算之後,最終的輸出影象為1x1,output5輸出的每一個特徵(即每一個畫素)受到output4的範圍影響為2x2,而output4中的這個2x2又受到output3的4x4的範圍的影響,而output3中的這個4x4又受到output2的6x6的範圍的影響,而output2中的這個6x6受到output1的8x8的範圍的影響,而output1中的這個8x8受到原始影象的10x10的範圍的影響,故而第五層的感受野為10,即

RF5=10  (每一個畫素值與原始影象的10x10區域有關)

本節總結

從上面的地推過程可以看出,隨著卷積層數的逐漸增加,感受野的範圍在逐漸擴大,也就是說,越靠近後面的輸出,所受到的影象的畫素影響的範圍更加寬闊。卷積神經網路正是通過這種層層推進的方式,每一個卷基層都能學習到不同的特徵,最後實現相關的識別、分類等功能的

 

三、遞推公式推導

3.1 遞推公式

3.1

從上面的過程可以看出,感受野的推導是一個遞推的過程,下面將展示這一過程。

RF1=3            k1(第一層的感受野,永遠等於第一個卷積核的尺寸大小)k表示第幾個卷積層

RF2=5            k1 + (k2-1)                                                            RF1+ (k2-1)

RF3=7            k1 + (k2-1) + (k3-1)                                            RF2+ (k3-1)

RF4=9            k1 + (k2-1) + (k3-1)   + (k4-1)                             RF3+ (k4-1)

RF4=10          k1 + (k2-1) + (k3-1)   + (k4-1)    + (k5-1)             RF4+ (k5-1)

 

總結:從上面可以看出,感受野的大小的求解是一個不斷第一的過程,因為第一層的每一個畫素的感受野始終是第一個卷積核的大小,故而RF1總是最先確定,然後以此類推,逐步求出RF2、RF3、RF4、RF5……

 

    但是上面的所有步長均為 1 ,如果每一次卷積運算的步長 stride 不為1呢,同理,這裡直接給出遞推公式:

RFn=RFn-1 + (kn-1)*stride_n

其中stride_n表示的是第n次卷積的移動步幅stride。

求解過程是從RF1開始的。

全文總結

感受野是卷積神經網路中非常核心的概念,它有助於我們層層剖析每一步卷積所發生的過程,對於我們理解卷積神經網路的運算過程、本質原理都非常有幫助。

 

草樣年華.jpg