1 3 3 啟用函式介紹

2021-08-17 02:35:34 字數 1830 閱讀 4573

到目前為止,我們使用的啟用函式全部都是

σ σ

函式,然而這並不一定是最好的函式,有時其他可選的函式效果也很好,下面我們來介紹一下其他的函式。

如圖所示,我們在這裡使用

σ σ

函式作為啟用函式。我們現在使用g(z(x)),作為更一般的可以使用的函式。我們這裡介紹一下tanhx,是雙曲正切函式。tanhx,實際上在數學上是

σ σ

函式經過平移之後的結果。tanhx相比於

σ σ

函式更好的一點,就是他介於-1到1之間,平均值為0。而

σ σ

函式的平均值為0.5。這實際上可以讓下層的學習更方便一些。因為tanhx的平均值為0,所以幾乎在任何場景下,他的結果都比

σ σ

函式更好,但是有乙個例外是在輸出的**值y^,因為我們希望輸出的**值介於0和1之間,而不是-1和1之間。在這裡

σ σ

函式要效果好很多。這時我們應該使用

σ σ

函式作為輸出層。

不過這兩個函式也有乙個缺點,從影象中我們可以看到,當z很大或者很小的時候,z的變化量接近於0,這在於我們求梯度的時候效果非常糟糕,會拖慢學習進度。

我們還有乙個relu函式,為的就是應對這個問題,通常情況下我們都會使relu函式作為神經網路的啟用函式,如果你不知道選什麼函式作為啟用函式,一般就選擇relu函式。不過relu函式有乙個缺點,就是如果z,是負數的時候,那麼導數為0。在實踐中使用relu函式,相比於tanh函式和

σ σ

函式而言,學習效率會高很多,因為他沒有斜率接近於0的時候。

最後,我們總結一下,如圖所示:

深度學習的乙個特點就是在建立神經網路時,可以有很多不同的選擇,比如隱藏單元、啟用函式,還有如何初始化權重。

為什麼神經網路必須要用非線性的函式呢,我們這裡來解釋一下:

如圖所示,如果我們捨去啟用函式,或者乾脆就讓啟用函式就等於z本身,而不做一些非線性處理,在圖的右側我們可以看出,最後的結果是a[

2]=w

『x+b

『 a[2

]=w『

x+b『

依舊是線性的。

下面我們介紹一下如何用梯度下降法來處理單隱層神經網路。

如圖所示,左側是正向傳播的計算流程,右側是反向傳播的計算流程。右側我們有乙個語句:

np.sum(dz, axis=1, keepdims=true )
這個命令中axis=1表示的是要水平相加求和,keepdims=true表示的是防止python輸出古怪的秩為1的陣列,保證輸出的是矩陣。

還有乙個公式:dz

=wtd

z∗g『

(z) dz=

wtdz

∗g『(

z)其中g『

(z) g『(

z)表示的是隱藏層啟用函式的導數,注意這裡我們所不同的是乘號兩邊兩個矩陣逐個元素相乘

輸出層的公式:dz

=a−y

d z=

a−y假設的是用sigmod函式進行乙個二元分類。

啟用函式介紹

relu對比sigmoid主要變化 1.單側抑制 2.相對寬闊的興奮邊界 3.稀疏啟用性 1 sigmoid函式 曲線很像 s 型 公式 曲線 也叫 logistic 函式,用於隱層神經元輸出 取值範圍為 0,1 它可以將乙個實數對映到 0,1 的區間,可以用來做二分類。它不像svm直接給出乙個分類...

常用啟用函式介紹

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

幾種非線性啟用函式介紹

神經網路中,正向計算時,激勵函式對輸入資料進行調整,反向梯度損失。梯度消失需要很多方式去進行規避。表示式為 y x s igmo id x 11 e x y x in 0,1 y x sigmoid x 11 e x,y x in 0,1 y x sigmoid x 11 e x,y x in 0,...