ReLU 激活函數:
ReLu使得網絡可以自行引入稀疏性,在沒做預訓練情況下,以ReLu為激活的網絡性能優於其它激活函數。
數學表達式: $y = max(0,x)$
ReLU 的缺點是,它在訓練時比較脆弱並且可能“死掉”。
神經元死亡:如果梯度太大,而學習率又不小心設置得太大,就會導致權重一下子更新過多,就有可能出現這種情況:對於任意訓練樣本
,網絡的輸出都是小於0的。對於relu函數來說,則所有流過這個神經元的梯度將都變成 0,該神經元不會被更新。
解決方案:
1、把relu換成leaky relu,保證讓激活函數在輸入小於零的情況下也有非零的梯度。
2、采用較小的學習率
3、采用 momentum based 優化算法,動態調整學習率
Leaky ReLU 是為解決“ ReLU 死亡”問題的嘗試。
ReLU 中當 x<0 時,函數值為 0。而 Leaky ReLU 則是給出一個很小的梯度值,比如 0.01。
maxout:Sigmoid 激活函數:
sigmoid 激活函數在神經網絡學習方面,可以將重點特征推向中央區,將非重點特征推向兩側區。
數學表達式: $y = (1 + exp(-x))^{-1}$
$ y' = y (1-y) $

缺點:
激活函數計算量大,反向傳播求梯度時,求導涉及除法
反向傳播時,很容易就會出現梯度消失或梯度爆炸的情況,從而無法完成深層網絡的訓練
梯度消失或梯度爆炸的原因:
以下圖的反向傳播為例(假設每一層只有一個神經元且對於每一層
,其中
為sigmoid函數)
可以推導出

的最大值為
,而我們初始化的網絡權值
通常都小於1,因此
,因此對於上面的鏈式求導,層數越多,求導結果
越小,因而導致梯度消失的情況出現。
這樣,梯度爆炸問題的出現原因就顯而易見了,即
,也就是
比較大的情況。但對於使用sigmoid激活函數來說,這種情況比較少。因為
的大小也與
有關(
),除非該層的輸入值
在一直一個比較小的范圍內。
Tanh 激活函數:
Tanh 激活函數使得輸出與輸入的關系能保持非線性單調上升和下降關系,比sigmoid 函數延遲了飽和期(即導數接近0),對神經網路的容錯性好。
數學表達式:

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

