Activation Function 激勵函數

在類神經網路中,每個節點都需要激活涵數,有很多種,但目的就是為了讓非性線的性質引入網路之中。這個非線性的是怎樣的一個影響,我想我們可以用以下的簡單例子來說明

這是一個簡單的三個輸入的神經網路。三個輸入為x,y,跟一個常數40。權重分別為0.5,3,-1。這樣的網路在不經過Sigmoid的處理為0.5x+3y+40=0,圖上的斜線,這樣的一條直線。經過Sigmoid函數就是圖上的綠線。
這是另一個簡單的三個輸入的神經網路。三個輸入為x,y,跟一個常數4。這樣的網路在不經過Sigmoid的處理為0.5x+3y-4=0,這樣的一條直線。即圖上左上到右下的斜線。經過sigmoid函數即為紅線。
我們可以先看如果不經過sigmoid函數,就是兩條交叉的直線,如上圖。這兩條直線不管權重如何改變,永遠是兩條直線。
現在我們把兩條線的神經網路再連接到一個節點上。就會如上圖,我們給A的神經網路連結權重為5,給B的神經網路連結權重為10。最後會得到5A+10B。如果最後這個節點為輸出節點。我們就可以選擇是否要再經過激勵函數。
眼尖的朋友一定會注意到,其實整個圖還可以簡化為上圖,兩組輸入合為一組即可。這張圖就是一般我們常看到的神經網路圖了。

我們可以看上圖,5A+10B。我們可以看出,兩個激勵函數相加後得到的曲線(最上面像浴缸曲線那條)。這裡我們可以理解到,一個激勵函數可以讓曲線折兩次,所以越多的A網路與B網路,理論上就可以組合出任意曲線才是。沒錯,這就是universal approximation theorem。那麼,如果我們在做曲線的擬合或是線性回歸,輸出就可以不用再一次的激勵函數,又或者找一個等比例型的激勵函數。如果是需要輸出羅輯的判斷,就可以再算一次的sigmoid或是tanh。

既然我們理解到激勵函數可以折彎曲線,那麼可以想像,如果我們的節點多過我們問題本身的需求,就會產生過擬合的問題。為了避免這個問題,就出現了bagging的方法。

另外就是計算cost function的關係,所以激勵函數都需要可微分,我對逆傳遞的方法實在無法理解,大自然裡總有其它的方法可以解決相同的問題,所以出現了NEAT,利用基因演算法來讓類神經網路演化。這樣就不用再算逆傳遞了。



NamePlotEquationDerivative (with respect to x)RangeOrder of continuityMonotonicDerivative MonotonicApproximates identity near the origin
IdentityActivation identity.svgYesYesYes
Binary stepActivation binary step.svgYesNoNo
Logistic (a.k.a. Soft step)Activation logistic.svgYesNoNo
TanHActivation tanh.svgYesNoYes
ArcTanActivation arctan.svgYesNoYes
Softsign [7][8]Activation softsign.pngYesNoYes
Rectified linear unit (ReLU)[9]Activation rectified linear.svgYesYesNo
Leaky rectified linear unit (Leaky ReLU)[10]Activation prelu.svgYesYesNo
Parameteric rectified linear unit (PReLU)[11]Activation prelu.svgYes iff YesYes iff 
Randomized leaky rectified linear unit (RReLU)[12]Activation prelu.svg[1]YesYesNo
Exponential linear unit (ELU)[13]Activation elu.svg when
, otherwise 
Yes iff Yes iff Yes iff 
Scaled exponential linear unit (SELU)[14]
with  and 
YesNoNo
S-shaped rectified linear activation unit (SReLU)[15]
 are parameters.
NoNoNo
Adaptive piecewise linear (APL) [16][2]NoNoNo
SoftPlus[17]Activation softplus.svgYesYesNo
Bent identityActivation bent identity.svgYesYesYes
SoftExponential [18]Activation soft exponential.svgYesYesYes iff 
SinusoidActivation sinusoid.svgNoNoYes
SincActivation sinc.svgNoNoNo
GaussianActivation gaussian.svgNoNoNo


留言

這個網誌中的熱門文章

python 找圖自動點擊

Python pyserial 抓取系統內的 COM PORT

VBA EXCEL 工作表變化 馬上執行 的作法 Worksheet_Change