形象的解釋神經網路激活函數的作用是什麼?

查閱資料和學習,大家對神經網路中激活函數的作用主要集中下面這個觀點:

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

下面我分別從這個方面通過例子給出自己的理解~

@lee philip@顏沁睿倆位的回答已經非常好了,我舉的例子也是來源於他們,在這裡加入了自己的思考,更加詳細的說了一下~

開講~

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

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

上圖直線是由w_{1}x_{1} + w_{2}x_{2}+b=0 得到,那麼該感知器實現預測的功能步驟如下,就是我已經訓練好了一個感知器模型,後面對於要預測的樣本點,帶入模型中,如果y>0,那麼就說明是直線的右側,也就是正類(我們這裡是三角形),如果y<0,那麼就說明是直線的左側,也就是負類(我們這裡是圓形),雖然這和我們的題目關係不大,但是還是提一下~

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

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

我們能夠得到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例子,如下圖:

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

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

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

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

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

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

註:參考於@lee philip@顏沁睿倆位的回答,以上圖片大部分摘自於@顏沁睿

感謝郭江師兄,森棟師兄,德川的討論交流~

希望知友提出問題一起交流~


推薦閱讀:

Python · 神經網路(四*)· 網路
如何評估神經網路演算法的計算量,從而來確定需要多少GPU的投入?
在神經網路中,激活函數sigmoid和tanh除了閾值取值外有什麼不同嗎?
你心中的deep learning(深度學習)領域世界十大名校是哪些?
scikit learn 里沒有神經網路?

TAG:神经网络 | 机器学习 | 深度学习DeepLearning |