1. 程式人生 > >ReLU激活函數的缺點

ReLU激活函數的缺點

因此 shu 數學 IV OS 固定 通過 輸入 現在

訓練的時候很”脆弱”,很容易就”die”了,訓練過程該函數不適應較大梯度輸入,因為在參數更新以後,ReLU的神經元不會再有激活的功能,導致梯度永遠都是零。
例如,一個非常大的梯度流過一個 ReLU 神經元,更新過參數之後,這個神經元再也不會對任何數據有激活現象了,那麽這個神經元的梯度就永遠都會是 0.
如果 learning rate 很大,那麽很有可能網絡中的 40% 的神經元都”dead”了。 原因:

假設有一個神經網絡的輸入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)=max(x,0)

導數如下

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

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

參考: https://www.zhihu.com/question/59031444 https://www.jianshu.com/p/22d9720dbf1a https://blog.csdn.net/disiwei1012/article/details/79204243




ReLU激活函數的缺點