CNN 中的感受野 (Receptive Field) 是指在卷積神經網路的某一層中,每個神經元(或像素)的輸出受到前一層哪些區域的輸入所影響。換句話說,它是指輸入圖像上的一個特定區域,這個區域的資訊最終會傳遞到當前層的某個特定神經元。
可以將感受野想像成一個「視野」。對於某一層的某個神經元來說,它的感受野就是它在看原始輸入圖像的哪個部分。
理解感受野的關鍵要素:* 尺寸 (Size): 感受野的大小通常用寬度和高度來表示,指的是輸入圖像上一個區域的尺寸。例如,一個 3x3 的卷積核直接作用在輸入圖像上,那麼第一層卷積層的每個神經元的感受野就是 3x3。
* 中心 (Center): 感受野在輸入圖像上的中心位置。
* 步長 (Stride): 當卷積核在輸入圖像上滑動時,每次移動的距離稱為步長。步長會影響後續層的感受野大小和中心位置。如果步長大於 1,那麼後續層的感受野會增大得更快,並且感受野之間可能會出現間隔。
* 填充 (Padding): 在卷積操作前,有時會在輸入圖像的邊緣填充額外的像素(通常是 0)。填充會影響第一層卷積層神經元的感受野,特別是位於邊緣的那些神經元。
* 層的深度 (Network Depth): 隨著網路層數的增加,深層神經元的感受野也會隨之增大。這是因為每一層的卷積操作都會基於前一層的感受野進行。例如,如果第一層的卷積核是 3x3,第二層也是 3x3,那麼第二層的某個神經元會看到第一層的 3x3 區域,而第一層的這個 3x3 區域又對應到原始輸入圖像的一個更大的區域,這個更大的區域就是第二層神經元的感受野。
如何計算感受野大小:
感受野的大小可以通過遞迴計算得到。假設第 l 層的感受野大小為 RF_l,卷積核大小為 K_l,步長為 S_l,那麼第 l+1 層的感受野大小 RF_{l+1} 可以通過以下公式計算(假設沒有填充):
RF_{l+1} = RF_l + (K_{l+1} - 1) \times S_l
對於第一層卷積層,感受野的大小就等於卷積核的大小。
感受野的重要性:
* 理解網路的行為: 了解每個神經元的感受野大小可以幫助我們理解網路學習到了什麼層次的特徵。淺層的感受野通常比較小,負責檢測局部細節(如邊緣、角點),而深層的感受野通常比較大,能夠捕捉到更全局和更複雜的特徵(如物體的整體形狀)。
* 設計網路架構: 在設計 CNN 架構時,需要考慮感受野的大小是否適合當前的任務。例如,對於需要理解全局上下文的任務(如圖像分類),可能需要設計具有較大感受野的網路。
* 目標檢測: 在目標檢測任務中,感受野的大小需要與目標物體的大小相匹配,才能有效地檢測到目標。
總結來說,CNN 中的感受野是衡量網路神經元「視野」大小的重要概念。理解感受野對於設計和分析 CNN 架構,以及理解網路如何學習圖像特徵至關重要。