激活函數的比較,sigmoid,tanh,relu


1. 什么是激活函數

如下圖,在神經元中,輸入inputs通過加權、求和后,還被作用了一個函數。這個函數就是激活函數Activation Function

2. 為什么要用激活函數

如果不用激活函數,每一層輸出都是上層輸入的線性函數,無論神經網路有多少層,輸出都是輸入的線性組合。與沒有隱藏層效果相當,這種情況就是最原始的感知機了。

使用的話,激活函數給神經元引入了非線性因素,使得神經網絡可以任意逼近任何非線性函數,這樣神經網絡就可以應用到眾多的非線性模型中。

3. 都有什么激活函數

(1)sigmoid函數

導數:

等式的證明也很簡單。sigmoid函數也叫Logistic函數,用於隱層神經元輸出,取值范圍為(0,1)

sigmoid缺點:

  • 激活函數計算量大,反向傳播求誤差梯度使,求導涉及除法
  • 反向傳播使,很容易就會出現梯度消失的情況,從而無法完成生成網絡的訓練
  • sigmoid兩端飽和且容易kill掉梯度
  • 收斂緩慢

為何出現梯度消失:

sigmoid原函數及導數圖如下圖所示:

由圖可知,導數從0開始很快又趨近於0,易造成"梯度消失"現象

 

(2)tanh函數(雙曲正切)

取值范圍[-1,1]。0均值,實際應用中tanh比sigmoid要好

 

(3)ReLU

公式:

輸入信號 < 0時,輸出都是0;輸入 > 0時,輸出等於輸入

1. ReLU更容易優化,因為其分段線性性質,導致其前傳、后傳、求導都是分段線性的。而傳統的sigmoid函數,由於兩端飽和,在傳播過程中容易丟失信息

2. ReLU會使一部分神經元輸出為0,造成了網絡的稀疏性,並且減少了參數的相互依存關系,緩解了過擬合。

3. 當然現在也有一些對ReLU的改進,比如lrelu、prelu,在不同的數據集上會有一些訓練速度上或者准確率上的改進。

4. 現在主流的做法,是在relu之后,加上一層batch normalization,盡可能保證每一層網絡的輸入具有相同的分布。

ReLU的缺點:

訓練的時候很"脆弱",很容易"die"

例如:一個非常大的梯度流過一個ReLU神經元,更新過參數之后,這個神經元再也不會對任何數據有激活現象了,那么這個神經元就永遠都會是0.

 

(4)softmax函數

Softmax-用於多分類神經網絡輸出

上圖所示,如果某個 zj 大過其他 z,那這個映射的分量就逼近於1,其他逼近於0,主要應用於多分類

為什么要取指數?

  1. 模擬 max 的行為,讓大的更大

  2. 需要一個可導函數

 


免責聲明!

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



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