1. 幾種非線性激勵函數(Activation Function)
神經網絡中,正向計算時,激勵函數對輸入數據進行調整,反向梯度損失。梯度消失需要很多方式去進行規避。
1.1 Sigmoid函數
表達式為:
該函數將輸入映射到(0,1)(能否取到0和1,取決於計算機的精度),由導數可看出, 最大值為0.25,也即在反向計算時,梯度損失非常明顯,至少減少75%,
1.2 Tanh函數
表達式為:
該函數將輸入映射到(-1,1)(能否取到-1和1,取決於計算機的精度),由導數可看出,在反向計算時,梯度也會有所損失。倘若網絡深度非常深,梯度消失(gradient vanishing)。 
1.3 ReLU ( Rectified Linear Unit)函數
表達式為:
該函數將輸入分兩個段進行映射,當輸入值小於0時,則將原值映射為0,若輸入值大於0則按照原值傳遞,即,正向計算的時候,會損失特征大量,由導數可看出,在反向計算時,梯度沒有損失。
(1) ReLU的優缺點
- 1) 優點1:
Krizhevsky et al. 發現使用 ReLU 得到的SGD的收斂速度會比 sigmoid/tanh 快很多。有人說這是因為它是linear,而且梯度不會飽和
- 2) 優點2:
相比於 sigmoid/tanh需要計算指數等,計算復雜度高,ReLU 只需要一個閾值就可以得到激活值。
-
3) 缺點1:
ReLU在訓練的時候很”脆弱”,一不小心有可能導致神經元”壞死”。
舉個例子:由於ReLU在x<0時梯度為0,這樣就導致負的梯度在這個ReLU被置零,而且這個神經元有可能再也不會被任何數據激活。如果這個情況發生了,那么這個神經元之后的梯度就永遠是0了,也就是ReLU神經元壞死了,不再對任何數據有所響應。實際操作中,如果你的learning rate 很大,那么很有可能你網絡中的40%的神經元都壞死了。 當然,如果你設置了一個合適的較小的learning rate,這個問題發生的情況其實也不會太頻繁。
(2) ReLU正向截斷負值,損失大量特征,為什么依然用它?
答:特征足夠多,反向梯度無損失!
1.4 Leaky ReLU(Leaky Rectified Linear Unit)
表達式如下:
Leaky ReLU. Leaky ReLUs 就是用來解決ReLU壞死的問題的。和ReLU不同,當x<0時,它的值不再是0,而是一個較小斜率(如0.01等)的函數。也就是說f(x)=1(x<0)(ax)+1(x>=0)(x),其中a是一個很小的常數。這樣,既修正了數據分布,又保留了一些負軸的值,使得負軸信息不會全部丟失。關於Leaky ReLU 的效果,眾說紛紜,沒有清晰的定論。有些人做了實驗發現 Leaky ReLU 表現的很好;有些實驗則證明並不是這樣。
-PReLU. 對於 Leaky ReLU 中的a,通常都是通過先驗知識人工賦值的,比如說0.01
