當前位置:
首頁 > 最新 > 神經網路中常用的激活函數的說明

神經網路中常用的激活函數的說明

1 為什麼要使用激活函數

如果不用激勵函數(其實相當於激勵函數是f(x) = x),在這種情況下你每一層輸出都是上層輸入的線性函數,很容易驗證,無論你神經網路有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,這種情況就是最原始的感知機(Perceptron)了。 正因為上面的原因,我們決定引入非線性函數作為激勵函數,這樣深層神經網路就有意義了(不再是輸入的線性組合,可以逼近任意函數)。

2常見的幾個激活函數以及說明

2.1 sigmoid函數

Sigmoid函數的表達式y=1/(1+e^(-x))函數曲線如下圖所示

從數學上來看,Sigmoid函數對中央區的信號增益較大,對兩側區的信號增益小

2.2 tanh函數

y=(e^x-e^(-x))/(e^x+e^-x)也屬於S型函數,是0均值,其函數曲線與Sigmoid函數相似,下圖是兩者的比較

具體應用中,tanh函數比sigmoid函數更好,其實從數學角度,你可以看到

,更一般的我們可以證明

在x軸上任意一點,都有:

所以,當處理big data時,雙曲正切的導數的絕對值>sigmoid導數的絕對值導致tanh函數更容易找到局部或者全局最優點(下降速度快)換句話說,如果你用tanh函數作為激活函數,能更快使你的損失函數收斂到局部或者全局最小值。其次,兩者的導數範圍不一樣,sigmoid的導數取值範圍是

而tanh函數導數的取值範圍是

tanh函數導數的取值範圍更大

3 relu函數

relu函數的全稱是:Rectified Linear Units,公式是

函數圖像如下

相比於 sigmoid/tanh,ReLU 只需要一個閾值就可以得到激活值,而不用去算一大堆複雜的運算。

二維情況下,使用relu之後的效果

為什麼relu不會造成梯度彌散(梯度消失)

什麼叫梯度彌散:具體來說就是當使用反向傳播方法計算導數的時候,隨著網路的深度的增加,反向傳播的梯度(從輸出層到網路的最初幾層)的幅度值會急劇地減小。結果就造成了整體的損失函數相對於最初幾層的權重的導數非常小。這樣,當使用梯度下降法的時候,最初幾層的權重變化非常緩慢,以至於它們不能夠從樣本中進行有效的學習。這種問題通常被稱為「梯度的彌散」

relu的導數圖形如下

下面解釋為什麼Relu不會造成梯度彌散(摘自知乎)

S型函數(如sigmoid函數,tanh函數)在正負飽和區的梯度都接近於0,所以這會造成梯度彌散,而relu函數在大於0的部分梯度為常數,所以不會產生梯度彌散現象

其次:relu函數具有稀疏激活性(原因)

隨著訓練的推進,部分輸入會落入x

relu導數計算更快

參考文獻:[1]https://www.zhihu.com/question/52020211

[2]https://stats.stackexchange.com/questions/330559/why-is-tanh-almost-always-better-than-sigmoid-as-an-activation-function

tanhx=2σ(2x)?1


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 馬小白成長記 的精彩文章:

TAG:馬小白成長記 |