激活函數綜述


前言

激活函數,是神經網絡中實現非線性計算的關鍵,再深的線性神經網絡,本質上都和單步線性計算等價。所以,激活函數這個非線性單元是神經網絡化腐朽為神奇的關鍵。

激活函數的要求:

  1. 計算簡單,特別是導函數計算簡單
  2. 連續可導(允許在若干個點上不可導)
  3. 值域合理,這樣可以盡量使得不同網絡層的輸入和輸出數據相似

Sigmoid型函數

sigmoid型函數是一類S型曲線函數,兩端飽和。

logistic函數

logistic激活函數是一個左右飽和的激活函數,將輸入壓縮到(0, 1)的區間中。

\[logistic(x) = \frac{1}{1+e^{-x}} \]

它的導數也非常好計算:

\[f(x) = logistic(x)\\ f(x)' = f(x)[1-f(x)] \]

tanh函數

tanh又稱雙曲正切。

它的值域是(-1, 1),所以,它是中心化的

\[tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} \]

其函數圖像如下所示:

相比之下,tanh比logistic好,第一是中心化,第二是不會導致梯度消失。

ReLu相關函數

ReLU激活函數

ReLU全稱Rectified Linear Unit,修正線性單元。

數學表達式如下:

\[ReLu(x) = max(0, x) \]

函數圖像如下:

優勢:在x>0時導數為1,一定程度上緩解了梯度消失的問題。

缺點:死亡ReLU問題

死亡ReLU問題

如果某一個隱藏層的ReLU神經元在所有訓練數據上都不能被激活(導數都為0),那么在以后的訓練中將永遠不能被激活

因此,有很多改進的辦法。

LeakyReLU函數

LeakyReLU在x<0時也能保持一個很小的梯度\(\gamma\),其數學表達式為:

\[LeakyReLU(x) = \begin{cases} x, & x>=0\\ \gamma x, & x<0 \end{cases} \]

這里的\(\gamma\)是一個很小的常數。

PReLU函數

PReLU(Parametric ReLU,帶參數的ReLU)則是引入一個可學習的參數,其中對於第\(i\)個神經元有:

\[PReLU_i(x) = \begin{cases} x, & x>0\\ \gamma_i x, & x \leq 0 \end{cases} \]

當然也可以設置一組神經元共享一個參數。

ELU函數

ELU全稱Exponential Linear Unit,指數線性單元。

它通過調整\(\gamma\)來近似地達到零中心化。

\[ELU(x) = \begin{cases} x, & x>0\\ \gamma(e^x - 1), & x \leq 0 \end{cases} \]

Softplus函數

\[Softplus(x) = \log (1+e^x) \]

接下來在同一張圖中對比下這幾種激活函數:

Swish函數和GLEU函數

Swish函數

Swish函數是一種自門控激活函數

\[swish(x) = x \sigma(\beta x) \]

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

可以看到:

  • \(\beta = 0\),為線性函數
  • \(\beta = 100\),近似為ReLU函數

所以Swish函數可以看成是線性函數和ReLU之間的非線性插值函數。

GELU函數

GELU,全稱Gaussian Error Linear Unit,高斯誤差線性單元。

\[GELU(x) = xP(X \leq x) \]

其中\(P(X \leq x)\)是高斯分布\(N(\mu, \sigma^2)\)的累積分布函數。其中\(\mu\)\(\sigma\)一般為0和1

如下圖所示,高斯分布的累積分布函數為S型函數,

高斯分布的概率密度函數為:

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

因此GELU函數可以用Tanh函數或者Logistic函數來近似。

\[GELU(x) \approx 0.5x(1 + tanh(\sqrt \frac{2}{\pi} (x + 0.044715x^3))) \]

或者

\[GELU(x) \approx x\sigma(1.702x) \]

使用Logistic函數來近似時,GELU相當於一種特殊的Swish函數。

Maxout單元

Maxout的輸入是上一層神經元的全部原始輸出\(x = [x_1; x_2; ...; x_D]\)

它有\(K\)個權重向量,最后輸出最大的那個:

\[z_k = w_k^T x + b_k\\ maxout(x) = \max_{k \in [1, K]}(z_k) \]

其中,\(1 \leq k \leq K\).



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM