這是傳統神經網絡中最常用的激活函數之一,公式和函數圖像如下:
{\displaystyle S(x)={\frac {1}{1+e^{-x}}}.}
優點:它輸出映射在(0,1)內,單調連續,非常適合用作輸出層,並且求導比較容易;
缺點:具有軟飽和性,一旦輸入落入飽和區,一階導數就變得接近於0,很容易產生梯度消失。
飽和性:當|x|>c時,其中c爲某常數,此時一階導數等於0,通俗的說一階導數就是上圖中的斜率,函數越來越水平。
tanh也是傳統神經網絡中比較常用的激活函數,公式和函數圖像如下:
tanh函數也具有軟飽和性。因爲它的輸出是以0爲中心,收斂速度比sigmoid函數要快。但是仍然無法解決梯度消失問題。
relu函數是目前用的最多也是最受歡迎的激活函數。公式和函數圖像如下:
由上圖的函數圖像可以知道,relu在x<0時是硬飽和。由於當x>0時一階導數爲1。所以,relu函數在x>0時可以保持梯度不衰減,從而緩解梯度消失問題,還可以更快的去收斂。但是,隨着訓練的進行,部分輸入會落到硬飽和區,導致對應的權重無法更新。我們稱之爲「神經元死亡」。
除了relu本身外,TensorFlow還定義了relu6,也就是定義在min(max(features, 0), 6)的tf.nn.relu6(features, name=None),以及crelu,也就是tf.nn.crelu(features, name=None).
softplus函數可以看作是relu函數的平滑版本,公式和函數圖像如下:
leakrelu函數是relu激活函數的改進版本,解決部分輸入會落到硬飽和區,導致對應的權重無法更新的問題。公式和圖像如下:
左邊縮小方差,右邊保持方差;方差整體還是縮小的,而均值得不到保障。
leakrelu函數是relu激活函數的改進版本,解決部分輸入會落到硬飽和區,導致對應的權重無法更新的問題。公式和圖像如下:
左邊縮小方差,右邊保持方差;方差整體還是縮小的,而均值得不到保障。
6. SELU函數
最近的自歸一化網絡中提出,函數和圖像如下:
藍色是:selu,橙色是:elu
左邊縮小方差,右邊放大方差,適當選取參數alpha和lambda,使得整體上保持方差與期望。如果選取:
lambda=1.0506,alpha=1.67326,那麼可以驗證如果輸入的x是服從標準正態分佈,那麼SELU(x)的期望爲0,方差爲1.