1. 程式人生 > >Sigmoid函式解析

Sigmoid函式解析

Sigmoid函式,即f(x)=1/(1+e-x)。是神經元的非線性作用函式。廣泛應用在神經網路中。

神經網路的學習是基於一組樣本進行的,它包括輸入和輸出(這裡用期望輸出表示),輸入和輸出有多少個分量就有多少個輸入和輸出神經元與之對應。最初神經網路的權值(Weight)和閾值(Threshold)是任意給定的,學習就是逐漸調整權值和閾值使得網路的實際輸出和期望輸出一致。

給定以下的總輸入,我們可以基於sigmoid函式得到連續的輸出,其中sigmoid函式的定義如下



該函式具有如下的特性:當x趨近於負無窮時,y趨近於0;噹噹x趨近於正無窮時,y趨近於1;當x=1/2時,y=0.


閾值化或者階梯化: 

        增加該連線的權值,也就是增加總輸入,可以使sigmoid函式越來越趨近於閾值函式,或者叫階梯函式。將總輸入變為原來的5倍,則sigmoid函式變為如下的形式:



線性化:

只要w為非零值,即使w非常小,ς(wx)最終都會趨近於y=0和y=1. 下圖為w=0.1,-7<x<7時的sigmoid函式,看上去y是取值範圍在0.35到0.65 之間的一條直線。



但如果同樣是w=0.1,當-25<x<25時,該曲線變成如下的形式,此時可以明顯地看出,y的取值仍然趨近於y=0和y=1。



有上面的圖可以看出,當w=0.1時,sigmoid函式仍然不是一個線性函式,但當x在-6到6之間時,可以近似將其看作是帶有斜率的線性函式。因此,在實際應用中,如果x的取值範圍始終在-6到6之間,利用sigmoid函式,我們就可以得到一個帶有一定斜率的線性輸出結果。


接下來,我們再來看下面這種極端情況,當w=0.0001時,即使-25<x<25,sigmoid函式曲線仍然看上去是一直線,而且斜率幾乎為0.


但如果我們把x的取值範圍擴充套件到-10000到10000,就可以發現,sigmoid函式仍然最終趨近於y=0和y=1。



sigmoid函式近似得到不同斜率的線性函式:

實際應用中,只要x的取值始終在某個特定的範圍之內,我們總可以將sigmoid函式近似為,在該範圍內成立的不同斜率的線性函式。

舉個例子來說,當x的取值範圍在-30到30之間時,通過去不同的權值w,即可將sigmoid函式近似為不同斜率的線性函式。






以上這些不同權值下的sigmoid函式都是以x=0為中心對稱的,此時可以看作是閾值為0時的函式形式。通過改變閾值,即可得到沿不同閾值中心對稱的sigmoid函式。

y = ς(x-t)

其中t表示該節點的閾值。正與前文提到的,與權值一樣,閾值也可以通過神經網路學習演算法得到。下圖中,sigmoid函式關於x=3中心對稱。


因此,sigmoid函式的一般形式為

ς(ax+b)

該函式具有如下特性:

    當a不為0時, sigmoid函式不是線性函式。其輸出結果在0到1之間。

     當a為0時,y=ς(b),為線性常量。通過取不同的b值,即可得到0到1之間的任何常量。

     a可以去任何的正數或者負數,分數或者倍數,b可以為正,也可以為負。

     當a<0時,sigmoid函式曲線如下圖所示。此時,當x取極小負值時,可以啟用神經元。



sigmoid曲線在某點的斜率

sigmoid函式的一般形式可以簡化為 y = ς(z) 

其中 z = ax+b 

因此,其在某點的斜率,也就是一階導為
dy/dx = dy/dz dz/dx 
= y(1-y) a 

注意到,y的去取值範圍在開區間的0到1之間,

當a>0時,所有點處的斜率都是正的,當y=1/2時,曲線最陡/斜率最大。

當a<0時,所有點處的斜率都是負的,當y=1/2時,曲線最陡/斜率最小(負值)

    

當a=1,b=0時,sigmoid曲線在某點斜率的極值

其一階導推導過程如下圖所示


由此可以看出,該曲線在某點處的切線斜率為y (1-y) 。通過對斜率再求導可以看出,其斜率在y=1/2處,取得最大值。

d/dy ( y (1-y) ) 
= y (-1) + (1-y) 1 
= -y + 1 -y 
= 1 - 2y 
= 0 for y = 1/2 




From:http://computing.dcu.ie/~humphrys/Notes/Neural/sigmoid.html

以上內容來自使用者【MagicQIT】,僅作格式和詞語修改,原文地址:http://blog.csdn.net/magicqit/article/details/42525399