爲什麼神經網絡需要非線性激活函數

生物神經網絡啓發了人工神經網絡的發展,在瞭解爲什麼神經網絡需要非線性激活函數之前,理解生物神經網絡的工作原理對我們是有幫助的。

一個典型的生物神經元的物理結構包括細胞體、樹突、軸突。樹突具有接受刺激並將衝動傳入細胞體的功能,細胞體具有聯絡和整合輸入信息並傳出信息的作用,軸突的主要功能是將神經衝動由細胞體傳至其他神經元。神經元通過樹突接收來自其他神經元的信號,來自樹突的信號在細胞體中積累,如果產生的信號強度超過一定的閾值,神經元就把信息傳遞給軸突。否則,信號會被神經元殺死,不再傳播。

在人工神經網絡中,激活函數決定是否需要傳遞信號。上圖中第二層的神經單元可以看做是一個細胞體,它接收來自其它神經元的信號,然後整合信息。在人工神經網絡中計算如下,b代表偏置項(在上圖中代表一個實數),g代表激活函數。

如果神經網絡中沒有激活函數,或者說是線性激活函數,那麼會發生什麼呢?

假設有一個上圖所示的兩層的淺層神經網絡(輸入層不算),如果每個神經元都採用線性激活函數g(z)=z。

上面的神經網絡正向傳播的過程就可以表示如下:

中括號表示第幾層,W是權重矩陣,W^[^1^]的維度是(3,3),b^[^1^]z^[^1^]的維度是(3,1),W^[^2^]的維度是(1,3),b^[^2^]z^[^2^]的維度是(1,1),x是(3,1)的向量。

可以看到第二層的輸出值仍然是輸入特徵的線性組合,不難想象,如果在神經網絡中使用線性激活函數或者沒有激活函數,那麼無論你的神經網絡有多少層,一直在做的只是線性計算,最後的結果其實也只是一個線性方程,這就使得我們無法計算更復雜的函數。神經網絡是用來實現複雜函數的,使用非線性激活函數使它能夠逼近任意複雜函數。如果沒有激活函數引入的非線性,多層神經網絡相當於單層神經網絡。

下面舉個例子

這裏有兩個類別,x1和x2的取值只能是0或1,當x1=x2時,爲X類別,否則就爲類別。直觀上來看,上圖中的數據點不是線性可分的,或者說我們無法使用一條直線來正確劃分開兩個類別,所以我們需要使用非線性的激活函數,使我們得到非線性的決策邊界來分開它們。

再舉一個例子,如果我們希望分開上圖中的藍色點和紅色點,很明顯無法使用一條直線來將它們分開,這就需要使用非線性激活函數的神經網絡才能實現,下圖爲使用非線性激活函數神經網絡的決策邊界。

使用激活函數還有一個作用,它能將神經元的輸出映射在在一定範圍之內。如果單純是像這樣的線性組合 b+\sum_{i=1}^{n}w_ix_i

這個值可能會變得非常大,而這個數字如果不經過任何修改又傳給下一層的神經元,那就可能變成更大的數字,這會使得過程變得難以計算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章