各個啟用函式對比

2022-09-15 10:36:15 字數 2063 閱讀 2269

1. sigmod函式

函式公式和圖表如下圖

在sigmod函式中我們可以看到,其輸出是在(0,1)這個開區間內,這點很有意思,可以聯想到概率,但是嚴格意義上講,不要當成概率。sigmod函式曾經是比較流行的,它可以想象成乙個神經元的放電率,在中間斜率比較大的地方是神經元的敏感區,在兩邊斜率很平緩的地方是神經元的抑制區。

當然,流行也是曾經流行,這說明函式本身是有一定的缺陷的。

1) 當輸入稍微遠離了座標原點,函式的梯度就變得很小了,幾乎為零。在神經網路反向傳播的過程中,我們都是通過微分的鏈式法則來計算各個權重w的微分的。當反向傳播經過了sigmod函式,這個鏈條上的微分就很小很小了,況且還可能經過很多個sigmod函式,最後會導致權重w對損失函式幾乎沒影響,這樣不利於權重的優化,這個問題叫做梯度飽和,也可以叫梯度瀰散。

2) 函式輸出不是以0為中心的,這樣會使權重更新效率降低。對於這個缺陷,不對稱,看不到正負樣本對網路的影響效果和梯度在正負樣本時的下降效果,對稱時,正樣本不下降,負樣本下降很明顯。

3) sigmod函式要進行指數運算,這個對於計算機來說是比較慢的。

2.tanh函式

tanh函式公式和曲線如下

tanh是雙曲正切函式,tanh函式和sigmod函式的曲線是比較相近的,咱們來比較一下看看。首先相同的是,這兩個函式在輸入很大或是很小的時候,輸出都幾乎平滑,梯度很小,不利於權重更新;不同的是輸出區間,tanh的輸出區間是在(-1,1)之間,而且整個函式是以0為中心的,這個特點比sigmod的好。

一般二分類問題中,隱藏層用tanh函式,輸出層用sigmod函式。不過這些也都不是一成不變的,具體使用什麼啟用函式,還是要根據具體的問題來具體分析,還是要靠除錯的。

3.relu函式

relu函式公式和曲線如下

relu(rectified linear unit)函式是目前比較火的乙個啟用函式,相比於sigmod函式和tanh函式,它有以下幾個優點:

1) 在輸入為正數的時候,不存在梯度飽和問題。

2) 計算速度要快很多。relu函式只有線性關係,不管是前向傳播還是反向傳播,都比sigmod和tanh要快很多。(sigmod和tanh要計算指數,計算速度會比較慢)

當然,缺點也是有的:

1) 當輸入是負數的時候,relu是完全不被啟用的,這就表明一旦輸入到了負數,relu就會死掉。這樣在前向傳播過程中,還不算什麼問題,有的區域是敏感的,有的是不敏感的。但是到了反向傳播過程中,輸入負數,梯度就會完全到0,這個和sigmod函式、tanh函式有一樣的問題。

2) 我們發現relu函式的輸出要麼是0,要麼是正數,這也就是說,relu函式也不是以0為中心的函式。

4.elu函式

elu函式公式和曲線如下圖

elu函式是針對relu函式的乙個改進型,相比於relu函式,在輸入為負數的情況下,是有一定的輸出的,而且這部分輸出還具有一定的抗干擾能力。這樣可以消除relu死掉的問題,不過還是有梯度飽和和指數運算的問題。

5.prelu函式

prelu函式公式和曲線如下圖

prelu也是針對relu的乙個改進型,在負數區域內,prelu有乙個很小的斜率,這樣也可以避免relu死掉的問題。相比於elu,prelu在負數區域內是線性運算,斜率雖然小,但是不會趨於0,這算是一定的優勢吧。

我們看prelu的公式,裡面的引數α一般是取0~1之間的數,而且一般還是比較小的,如零點零幾。當α=0.01時,我們叫prelu為leaky relu,算是prelu的一種特殊情況吧。

總體來看,這些啟用函式都有自己的優點和缺點,沒有一條說法表明哪些就是不行,哪些啟用函式就是好的,所有的好壞都要自己去實驗中得到。

常見啟用函式對比

參考blog 啟用函式的主要功能是為神經網路非線性能力 去掉啟用函式層,神經網路僅剩下線性函式,多層線性函式的擬合還是線性的,無法更好的建模生活中的大多數非線性問題。線性啟用函式 不是重點 非線性啟用函式 sigmod,tanh,relu,lrelu,prelu,swish 考量 公式 f x 11...

神經網路 啟用函式對比

本部落格僅為作者記錄筆記之用,不免有很多細節不對之處。還望各位看官能夠見諒,歡迎批評指正。日常 coding 中,我們會很自然的使用一些啟用函式,比如 sigmoid relu等等。不過好像忘了問自己一 n 件事 為什麼需要啟用函式?啟用函式都有哪些?都長什麼樣?有哪些優缺點?怎麼選用啟用函式?此圖...

Sigmoid和Relu啟用函式的對比

深度學習筆記 4 sigmoid和relu啟用函式的對比 relu是乙個非常優秀的啟用哈數,相比較於傳統的sigmoid函式,有三個作用 1.防止梯度瀰散 2.稀疏啟用性 3.加快計算 首先我們看下sigmoid和relu的曲線 然後可以得到sigmoid的導數 以及relu的導數 結論就是sigm...