神經元與常用的激活函數



神經網絡與深度學習-邱錫鵬》讀書筆記

神經元

神經元是構成神經網絡的基本單元,神經元的結構如下圖所示:  

           

假設一個神經元接收D個輸入$x_1,x_2,...x_D$,令向量$x=[x_1;x_2;...;x_D]$來表示這組輸入,並用凈輸入$z$表示一個神經元所獲得的輸入信號$x$的加權和,

                                                $z={\sum}_{d=1}^{D} w_d x_d+b = w^Tx+b$

        其中,$w=[w_1;w_2;...;w_D]$是D維的權重向量,b是偏置。

        凈輸入$z$在經過一個非線性函數$f(·)$后,得到神經元的活性值$a$,

                                                $a=f(z)$,

        其中非線性函數$f(·)$稱為激活函數(Activation Function).

 激活函數

激活函數:激活函數在神經元中非常重要,為了增強網絡的表示能力和學習能力,激活函數需要具備以下幾點性質

  1. 連續並可導(允許少數點上不可導)的非線性函數。可導的激活函數可以直接利用數值優化的方法來學習網絡參數
  2. 激活函數及其導函數要盡可能的簡單,有利於提高網絡計算效率
  3. 激活函數的導函數的值域要在一個合適的區間內,不能太大也不能太小,否則會影響訓練的效率和穩定性

常用的激活函數

種類:

  1. Sigmoid型函數:Logistic、Tanh
  2. ReLU(Rectified Linear Unit,修正線性單元)函數
  3. Swish函數(是一種自門控(Self-Gated)激活函數)
  4. GELU(Gaussian Error Linear Unit,高斯誤差線性單元)
  5. Maxout單元(一種分段線性函數)

 詳細介紹:

Sigmoid型函數

1.1 Logistic激活函數

函數定義為       ${\sigma}(x)=\frac{1}{1+exp(-x)}$      exp,高等數學里以自然常數e為底的指數函數,exp(-x)即 $e^{-x}$

1.2 Tanh激活函數

函數定義為       $tanh(x)=\frac{exp(x)-exp(-x)}{exp(x)+exp(-x)}$   

1.3 Hard-Logistic函數和Hard-Tanh函數

Logistic函數和Tanh函數都是Sigmoid型函數,具有飽和性,但是計算開銷較大。

Logistic函數在0附近的一階泰勒展開為    $g_l(x){\approx}{\sigma}(0)+x*{\sigma}'(0) = 0.25x+0.5$

                      這樣Logistic函數可以用分段函數hard-logistic(x)來近似

