爲什麼需要非線性激活函數?
說起神經網絡肯定會降到神經函數,看了很多資料,也許你對激活函數這個名詞會感覺很困惑, 它爲什麼叫激活函數?它有什麼作用呢?
看了很多書籍上的講解說會讓神經網絡變成很豐富的算法, 還有的會說讓神經網絡的表達能力更強大了, 是不是很籠統,看到這些不要煩躁,要有耐心。
國內學習深度學習,我看多最好的課程,能看的明白的還是吳恩達的課程,單同學對於一些英語水平比較低的同學, 學起來可能會比較吃力,即時有字幕可能還是回錯過一些關鍵點,而且學習起來會比較枯燥。這裏我還是推進結合一些比較詳細的Ng教授的課程筆記來看。這樣看起來會比較詳細,也更容易理解。
言歸正傳還是看看爲什麼要有激活函數?來證明一下:
現在我們去掉激活函數g
令 :
- (1)
a[1]=z[1]=w[1]x+b[1]
- (2)
a[2]=z[2]=w[2]a[1]x+b[2]
將式子(1)代入式子(2)中,則:
a[2]=z[2]=w[2](w[1]x+b)+b[2]
- (3)
a[2]=z[2]=w[2]w[2]x+w[2]b[1]+b[2]
簡化多項式
a[2]=z[2]=w′x+b′
如果你是用線性激活函數或者叫恆等激勵函數,那麼神經網絡只是把輸入線性組合在輸出。
在深度網絡中, 即有很多層隱藏層, 如果你使用線性激活函數或者沒有使用一個激活函數,那麼無論你的神經網絡有多少層一直在做的只是計算性函數,所以不如直接去掉所有隱藏層。
總結: 不能再隱藏層線性激活函數,可以使用ReLU 或者tanh。
非線性激活函數對於神經網絡十分關鍵。