1. 程式人生 > >神經網絡(六)激活函數

神經網絡(六)激活函數

過程 ++ 初始 clas 等價 輸入 通過 height tex

激活函數是用來加入非線性因素的,解決線性模型所不能解決的問題。

激活函數通常有如下一些性質:

    1. 非線性: 當激活函數是線性的時候,一個兩層的神經網絡就可以逼近基本上所有的函數了。但是,如果激活函數是恒等激活函數的時候(即f(x)=x),就不滿足這個性質了,而且如果MLP使用的是恒等激活函數,那麽其實整個網絡跟單層神經網絡是等價的。
    2. 可微性: 當優化方法是基於梯度的時候,這個性質是必須的。
    3. 單調性: 當激活函數是單調的時候,單層網絡能夠保證是凸函數。
    4. f(x)x 當激活函數滿足這個性質的時候,如果參數的初始化是random的很小的值,那麽神經網絡的訓練將會很高效;如果不滿足這個性質,那麽就需要很用心的去設置初始值。
    5. 輸出值的範圍: 當激活函數輸出值是 有限 的時候,基於梯度的優化方法會更加 穩定,因為特征的表示受有限權值的影響更顯著;當激活函數的輸出是 無限 的時候,模型的訓練會更加高效,不過在這種情況小,一般需要更小的learning rate.

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

技術分享圖片

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

技術分享圖片

上圖直線是由技術分享圖片得到,那麽該感知器實現預測的功能步驟如下,就是我已經訓練好了一個感知器模型,後面對於要預測的樣本點,帶入模型中,如果技術分享圖片,那麽就說明是直線的右側,也就是正類(我們這裏是三角形),如果技術分享圖片,那麽就說明是直線的左側,也就是負類(我們這裏是圓形),雖然這和我們的題目關系不大,但是還是提一下~

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

技術分享圖片

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

我們能夠得到技術分享圖片

哎呀呀,不得了,這個式子看起來非常復雜,估計應該可以處理我上面的情況了吧,哈哈哈哈~不一定額,我們來給它變個形.上面公式合並同類項後等價於下面公式:

技術分享圖片

嘖嘖,估計大家都看出了,不管它怎麽組合,最多就是線性方程的組合,最後得到的分類器本質還是一個線性方程,該處理不了的非線性問題,它還是處理不了。

就好像下圖,直線無論在平面上如果旋轉,都不可能完全正確的分開三角形和圓形點:

技術分享圖片

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

那麽拋開神經網絡中神經元需不需要激活函數這點不說,如果沒有激活函數,僅僅是線性函數的組合解決的問題太有限了,碰到非線性問題就束手無策了.那麽加入激活函數是否可能能夠解決呢?

在上面線性方程的組合過程中,我們其實類似在做三條直線的組合,如下圖:

技術分享圖片

下面我們來講一下激活函數,我們都知道,每一層疊加完了之後,我們需要加入一個激活函數(激活函數的種類也很多,如sigmoid等等~)這裏就給出sigmoid例子,如下圖:

技術分享圖片

通過這個激活函數映射之後,輸出很明顯就是一個非線性函數!能不能解決一開始的非線性分類問題不清楚,但是至少說明有可能啊,上面不加入激活函數神經網絡壓根就不可能解決這個問題~

同理,擴展到多個神經元組合的情況時候,表達能力就會更強~對應的組合圖如下:(現在已經升級為三個非線性感知器在組合了)

技術分享圖片

跟上面線性組合相對應的非線性組合如下:

技術分享圖片

這看起來厲害多了,是不是~最後再通過最優化損失函數的做法,我們能夠學習到不斷學習靠近能夠正確分類三角形和圓形點的曲線,到底會學到什麽曲線,不知道到底具體的樣子,也許是下面這個~

技術分享圖片

那麽隨著不斷訓練優化,我們也就能夠解決非線性的問題了~

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

下面就以Sigmoid為例,介紹激活函數的使用:

技術分享圖片

Sigmoid函數

它能夠把輸入的連續實值“壓縮”到0和1之間。
特別的,如果是非常大的負數,那麽輸出就是0;如果是非常大的正數,輸出就是1. 我的個人理解是:輸出0-1之間的概率,或者使用其他的激活函數,可以使值都規則化在一個區間中,有助於分類(輸出層)或計算(隱含層)

神經網絡(六)激活函數