\begin{equation}
hard-logistic(x)=\left \{
\begin{array}{ll}
1 & g_l(x) \ge 1 \\
g_l & 0<g_l(x)<1 \\
0 & g_l(x) \le 0
\end{array} \right. \\
= max(min(g_l(x),1),0) \\
    = max(min(0.25x+0.5,1),0)
\end{equation}

同樣,Tanh函數在0附近的一階泰勒展開為      $g_l(x)\approx tanh(0)+x*tanh'(0)=x$

                      $hard-tanh(x)=max(min(g_t(x),1),-1)=max(min(x,1),-1)$

 ReLU函數

1.1 ReLU函數

 ReLU(Rectified Linear Unit,修正線性單元),也叫Rectifier函數,是目前深度網絡中經常使用的激活函數,ReLU實際上是一個斜坡(ramp)函數,定義為

\begin{equation}
ReLU(x)= \left \{
\begin{array}{ll}
x & x \ge 0 \\
0 & x<0
\end{array} \right. \\
=max(0,x)
\end{equation}

 優點:采用ReLU的神經元只需要進行加、乘和比較的操作,計算上更加高效,ReLU函數也被認為具有生物學合理性,比如單側抑制、寬興奮邊界(即興奮程度可以非常高),Sigmoid型激活函數會導致一個非稀疏的神經網絡,而ReLU卻具有很好的稀疏性,大約50%的神經元會處於激活狀態;在優化方面,相比於Sigmoid型函數的兩端飽和,ReLU函數為左飽和函數,且在x>0時導數為1,在一定程度上緩解了神經網絡的梯度消失問題,加速梯度下降的收斂速度。

缺點:ReLU函數的輸出是非零中心化的,給后一層的神經網絡引入偏執偏移,會影響梯度下降的效率。此外ReLU神經元在訓練時比較容易“死亡”,在訓練時,如果參數在一次不恰當的更新后,第一個隱藏層中的某個ReLU神經元在所有的訓練數據上都不能被激活,那么這個神經元自身參數的梯度永遠都會是0,在以后的訓練過程中永遠不能被激活。這種現象稱為死亡ReLU問題,並且也有可能發生在其他隱藏層。

在實際使用中,為了避免上述情況,有幾種ReLU的變種也會被廣泛使用。

1.2 帶泄露、參數的ReLU

 帶泄露的ReLU(Leaky ReLU)在輸入x<0時,保持一個很小的梯度$ \gamma $,這樣當神經元非激活時也能有一個非零的梯度可以更新參數,避免永遠不能被激活,帶泄露的ReLU的定義如下:

\begin{equation}
LeakyReLU(x) = \left\{
\begin{array}{ll}
x & \text{if x > 0} \\
\gamma x & \text{if x $\le$ 0}
\end{array} \right. \\
=max(0,x) + \gamma min(0,x).
\end{equation}

其中$\gamma$是一個很小的常熟,比如0.01.當$\gamma$<1時,帶泄露的ReLU也可以寫為:LeakyReLU(x)=max(x,$\gamma x$),相當於是一個比較簡單的maxout單元。

 帶參數的ReLU(Parametric ReLU,PReLU)引入一個可學習的參數,不同神經元可以有不同的參數。對於第i個神經元,其PReLU的定義為

\begin{equation}
LeakyReLU(x) = \left\{
\begin{array}{ll}
x & \text{if x > 0} \\
\gamma_i x & \text{if x $\le$ 0}
\end{array} \right. \\
=max(0,x) + \gamma_i min(0,x).
\end{equation}

 其中$\gamma_i$為$x \le 0$時函數的斜率。因此,PReLU是非飽和函數。如果$\gamma_i = 0$,那么PReLU就退化為ReLU.如果$\gamma_i$為一個很小的常數,則PReLU可以看作帶泄露的ReLU.PReLU可以允許不同神經元具有不同的參數,也可以一組神經元共享一個參數。

1.3 ELU

 ELU(Exponential Linear Unit,指數線性單元)是一個近似的零中心化的非線性函數,其定義為

\begin{equation}
ELU(x) = \left\{
\begin{array}{ll}
x & \text{if x > 0} \\
\gamma_i(exp(x)-1) & \text{if x $\le$ 0}
\end{array} \right. \\
=max(0,x) + \gamma_i min(0,x).
\end{equation}

其中$\gamma \ge 0$是一個超參數,決定$x \le 0$時的飽和曲線,並調整輸出均值在0附近。

1.4 Softplus

Softplus函數可以看作Rectifier函數的平滑版本,其定義為:Softplus(x)=log(1+exp(x)).  Softplus函數其導數剛好是Logistic函數.Softplus函數雖然也具有單側抑制、寬興奮邊界的特性,卻沒有稀疏激活性。

 

Swish函數 

Swish函數,是一種自門控(Self-Gated)激活函數,定義為:

$swish(x) = x \sigma (\beta x)$

其中$\sigma(·)$為Logistic函數,$\beta$為可學習的參數或一個固定超參數.$\sigma(·) \in(0,1)$可以看作一種軟性的門控機制.當$\sigma(\beta x)$接近於1時,門處於“開”狀態,激活函數的輸出近似於x本身;當$\sigma (\beta x)$接近於0時,門的狀態為“關”,激活函數的輸出近似於0.

  當$\beta = 0$時,Swish函數變成線性函數x/2.當$\beta = 1$時,Swish函數在x>0時近似線性,在x<0時近似飽和,同時具有一定的非單調性.當$\beta \to + \infty$時,$\sigma(\beta x)$趨向於離散的0-1函數,Swish函數近似為ReLU函數.因此,Swish函數可以看作線性函數和ReLU函數之間的非線性插值函數,其程度由參數$\beta$控制.

GELU函數

GELU(Gaussian Error Linear Unit,高斯誤差線性單元)也是一種通過門控機制來調整其輸出值的激活函數,和Swish函數比較類似.

$GELU(x)=xP(X \le x)$ 

 其中$P(X \le x)$是高斯分布$\mathcal{N}(\mu, \sigma^2)$的累積分布函數,其中$\mu,\sigma$為超參數,一般假設$\mu = 0,\sigma = 1即可$。由於高斯分布的累積分布函數為S型函數,因此GELU函數可以用Tanh函數或Logistic函數來近似,

$GELU(x) \approx 0.5x \Big( 1 + tanh \big( \sqrt{ \frac{2}{\pi} } (x + 0.044715 x^3) \big) \Big)$

或   $GELU(x) \approx x \sigma(1.702x)$

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

Maxout單元

Maxout單元[Goodfellow et al,2013]也是一種分段線性函數(采用Maxout單元的神經網絡也叫作Maxout網絡). Sigmoid型函數、ReLU等激活函數的輸入是神經元的凈輸入z,是一個標量.而Maxout單元的輸入是上一層神經元的全部原始輸出,是一個向量$x=[x_1;x_2; \cdot \cdot \cdot;x_D].$

每個Maxout單元有K個權重向量$w_k \in \mathbb{R}^D$和偏置b_k(1 \le k \le K).對於輸入$x$,可以得到K個凈輸入z_k,$1 \le k \le K$.

$z_k=w_k^Tx+b_k$

其中$w_k=[w_k,1,\cdot \cdot \cdot,w_k,D]^T$為第k個權重向量.

Maxout單元的非線性函數定義為

$maxout(x)=max({z_k})$ , $k \in [1,K]$

Maxout單元不單是凈輸入到輸出之間的非線性映射,而是整體學習輸入到輸出之間的非線性映射關系.Maxout激活函數可以看作任意凸函數的分段線性近似,並且在有限的點上不可微的.


免責聲明!

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



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