3.7 为什么需要非线性激活函数-深度学习-Stanford吴恩达教授
| 3.6 激活函數 | 回到目錄 | 3.8 激活函數的導數 |
為什么需要非線性激活函數 (Why do you need non-linear activation function?)
為什么神經網絡需要非線性激活函數?事實證明:要讓你的神經網絡能夠計算出有趣的函數,你必須使用非線性激活函數,證明如下:
這是神經網絡正向傳播的方程,現在我們去掉函數 ggg ,然后令 a[1]=z[1]a^{[1]}=z^{[1]}a[1]=z[1] ,或者我們也可以令 g(z)=zg(z)=zg(z)=z ,這個有時被叫做線性激活函數(更學術點的名字是恒等激勵函數,因為它們就是把輸入值輸出)。為了說明問題我們把 a[2]=z[2]a^{[2]}=z^{[2]}a[2]=z[2] ,那么這個模型的輸出 yyy 或僅僅只是輸入特征 xxx 的線性組合。
如果我們改變前面的式子,令: (1) a[1]=z[1]=W[1]x+b[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]+b[2]a^{[2]}=z^{[2]}=W^{[2]}a^{[1]}+b^{[2]}a[2]=z[2]=W[2]a[1]+b[2] 將式子(1)代入式子(2)中,則:a[2]=z[2]=W[2](W[1]x+b[1])+b[2]a^{[2]}=z^{[2]}=W^{[2]}(W^{[1]}x+b^{[1]})+b^{[2]}a[2]=z[2]=W[2](W[1]x+b[1])+b[2]
(3) a[2]=z[2]=W[2]W[1]x+W[2]b[1]+b[2]a^{[2]}=z^{[2]}=W^{[2]}W^{[1]}x+W^{[2]}b^{[1]}+b^{[2]}a[2]=z[2]=W[2]W[1]x+W[2]b[1]+b[2] 簡化多項式得 a[2]=z[2]=W′x+b′a^{[2]}=z^{[2]}=W^{'}x+b^{'}a[2]=z[2]=W′x+b′ 如果你是用線性激活函數或者叫恒等激勵函數,那么神經網絡只是把輸入線性組合再輸出。
我們稍后會談到深度網絡,有很多層的神經網絡,很多隱藏層。事實證明,如果你使用線性激活函數或者沒有使用一個激活函數,那么無論你的神經網絡有多少層一直在做的只是計算線性函數,所以不如直接去掉全部隱藏層。在我們的簡明案例中,事實證明如果你在隱藏層用線性激活函數,在輸出層用sigmoid函數,那么這個模型的復雜度和沒有任何隱藏層的標準Logistic回歸是一樣的,如果你愿意的話,可以證明一下。
在這里線性隱層一點用也沒有,因為這兩個線性函數的組合本身就是線性函數,所以除非你引入非線性,否則你無法計算更有趣的函數,即使你的網絡層數再多也不行;只有一個地方可以使用線性激活函數------ g(z)=zg(z)=zg(z)=z ,就是你在做機器學習中的回歸問題。 yyy 是一個實數,舉個例子,比如你想預測房地產價格, yyy 就不是二分類任務0或1,而是一個實數,從0到正無窮。如果 yyy 是個實數,那么在輸出層用線性激活函數也許可行,你的輸出也是一個實數,從負無窮到正無窮。
總而言之,不能在隱藏層用線性激活函數,可以用ReLU或者tanh或者leaky ReLU或者其他的非線性激活函數,唯一可以用線性激活函數的通常就是輸出層;除了這種情況,會在隱層用線性函數的,除了一些特殊情況,比如與壓縮有關的,那方面在這里將不深入討論。在這之外,在隱層使用線性激活函數非常少見。因為房價都是非負數,所以我們也可以在輸出層使用ReLU函數這樣你的 y^\hat{y}y^? 都大于等于0。
理解為什么使用非線性激活函數對于神經網絡十分關鍵,接下來我們討論梯度下降,并在下一個視頻中開始討論梯度下降的基礎——激活函數的導數。
課程PPT
| 3.6 激活函數 | 回到目錄 | 3.8 激活函數的導數 |
總結
以上是生活随笔為你收集整理的3.7 为什么需要非线性激活函数-深度学习-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.6 激活函数-深度学习-Stanfo
- 下一篇: 3.8 激活函数的导数-深度学习-Sta