【吳恩達深度學習】【神經網絡和深度學習】 第三章 第七節 我們爲什麼需要非線性激活函數?

一、爲什麼不能用非線性函數

假如我們的神經網絡的所有激活函數都是線性的函數,我們不妨想這麼一個問題

既然兩個線性的函數是可以複合的,所以一個只由線性函數構成的神經網絡的所有函數能不能複合成一個函數呢?

顯然是可以的,線性函數直接是可以自己複合成一個新的線性函數的,因此,我們如果只採用線性函數,就會發現一個有趣的結論:

一個神經網絡可以退化成一個獨立的神經元

這個結論來源於線性函數的複合。

基於這個有趣的結論,我們爲了保證我們神經網絡的功能,我們不能採用線性函數,否則我們最終做出來的東西其實是退化的。

 

二、線性函數的好處

首先,基於上文我們可知,非線性的激活函數可以有效的避免上文所提出的相關問題

其次,在之前的blog中我們曾提到過,神經網絡本質上其實是對生物神經系統在計算機中的一種模擬。而非線性的激活函數就模擬了神經衝動傳導中的一些機制。

這種機制可以使得整個系統的非線性增加,使得最終跑出來的模型準確率更高。

 

三、如何直觀的理解非線性激活函數的好處

我們不如假設一個最簡單的問題

我們有一個神經網絡,我們要跑一個二維函數的擬合。

我們採用的是ReLU激活函數。

在這個問題中,我們建立一個淺層神經網絡。

如果我們如果把輸出層那唯一一個神經元的加權求和作爲最終擬合出來的函數的話,我們發現ReLu所實現的功能就是確定一個隱藏層在某個x值的右邊才能發揮作用。

而根據我們之前的經驗,這明顯是吧最終的函數變成了一個分段函數。而多段直線可以近似擬合一個曲線,這是我們從圓周率割圓法時代就知道的事情,而直線越多擬合出來的結果越好也跟之前我們的那個結論遙相呼應——神經網絡中神經元數量越多,跑出來的模型效果越好。

這裏舉的是一個具體的例子,一個容易理解的例子,在實際情況中可能更爲複雜,甚至無法理解麼個神經元的作用,不過我們還是應該有一個大致的理解映象,這對於我們後面的學習是很有好處的。

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