深入理解激活函數

爲什麼需要非線性激活函數?

說起神經網絡肯定會降到神經函數,看了很多資料,也許你對激活函數這個名詞會感覺很困惑, 它爲什麼叫激活函數?它有什麼作用呢?

看了很多書籍上的講解說會讓神經網絡變成很豐富的算法, 還有的會說讓神經網絡的表達能力更強大了, 是不是很籠統,看到這些不要煩躁,要有耐心。

國內學習深度學習,我看多最好的課程,能看的明白的還是吳恩達的課程,單同學對於一些英語水平比較低的同學, 學起來可能會比較吃力,即時有字幕可能還是回錯過一些關鍵點,而且學習起來會比較枯燥。這裏我還是推進結合一些比較詳細的Ng教授的課程筆記來看。這樣看起來會比較詳細,也更容易理解。

在這裏插入圖片描述
言歸正傳還是看看爲什麼要有激活函數?來證明一下:

現在我們去掉激活函數g

令 :

  • (1) a [ 1 ] = z [ 1 ] = w [ 1 ] x + b [ 1 ] a^{[1]} = z^{[1]} = w^{[1]}x + b^{[1]}
  • (2) a [ 2 ] = z [ 2 ] = w [ 2 ] a [ 1 ] x + b [ 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 ] 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^{[2]}w^{[2]}x + w^{[2]}b^{[1]} +b^{[2]}
    簡化多項式 a [ 2 ] = z [ 2 ] = w x + b a^{[2]} = z^{[2]} = w^{'}x + b^{'}

    如果你是用線性激活函數或者叫恆等激勵函數,那麼神經網絡只是把輸入線性組合在輸出。

在深度網絡中, 即有很多層隱藏層, 如果你使用線性激活函數或者沒有使用一個激活函數,那麼無論你的神經網絡有多少層一直在做的只是計算性函數,所以不如直接去掉所有隱藏層。

總結: 不能再隱藏層線性激活函數,可以使用ReLU 或者tanh。

​ 非線性激活函數對於神經網絡十分關鍵。