天天看點

'Dead ReLU Problem' 産生的原因

原文位址:https://www.quora.com/What-is-the-dying-ReLU-problem-in-neural-networks

譯者話:看了一些激活函數優缺點的中文部落格,很少有人去解釋’Dead ReLU’現象,無奈隻能去國外的論壇找答案了,于是就有這篇翻譯,感覺挺有道理。

假設有一個神經網絡的輸入W遵循某種分布,對于一組固定的參數(樣本),w的分布也就是ReLU的輸入的分布。假設ReLU輸入是一個低方差中心在+0.1的高斯分布。

在這個場景下:

  • 大多數ReLU的輸入是正數,是以
  • 大多數輸入經過ReLU函數能得到一個正值(ReLU is open),是以
  • 大多數輸入能夠反向傳播通過ReLU得到一個梯度,是以
  • ReLU的輸入(w)一般都能得到更新通過随機反向傳播(SGD)

現在,假設在随機反向傳播的過程中,有一個巨大的梯度經過ReLU,由于ReLU是打開的,将會有一個巨大的梯度傳給輸入(w)。這會引起輸入w巨大的變化,也就是說輸入w的分布會發生變化,假設輸入w的分布現在變成了一個低方差的,中心在-0.1高斯分布。

在這個場景下:

  • 大多數ReLU的輸入是負數,是以
  • 大多數輸入經過ReLU函數能得到一個0(ReLU is close),是以
  • 大多數輸入不能反向傳播通過ReLU得到一個梯度,是以
  • ReLU的輸入w一般都得不到更新通過随機反向傳播(SGD)

發生了什麼?隻是ReLU函數的輸入的分布函數發生了很小的改變(-0.2的改變),導緻了ReLU函數行為質的改變。我們越過了0這個邊界,ReLU函數幾乎永久的關閉了。更重要的是ReLU函數一旦關閉,參數w就得不到更新,這就是所謂的‘dying ReLU’。

(譯者:下面有一段關于神經元死亡後能夠複活的讨論,未翻譯)

從數學上說,這是因為ReLU的數學公式導緻的

r(x)=max(x,0) r ( x ) = m a x ( x , 0 )

導數如下

Δxr(x)=1(x>0) Δ x r ( x ) = 1 ( x > 0 )

是以可以看出,如果在前向傳播的過程中ReLU is close,那麼反向傳播時,ReLU也是close的。

我不确定ReLU dying在實際中是否經常發生,但是顯然值得關注。希望你能明白為什麼大的學習率可能是這裡的罪魁禍首。在反向傳播的過程中,大的梯度更新,可能會導緻參數W的分布小于0。

繼續閱讀