1. 程式人生 > >「學習筆記」啟用函式Activation Function

「學習筆記」啟用函式Activation Function

為什麼需要啟用函式Activation Function?

舉個例子,首先我們有這個需求,就是二分類問題,如我要將下面的三角形和圓形點進行正確的分類,如下圖:

利用我們單層的感知機, 用它可以劃出一條線, 把平面分割開:

很容易能夠看出,我給出的樣本點根本不是線性可分的,一個感知器無論得到的直線怎麼動,都不可能完全正確的將三角形與圓形區分出來,那麼我們很容易想到用多個感知器來進行組合,以便獲得更大的分類問題,下面我們上圖,看是否可行:

 

我們已經得到了多感知器分類器了,那麼它的分類能力是否強大到能將非線性資料點正確分類開呢~我們來分析一下:

我們能夠得到

y=w_{2-1}(w_{1-11}x_{1}+ w_{1-21}x_{2}+b_{1-1} )+ w_{2-2}(w_{1-12}x_{1}+ w_{1-22}x_{2}+b_{1-2} )+w_{2-3}(w_{1-13}x_{1}+ w_{1-23}x_{2}+b_{1-3} )

我們來給它變個形.上面公式合併同類項後等價於下面公式: 

y=x_{1}(w_{2-1}w_{1-11}+w_{2-2}w_{1-12} +w_{2-3}w_{1-13} )+x_{2} (w_{2-1}w_{1-21}+w_{2-2}w_{1-22} +w_{2-3}w_{1-23} )+w_{2-1} b_{1-1} +w_{2-2} b_{1-2}+w_{2-3} b_{1-3}

不管它怎麼組合,最多就是線性方程的組合,最後得到的分類器本質還是一個線性方程,該處理不了的非線性問題,它還是處理不了。就好像下圖,直線無論在平面上如果旋轉,都不可能完全正確的分開三角形和圓形點:

既然是非線性問題,總有線性方程不能正確分類的地方。

啟用函式,神經網路中每一層疊加完了之後,我們需要加入一個啟用函式(啟用函式的種類也很多,如sigmoid等)這裡給出sigmoid例子,如下圖:

通過這個啟用函式對映之後,輸出很明顯就是一個非線性函式。

同理,擴充套件到多個神經元組合的情況時候,表達能力就會更強,對應下圖:

最後再通過優化損失函式的做法,能夠學習到不斷靠近正確分類三角形和圓形點的曲線。

具體會學到什麼曲線,也許是下面這樣:

 

那麼隨著不斷訓練優化,也就能夠解決非線性的問題了。

所以到這裡為止,我們就解釋了這個觀點,加入啟用函式是用來加入非線性因素的,解決線性模型所不能解決的問題。

 

有什麼啟用函式Activation Function?

 

1. sigmod函式

函式公式和圖表如下圖

sigmod函式公式 
sigmod函式圖

2.tanh函式

tanh函式公式和曲線如下

tanh函式公式 
tanh函式圖

3.ReLU函式

ReLU函式公式和曲線如下

relu函式公式 
relu函式圖

4.ELU函式

ELU函式公式和曲線如下圖

elu函式公式 
elu函式圖

5.PReLU函式

PReLU函式公式和曲線如下圖

prelu公式 
prelu函式圖