啟用函式總結 2020 2 10

2022-04-28 21:27:18 字數 1793 閱讀 4802

首先,我們先通過三個問題掌握神經網路啟用函式的概念及意義:

1. 為什麼需要啟用函式?

神經網路可以看成是乙個多層復合函式,早期引入啟用函式就是為了使其具有非線性,因為引入之前為線性函式相互復合,但這樣得到的最終結果仍舊是線性的。假如需要將乙個 n 維向量,變成 m 維的向量(即:\(r^n \rightarrow r^m\)),則需要利用啟用函式的非線性來達到目的。

2. 什麼函式可用作啟用函式?萬能逼近定理:

優點:用乙個簡單到不能再簡單的函式的線性組合和疊合可以逼近任何連續函式。

缺點:天下沒有免費的午餐。

舉例:3. 如何評價啟用函式的好壞?

首先,我們需要了解梯度消失、梯度**兩個概念。其中,好的啟用函式就需要盡可能避免這兩種現象。

梯度消失

反向傳播演算法在計算誤差時每一層都會乘以本層啟用函式的導數。如果本層啟用函式的導數絕對值小於1,那麼多次連乘後會導致誤差項逐漸接近於0,由於引數的梯度值由誤差值計算所得,因此會導致前幾層的權重梯度接近於0,這樣引數並不會得到更新。因此,該現象被稱為梯度消失問題

梯度**

梯度**可以看做與梯度消失相反,即啟用函式的導數絕對值大於1,多次連乘後的誤差項會趨於乙個非常大的數,由此造成梯度**。

下圖是一些常見的啟用函式及其導數,後文將對其概念及應用場景進行大致介紹。

!(一)sigmod函式

\[f(x) = \frac}

\]sigmod函式影象:

sigmod函式能夠將輸入的連續實值規範到0~1之間輸出。特別地,如果輸入的數非常大的負數,那麼輸出為0;如果輸出是非常大的正數,那麼輸出為1。

sigmod缺點

在深度神經網路中,容易導致梯度消失。

sigmod的輸出不是zero-centered(0均值),會導致後一層的神經元得到上一層輸出的非0值訊號作為輸入值,可能同時導致收斂緩慢。

計算過程含冪運算,求解耗時。

(二)tanh函式

\[tanh(x) = \frac}}

\]tanh函式影象:

tanh讀作hyperbolic tangent,可以看做是sigmod的改進,解決了sigmoid函式的不是zero-centered輸出問題,然而,梯度消失(gradient vanishing)的問題和冪運算的問題仍然存在。

(二)relu函式

\[relu = max(0,x)

\]relu函式影象:

relu函式優點

解決了梯度消失的問題,所有的值均≥0.

計算速度快,僅需與0比較,取max即可。

收斂速度比sigmod和tanh更快。

relu函式注意事項

目前relu 函式作為常用的啟用函式,在引數初始化和設定學習率時需要注意,否則容易造成dead relu problem(即一些神經元永遠不會被啟用,導致相應的引數永遠不會被更新。)

解決辦法:

參考部落格:

參考部落格:

啟用函式總結

一 主要作用 啟用函式的主要作用就是加入非線性因素,以解決線性模型表達能力不足的缺陷,在整個神經網路起到至關重要的作用。在神經網路中常用的啟用函式有sigmoid tanh和relu等,下面逐一介紹。二 sigmod函式 1 函式介紹 sigmoid是常用的非線性的啟用函式,數學公式如下 2 函式曲...

啟用函式總結

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

啟用函式總結

cnn rnn各種模型啟用函式總結 sigmoid函式是早期非常經典的啟用函式,輸出值在 0,1 之間,當輸入值為非常大負數時,值為0,當輸入值非常大正數時,值為1。sigmoid非常經典,但是現在它以不太受歡迎,原因是它存在乙個幾個比較大的缺陷,後面做詳細討論。tanh函式是sigmoid函式的一...