神經網絡中各種激活函數比較


ReLU 激活函數:

ReLu使得網絡可以自行引入稀疏性,在沒做預訓練情況下,以ReLu為激活的網絡性能優於其它激活函數。 
數學表達式: $y = max(0,x)$

第一,sigmoid的導數只有在0附近的時候有比較好的激活性,在正負飽和區的梯度都接近於0,所以這會造成 梯度消失,而 relu函數在大於0的部分梯度為常數,所以 正半區 不會產生梯度消失現象。第二, relu函數在負半區的導數為0 ,所以一旦神經元激活值進入負半區,那么 梯度就會 為0,也就是說這個神經元不會經歷訓練,即所謂的稀疏性。第三, relu函數的導數計算更快,程序實現就是一個if-else語句,而 sigmoid函數要進行浮點四則運算

ReLU 的缺點是,它在訓練時比較脆弱並且可能“死掉”

神經元死亡:如果梯度太大,而學習率又不小心設置得太大,就會導致權重一下子更新過多,就有可能出現這種情況:對於任意訓練樣本 [公式] ,網絡的輸出都是小於0的。對於relu函數來說,則所有流過這個神經元的梯度將都變成 0,該神經元不會被更新。

解決方案:

1、把relu換成leaky relu,保證讓激活函數在輸入小於零的情況下也有非零的梯度。

2、采用較小的學習率

3、采用 momentum based 優化算法,動態調整學習率

Leaky ReLU 是為解決“ ReLU 死亡”問題的嘗試。

ReLU 中當 x<0 時,函數值為 0。而 Leaky ReLU 則是給出一個很小的梯度值,比如 0.01

maxout
https://arxiv.org/pdf/1302.4389.pdf
 
Maxout 具有 ReLU 的 優點(如:計算簡單,不會 梯度飽和),同時又沒有 ReLU 的一些缺點 (如:容易 go die)。不過呢,還是有一些 缺點的嘛:就是把參數double了。

Sigmoid 激活函數:

sigmoid 激活函數在神經網絡學習方面,可以將重點特征推向中央區,將非重點特征推向兩側區。 
數學表達式: $y = (1 + exp(-x))^{-1}$  

$ y' = y (1-y) $

缺點:

激活函數計算量大,反向傳播求梯度時,求導涉及除法
反向傳播時,很容易就會出現梯度消失或梯度爆炸的情況,從而無法完成深層網絡的訓練

梯度消失或梯度爆炸的原因:

以下圖的反向傳播為例(假設每一層只有一個神經元且對於每一層y_i=\sigma\left(z_i\right)=\sigma\left(w_ix_i+b_i\right),其中\sigma為sigmoid函數)

可以推導出

\begin{align}
&\frac{\partial C}{\partial b_1}=\frac{\partial C}{\partial y_4}\frac{\partial y_4}{\partial z_4}\frac{\partial z_4}{\partial x_4}\frac{\partial x_4}{\partial z_3}\frac{\partial z_3}{\partial x_3}\frac{\partial x_3}{\partial z_2}\frac{\partial z_2}{\partial x_2}\frac{\partial x_2}{\partial z_1}\frac{\partial z_1}{\partial b_1}\\
&=\frac{\partial C}{\partial y_4}\sigma'\left(z_4\right)w_4\sigma'\left(z_3\right)w_3\sigma'\left(z_2\right)w_2\sigma'\left(z_1\right)
\end{align}

\sigma'\left(x\right)的最大值為\frac{1}{4},而我們初始化的網絡權值|w|通常都小於1,因此|\sigma'\left(z\right)w|\leq\frac{1}{4},因此對於上面的鏈式求導,層數越多,求導結果\frac{\partial C}{\partial b_1}越小,因而導致梯度消失的情況出現。

這樣,梯度爆炸問題的出現原因就顯而易見了,即|\sigma'\left(z\right)w|>1,也就是w比較大的情況。但對於使用sigmoid激活函數來說,這種情況比較少。因為\sigma'\left(z\right)的大小也與w有關(z=wx+b),除非該層的輸入值x在一直一個比較小的范圍內。

其實 梯度爆炸和梯度消失問題都是因為網絡太深,網絡權值更新不穩定造成的,本質上是因為梯度反向傳播中的連乘效應(導數的鏈式求導法則)。對於更普遍的梯度消失問題, 可以考慮用ReLU激活函數取代sigmoid激活函數。另外,LSTM的結構設計也可以改善RNN中的梯度消失問題。

 

Tanh 激活函數:

Tanh 激活函數使得輸出與輸入的關系能保持非線性單調上升和下降關系,比sigmoid 函數延遲了飽和期(即導數接近0)對神經網路的容錯性好。 
數學表達式: 

$y' = \frac{4}{(e^x + e^{-x})^2}$

 


免責聲明!

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



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