激活函數作用:
- 做非線性映射
- 如果使用線性激活函數或者沒有使用一個激活函數,那麼無論神經網絡有多少層一直在做的只是計算線性函數。事實證明如果在隱藏層用線性激活函數,在輸出層用sigmoid函數,那麼這個模型的複雜度和沒有任何隱藏層的標準Logistic迴歸是一樣的
- 吳恩達說:不能在隱藏層用線性激活函數,可以用ReLU或者tanh或者leaky ReLU或者其他的非線性激活函數,唯一可以用線性激活函數的通常就是輸出層;會在隱層用線性函數的,除了一些特殊情況,比如與壓縮有關的,或者部分迴歸問題
激活函數的性質:
- 可微(梯度下降)
- 單調(保證單層網絡爲凸函數)
- 輸出值的範圍:
- 有限:基於GD的方法更穩定,因爲特徵的表示受有限權值的影響更顯著
- 無限:訓練高效,需要小的學習率
神經網絡常用激活函數:
sigmoid
公式:
導數:
反向傳播:
總結:
- 輸出在 (0, 1) ,可以表示概率
- 導數值域 (0 , 0.25) ,反向傳播梯度消失
- 偏移現象:輸出不是0均值
- 除了輸出層是一個二分類問題基本不會用它
tanh
- 輸出在 (-1, 1) ,均值接近0
- 導數值域 (0, 1),收斂比sigmoid快,但是反向傳播也可能產生梯度消失
- 比較優秀,幾乎適合所有場合
- 結果表明,如果在隱藏層上使用函數tanh,效果總是優於sigmoid函數
ReLU系列:(摘自:吳恩達)
- 最常用的默認函數,如果不確定用哪個激活函數,就使用ReLu或者Leaky ReLu。
- 在區間變動很大的情況下,激活函數的導數或者激活函數的斜率都會遠大於0,在程序實現就是一個if-else語句,而sigmoid函數需要進行浮點四則運算,在實踐中,使用ReLu激活函數神經網絡通常會比使用sigmoid或者tanh激活函數學習的更快。
- sigmoid和tanh函數的導數在正負飽和區的梯度都會接近於0,這會造成梯度彌散,而Relu和Leaky ReLu函數大於0部分都爲常數,不會產生梯度彌散現象。(同時應該注意到的是,Relu進入負半區的時候,梯度爲0,神經元此時不會訓練,產生所謂的稀疏性,而Leaky ReLu不會有這問題)
ReLU
- 輸出大於等於0,導數爲 0 或 1
- 分段線性函數
- 有良好的數學性質,運算比sigmoid、tanh快,而且可以避免梯度消失或梯度爆炸
- ReLU壞死:網絡中的神經元無法在正向傳播中起作用而永久死亡的現象
- ReLU壞死和偏移會影響網絡的收斂性
leaky-ReLU
-
這樣可以避免在x<0時,不能夠學習的情況:
- 解決了ReLU的硬飽和問題(在x趨近於負無窮時,導數=0,導數無限接近於0是軟飽和)
P-ReLU:
帶參數的ReLU,認爲a也可以作爲參數學習
BP更新ai時,採用的是帶動量的更新方式:
上式的兩個係數分別是動量和學習率,ai被初始化爲0.25。
需要特別注意的是:更新ai時不施加權重衰減(L2正則化),因爲這會把ai很大程度上push到0。事實上,即使不加正則化,試驗中ai也很少有超過1的。
- PReLU只增加了極少量的參數,也就意味着網絡的計算量以及過擬合的危險性都只增加了一點點。特別的,當不同channels使用相同的ai時,參數就更少了。
ELU
(a=0.7時)
- 融合了ReLU和sigmoid,左側具有軟飽和性,右側線性部分可以緩解梯度消失,左側軟飽和對輸入變化或噪聲更魯棒
- 輸出均值接近0,收斂快
Maxout
公式:
- 能夠近似任意連續函數
- 當 爲0時,退化爲ReLU
- 緩解梯度消失,避免ReLU壞死,增加了參數量和計算量
梯度消失/爆炸原因及解決辦法
原因,淺層的梯度計算需要後面各層的權重及激活函數導數的乘積,因此可能出現前層比後層的學習率小(vanishing gradient)或大(exploding)的問題,所以具有不穩定性.那麼如何解決呢?
需要考慮幾個方面:
- 權重初始化
- 使用合適的方式初始化權重, 如ReLU使用MSRA的初始化方式, tanh使用xavier初始化方式.
-
只考慮輸入個數時,MSRA初始化是一個均值爲0方差爲根號2/n的高斯分佈:
- 激活函數選擇
- 激活函數要選擇ReLU等梯度累乘穩定的.
- 學習率
- 一種訓練優化方式是對輸入做白化操作(包括正規化和去相關), 目的是可以選擇更大的學習率. 現代深度學習網絡中常使用Batch Normalization(包括正規化步驟,但不含去相關). (All you need is a good init. If you can't find the good init, use Batch Normalization.)
梯度爆炸
由於sigmoid,ReLU等函數的梯度都在[0,1]以內,所以不會引發梯度爆炸問題。 而梯度爆炸需要採用梯度裁剪、BN、設置較小學習率等方式解決。
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
原文: https://www.cnblogs.com/makefile/p/activation-function.html © 康行天下
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
原文: https://www.cnblogs.com/makefile/p/activation-function.html © 康行天下