神經網路中,正向計算時,激勵函式對輸入資料進行調整,反向梯度損失。梯度消失需要很多方式去進行規避。
表示式為: 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,1)y(
x)′=
y(x)
(1−y
(x))
,y′i
n(−∞
,14]
'>y(x)′=y(x)(1−y(x)),y′in(−∞,14]
y(x)′=y(x)(1−y(x)),y′in(−∞,14]
該函式將輸入對映到(0,1)(能否取到0和1,取決於計算機的精度),由導數可看出, 最大值為0.25,也即在反向計算時,梯度損失非常明顯,至少減少75%,
表示式為: f(
x)=tanh(
x)=2
1+e−
2x−1
,f(x
)in(
−1,1
)f′(
x)=1
−f(x
)2,f
′(x)
in(0
,1)'>f(x)=tanh(x)=21+e−2x−1,f(x)in(−1,1)f′(x)=1−f(x)2,f′(x)in(0,1)
f(x)=tanh(x)=21+e−2x−1,f(x)in(−1,1)f′(x)=1−f(x)2,f′(x)in(0,1)
該函式將輸入對映到(-1,1)(能否取到-1和1,取決於計算機的精度),由導數可看出,在反向計算時,梯度也會有所損失。倘若網路深度非常深,梯度消失(gradient vanishing)。
表示式為:
該函式將輸入分兩個段進行對映,當輸入值小於0時,則將原值對映為0,若輸入值大於0則按照原值傳遞,即,正向計算的時候,會損失特徵大量,由導數可看出,在反向計算時,梯度沒有損失。
(1) relu的優缺點
1) 優點1:
krizhevsky et al. 發現使用 relu 得到的sgd的收斂速度會比 sigmoid/tanh 快很多。有人說這是因為它是linear,而且梯度不會飽和
相比於 sigmoid/tanh需要計算指數等,計算複雜度高,relu 只需要乙個閾值就可以得到啟用值。
(2) relu正向截斷負值,損失大量特徵,為什麼依然用它?
答:特徵足夠多,反向梯度無損失!
表示式如下:
leaky relu. leaky relus 就是用來解決relu壞死的問題的。和relu不同,當x<0時,它的值不再是0,而是乙個較小斜率(如0.01等)的函式。也就是說f(x)=1(x<0)(ax)+1(x>=0)(x),其中a是乙個很小的常數。這樣,既修正了資料分布,又保留了一些負軸的值,使得負軸資訊不會全部丟失。關於leaky relu 的效果,眾說紛紜,沒有清晰的定論。有些人做了實驗發現 leaky relu 表現的很好;有些實驗則證明並不是這樣。
-prelu. 對於 leaky relu 中的a,通常都是通過先驗知識人工賦值的,比如說0.01
非線性啟用函式
神經網路中,正向計算時,激勵函式對輸入資料進行調整,反向梯度損失。梯度消失需要很多方式去進行規避。表示式為 y x s igmo id x 11 e x y x in 0,1 y x y x 1 y x y in 14 該函式將輸入對映到 0,1 能否取到0和1,取決於計算機的精度 由導數可看出,最...
非線性啟用
如果神經元的輸出是輸入的線性函式,而線性函式之間的巢狀任然會得到線性函式。如果不加如飛西安新處理,那麼最終得到的仍然是線性函式。leaky relu,prelu,rrelu,elu,selu.他們讓relu在輸入小於0時有少量輸出,可略微改進效能,代價是速度會慢一些。f x x cdot sigma...
非線性啟用函式的使用原因
解釋一 如果是線性啟用函式 輸出y 是輸入x的線性組合,那麼無論神經網路有多少層,一直在做的只是計算線性啟用函式,所以不如直接去掉全部隱含層。線性隱含層一點用都沒有,因為兩個線性函式的組合本身就是線性組合。所以除非引入非線性,那麼無法計算更加有趣的函式,網路層數再多也不行。只有乙個地方可以使用線性啟...