什么~為什么~哪些(RSST)
一、什么是激活函數
如下圖,在神經元中,輸入的 inputs 通過加權,求和后,還被作用了一個函數,這個函數就是激活函數 Activation Function:
二、為什么要用激活函數
如果不用激勵函數,每一層輸出都是上層輸入的線性函數,無論神經網絡有多少層,輸出都是輸入的線性組合
如果使用的話,激活函數給神經元引入了非線性因素,使得神經網絡可以任意逼近任何非線性函數,這樣神經網絡就可以應用到眾多的非線性模型中
三、常用的有哪些激活函數
1)Sigmoid函數:
公式:
曲線:
導數:
sigmoid函數取值范圍為(0,1),它可以將一個實數映射到(0,1)的區間,可以用來做二分類
缺點:
1)容易出現梯度消失(gradient vanishing)的現象:當激活函數接近飽和區時,導數接近0,后向傳遞的數學依據是微積分求導的鏈式法則,當前導數需要之前各層導數的乘積,幾個比較小的數相乘,導數結果很接近0,從而無法完成深層網絡的訓練
2)冪運算相對耗時
為何會出現梯度消失:
反向傳播算法中,要對激活函數求導,sigmoid 原函數及導數圖形如下:
由圖可知,導數從 0 開始很快就又趨近於 0 了,易造成“梯度消失”現象
Sigmoid 的軟飽和性,使得深度神經網絡在二三十年里一直難以有效的訓練,是阻礙神經網絡發展的重要原因。具體來說,由於在后向傳遞過程中,sigmoid向下傳導的梯度包含了一個f‘(x) 因子(sigmoid關於輸入的導數)
因此一旦輸入落入飽和區,f‘(x) 就會變得接近於0,導致了向底層傳遞的梯度也變得非常小。此時,網絡參數很難得到有效訓練。這種現象被稱為梯度消失
一般來說, sigmoid 網絡在 5 層之內就會產生梯度消失現象[Understanding the difficulty of training deep feedforward neural networks]
梯度消失問題至今仍然存在,但被新的優化方法有效緩解了
Sigmoid 的飽和性雖然會導致梯度消失,但也有其有利的一面。例如它在物理意義上最為接近生物神經元。(0, 1) 的輸出還可以被表示作概率,或用於輸入的歸一化,代表性的如Sigmoid交叉熵損失函數
2)Tanh函數
公式:
曲線:
也稱為雙切正切函數,取值范圍為[-1,1]。tanh在特征相差明顯時的效果會很好,在循環過程中會不斷擴大特征效果
與 sigmoid 的區別是,tanh 是 0 均值的,因此實際應用中 tanh 會比 sigmoid 更好
3)ReLU
Rectified Linear Unit(ReLU) - 用於隱層神經元輸出
公式:
曲線:
RELU特點:輸入信號 0 的情況下,輸出等於輸入
ReLU 的優點:
Krizhevsky et al. 發現使用 ReLU 得到的 SGD 的收斂速度會比 sigmoid/tanh 快很多
ReLU 的缺點:
訓練的時候很”脆弱”,很容易就”die”了
例如,一個非常大的梯度流過一個 ReLU 神經元,更新過參數之后,這個神經元再也不會對任何數據有激活現象了,那么這個神經元的梯度就永遠都會是 0
如果 learning rate 很大,那么很有可能網絡中的 40% 的神經元都”dead”了
4) softmax函數
Softmax - 用於多分類神經網絡輸出
公式:
舉個例子來看公式的意思:
為什么要取指數,第一個原因是要模擬max 的行為,所以要讓大的更大,第二個原因是需要一個可導的函數
四、致謝
本文參考:https://baijiahao.baidu.com/s?id=1609895552884544265
非常感謝!