前言
激活函數,是神經網絡中實現非線性計算的關鍵,再深的線性神經網絡,本質上都和單步線性計算等價。所以,激活函數這個非線性單元是神經網絡化腐朽為神奇的關鍵。
激活函數的要求:
- 計算簡單,特別是導函數計算簡單
- 連續可導(允許在若干個點上不可導)
- 值域合理,這樣可以盡量使得不同網絡層的輸入和輸出數據相似
Sigmoid型函數
sigmoid型函數是一類S型曲線函數,兩端飽和。
logistic函數
logistic激活函數是一個左右飽和的激活函數,將輸入壓縮到(0, 1)的區間中。

它的導數也非常好計算:
tanh函數
tanh又稱雙曲正切。
它的值域是(-1, 1),所以,它是中心化的
其函數圖像如下所示:

相比之下,tanh比logistic好,第一是中心化,第二是不會導致梯度消失。
ReLu相關函數
ReLU激活函數
ReLU全稱Rectified Linear Unit,修正線性單元。
數學表達式如下:
函數圖像如下:

優勢:在x>0時導數為1,一定程度上緩解了梯度消失的問題。
缺點:死亡ReLU問題
死亡ReLU問題
如果某一個隱藏層的ReLU神經元在所有訓練數據上都不能被激活(導數都為0),那么在以后的訓練中將永遠不能被激活
因此,有很多改進的辦法。
LeakyReLU函數
LeakyReLU在x<0時也能保持一個很小的梯度\(\gamma\),其數學表達式為:
這里的\(\gamma\)是一個很小的常數。
PReLU函數
PReLU(Parametric ReLU,帶參數的ReLU)則是引入一個可學習的參數,其中對於第\(i\)個神經元有:
當然也可以設置一組神經元共享一個參數。
ELU函數
ELU全稱Exponential Linear Unit,指數線性單元。
它通過調整\(\gamma\)來近似地達到零中心化。
Softplus函數
接下來在同一張圖中對比下這幾種激活函數:

Swish函數和GLEU函數
Swish函數
Swish函數是一種自門控激活函數
\(\beta\)是可學習的或者固定的超參數,\(\sigma\)是一個Logistic函數,起到門控的作用。

可以看到:
- \(\beta = 0\),為線性函數
- \(\beta = 100\),近似為ReLU函數
所以Swish函數可以看成是線性函數和ReLU之間的非線性插值函數。
GELU函數
GELU,全稱Gaussian Error Linear Unit,高斯誤差線性單元。
其中\(P(X \leq x)\)是高斯分布\(N(\mu, \sigma^2)\)的累積分布函數。其中\(\mu\)和\(\sigma\)一般為0和1
如下圖所示,高斯分布的累積分布函數為S型函數,
高斯分布的概率密度函數為:

高斯分布的累積分布函數為:

因此GELU函數可以用Tanh函數或者Logistic函數來近似。
或者
使用Logistic函數來近似時,GELU相當於一種特殊的Swish函數。
Maxout單元
Maxout的輸入是上一層神經元的全部原始輸出\(x = [x_1; x_2; ...; x_D]\)
它有\(K\)個權重向量,最后輸出最大的那個:
其中,\(1 \leq k \leq K\).