ML激活函数使用法则
生活随笔
收集整理的這篇文章主要介紹了
ML激活函数使用法则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
sigmoid 、tanh 、ReLu
-
tanh 函數或者雙曲正切函數是總體上都優于 sigmoid 函數的激活函數。
- 基本已經不用 sigmoid 激活函數了,tanh 函數在所有場合都優于 sigmoid 函數。
- 但有一個例外:在二分類的問題中,對于輸出層,因為y的值是 0 或 1,所以想讓y值介于 0 和 1 之間,而不是在-1 和+1 之間。所以需要使用 sigmoid 激活函數。
-
sigmoid 函數和 tanh 函數兩者共同的缺點是,在z特別大或者特別小的情況下,導數的梯度或者函數的斜率會變得特別小,最后就會接近于 0,導致降低梯度下降的速度。
這有一些選擇激活函數的經驗法則:
- 如果輸出是 0、1 值(二分類問題),則輸出層選擇 sigmoid 函數,然后其它的所有單元都選擇 Relu 函數。
- 這是很多激活函數的默認選擇,如果在隱藏層上不確定使用哪個激活函數,那么通常會使用 Relu 激活函數。有時,也會使用 tanh 激活函數,但 Relu 的一個優點是:當z是負值的時候,導數等于 0。
這里也有另一個版本的 Relu 被稱為 Leaky Relu。
- 當z是負值時,這個函數的值不是等于 0,而是輕微的傾斜,如圖。
- 這個函數通常比 Relu 激活函數效果要好,盡管在實際中 Leaky ReLu 使用的并不多。
兩者的優點是:
- 第一,在z的區間變動很大的情況下,激活函數的導數或者激活函數的斜率都會遠大于0,在程序實現就是一個 if-else 語句,而 sigmoid 函數需要進行浮點四則運算,在實踐中,使用 ReLu 激活函數神經網絡通常會比使用 sigmoid 或者 tanh 激活函數學習的更快。
- 第二,sigmoid 和 tanh 函數的導數在正負飽和區的梯度都會接近于 0,這會造成梯度彌散,而 Relu 和 Leaky ReLu 函數大于 0 部分都為常熟,不會產生梯度彌散現象。(同時應該注意到的是,Relu 進入負半區的時候,梯度為 0,神經元此時不會訓練,產生所謂的稀疏性,而 Leaky ReLu 不會有這問題)
- z在 ReLu 的梯度一半都是 0,但是,有足夠的隱藏層使得 z 值大于 0,所以對大多數的訓練數據來說學習過程仍然可以很快。
快速概括一下不同激活函數的過程和結論。
- sigmoid 激活函數:除了輸出層是一個二分類問題基本不會用它。
- tanh 激活函數:tanh 是非常優秀的,幾乎適合所有場合。
- ReLu 激活函數:最常用的默認函數,,如果不確定用哪個激活函數,就使用 ReLu 或者Leaky ReLu。
?
Relu計算方便,可以解決梯度消失
梯度消失問題,代表激活函數沒選好
?
如果不確定哪一個激活函數效果更好,可以把它們都試試,然后在驗證集或者發展集上進行評價。然后看哪一種表現的更好,就去使用它。
?
來源:吳恩達deeplearning筆記
轉載于:https://www.cnblogs.com/tanrong/p/9932087.html
總結
以上是生活随笔為你收集整理的ML激活函数使用法则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cs224n第二讲词向量表示:word2
- 下一篇: android开发检测用户是否使用了虚拟