算法基礎---激活函數

目錄

1 激活函數的作用

2 激活函數的位置

3 激活函數分類

3.1 飽和激活函數

3.2 非飽和激活函數

4 常見激活函數

4.1 Sigmoid函數

4.2 tanh函數

4.3 ReLU函數及其變形

4.3.1 ReLU

4.3.2 Leaky-ReLU

4.3.3 P-ReLU

4.3.4 R-ReLU

4.4 ELU(Exponential Linear Units) 函數

4.5 MaxOut

5 如何選擇激活函數



激活函數(Activation Function),有的也稱爲激勵函數,就是在人工神經網絡的神經元上運行的函數,負責將神經元的輸入映射到輸出端。

1 激活函數的作用

引入激活函數是爲了增加神經網絡模型的非線性,從而更好地模擬真實的場景。

如果不用激活函數,在這種情況下每一層輸出都是上層輸入的線性函數。容易驗證,無論神經網絡有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,這種情況就是最原始的感知機(Perceptron)了。因此引入非線性函數作爲激活函數,這樣深層神經網絡就有意義了(不再是輸入的線性組合,可以逼近任意函數)。

2 激活函數的位置

生物學上的神經元結構如下:

通常是一個神經細胞都有樹突,軸突,細胞核等組成。樹突接收其他神經元傳遞過來的信號,單信號足夠強大的時候,就會激活該神經細胞,產生新的信號,通過軸突傳遞到下一個神經元。

抽象成數學模型,就是如下:

xi:神經元的樹突輸入,表示從前面一個神經元接受到的信號;

wi:表示權重,即表示這個輸入對輸出有多大的影響;

\small \sum_{i=1}^{n}W_{i}*{X_{i}} + b:細胞核上,每個輸入型號和權重之間的共同作用之後,加上一個偏置。

f:激活函數,表示神經元對於信號的處理過程。

output axon:輸出到下一個神經元的信號;

3 激活函數分類

常見的激活函數可以分成飽和激活函數和非飽和激活函數。

3.1 飽和激活函數

3.1.1 右飽和

假設h(x)是一個激活函數。

當我們的n趨近於正無窮,激活函數的導數趨近於0,那麼我們稱之爲右飽和。

3.1.2 左飽和

當我們的n趨近於負無窮,激活函數的導數趨近於0,那麼我們稱之爲左飽和。

 

3.1.3 飽和

當一個函數既滿足左飽和又滿足右飽和的時候我們就稱之爲飽和,典型的函數有Sigmoid,Tanh函數。

3.1.4 硬飽和

對於任意的x,如果存在常數c,當x>c時,恆有=0,則稱其爲右硬飽和。如果對於任意的x,如果存在常數c,當x<c時,恆有=0,則稱其爲左硬飽和。既滿足左硬飽和又滿足右硬飽和的我們稱這種函數爲硬飽和。

3.1.5 軟飽和

對於任意的x,如果存在常數c,當x>c時,恆有趨近於0,則稱其爲右軟飽和。如果對於任意的x,如果存在常數c,當x<c時,恆有趨近於0,則稱其爲左軟飽和。既滿足左軟飽和又滿足右軟飽和的我們稱這種函數爲軟飽和。

3.2 非飽和激活函數

顯然,不滿足飽和激活函數的,我們稱之爲非飽和激活函數。使用“非飽和激活函數”的優勢在於兩點:

1)能夠解決“梯度消失”問題;

2)能夠加速收斂

4 常見激活函數

4.1 Sigmoid函數

4.2 tanh函數

4.3 ReLU函數及其變形

4.3.1 ReLU

4.3.2 Leaky-ReLU

4.3.3 P-ReLU

4.3.4 R-ReLU

4.4 ELU(Exponential Linear Units) 函數

論文:https://arxiv.org/pdf/1511.07289v5.pdf

è¿éåå¾çæè¿°

ELU也是爲解決ReLU存在的問題而提出,顯然,ELU有ReLU的基本所有優點,以及:

  • 不會有Dead ReLU問題
  • 輸出的均值接近0,zero-centered


它的一個小問題在於計算量稍大。類似於Leaky ReLU,理論上雖然好於ReLU,但在實際使用中目前並沒有好的證據ELU總是優於ReLU。

4.5 MaxOut

5 如何選擇激活函數

這個問題目前沒有確定的方法,憑一些經驗吧。
1)深度學習往往需要大量時間來處理大量數據,模型的收斂速度是尤爲重要的。所以,總體上來講,訓練深度學習網絡儘量使用zero-centered數據 (可以經過數據預處理實現) 和zero-centered輸出。所以要儘量選擇輸出具有zero-centered特點的激活函數以加快模型的收斂速度。
2)可以從ReLU函數開始,如果ReLU函數沒有提供最優結果,再嘗試其他激活函數。如果使用 ReLU,那麼一定要小心設置 learning rate,而且要注意不要讓網絡出現很多 “dead” 神經元,如果這個問題不好解決,那麼可以試試 Leaky ReLU、PReLU 或者 Maxout.
3)最好不要用 sigmoid,你可以試試 tanh,不過可以預期它的效果會比不上 ReLU 和 Maxout.

參考文獻:

【1】https://baike.baidu.com/item/%E6%BF%80%E6%B4%BB%E5%87%BD%E6%95%B0/2520792?fr=aladdin

【2】https://blog.csdn.net/qq_34638161/article/details/81902989

【3】https://blog.csdn.net/qq_23304241/article/details/80300149

【4】激活函數中的硬飽和,軟飽和,左飽和和右飽和,https://blog.csdn.net/donkey_1993/article/details/81662065

【5】常用激活函數(激勵函數)理解與總結https://blog.csdn.net/tyhj_sf/article/details/79932893

【6】各種激活函數的比較https://blog.csdn.net/piaodexin/article/details/77162766

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章