參考部落格:
cnn網路中另外乙個不可導的環節就是pooling池化操作,因為pooling操作使得feature map的尺寸變化,假如做2×2的池化,假設那麼第l+1層的feature map有16個梯度,那麼第l層就會有64個梯度,這使得梯度無法對位的進行傳播下去。其實解決這個問題的思想也很簡單,就是把1個畫素的梯度傳遞給4個畫素,但是需要保證傳遞的loss(或者梯度)總和不變。根據這條原則,mean pooling和max pooling的反向傳播也是不同的。
mean pooling的前向傳播就是把乙個patch中的值求取平均來做pooling,那麼反向傳播的過程也就是把某個元素的梯度等分為n份分配給前一層,這樣就保證池化前後的梯度(殘差)之和保持不變,還是比較理解的,圖示如下 :
mean pooling比較容易讓人理解錯的地方就是會簡單的認為直接把梯度複製n遍之後直接反向傳播回去,但是這樣會造成loss之和變為原來的n倍,網路是會產生梯度**的。
max pooling也要滿足梯度之和不變的原則,max pooling的前向傳播是把patch中最大的值傳遞給後一層,而其他畫素的值直接被捨棄掉。那麼反向傳播也就是把梯度直接傳給前一層某乙個畫素,而其他畫素不接受梯度,也就是為0。所以max pooling操作和mean pooling操作不同點在於需要記錄下池化操作時到底哪個畫素的值是最大,也就是max id,這個變數就是記錄最大值所在位置的,因為在反向傳播中要用到,那麼假設前向傳播和反向傳播的過程就如下圖所示 :
反向傳播中的pooling層
pooling層是如何作用在反向傳播的過程中?曾經面試被問過這個問題,當時的回答是pooling不參與反向傳播,但是也沒深究是怎麼個不參與法。本文進行簡析。pooling通常分兩種 max和mean。由於pooling層會改變feature的尺寸,因此有如下假設成立 假設經過pooling後有n個梯...
池化層反向傳播
池化層 pooling 的反向傳播是怎麼實現的 參考 原始碼 參考部落格 在看卷積神經網路的時候,突然想起來池化是會改變特徵圖的尺寸的,那反向傳播是怎麼實現的呢。於是搜了一些部落格,感覺上面這個部落格寫得最清晰直觀,就從這個部落格裡面搬了點東西過來作為筆記。pooling池化操作的反向梯度傳播 cn...
池化層反向傳播公式推導
池化層在深度學習網路架構中的作用包括 減少計算量 減少特徵圖尺寸,減少後面的層的計算量 上述是池化層的優勢,但是隨著研究的深入,池化層的劣勢也逐漸被發現,比如有實驗發現 均值池化不利於網路的收斂 至於網路穩定性的問題,也有文獻懷疑resnet這之類加深網路結構的優化會降低網路對目標位置誤差的魯棒性,...