深度學習中的激活函數之 sigmoid、tanh和ReLU

 

 

 

三種非線性激活函數sigmoid、tanh、ReLU。網絡

sigmoid: y = 1/(1 + e-x)函數

tanh: y = (ex - e-x)/(ex + e-x)spa

ReLU:y = max(0, x)blog

在隱藏層,tanh函數要優於sigmoid函數,能夠看做是sigmoid的平移版本,優點在於其取值爲 [-1, 1],數據的平均值爲0,而sigmoid的平均值爲0.5,有相似數據中心化的效果。it

但在輸出層,sigmoid可能會優於tanh,緣由在於咱們但願輸出結果的機率落在0~1之間,好比二元分類問題,sigmoid能夠做爲輸出層的激活函數。神經網絡

在實際狀況中,特別是在訓練深層網絡時,sigmoid和tanh會在端值趨近飽和,形成訓練速度減慢,故深層網絡的激活函數可能是採用ReLU,淺層網絡能夠採用sigmoid和tanh函數。im

 

爲弄清在反向傳播中如何進行梯度降低,來看一下三個函數的求導過程:數據

1. sigmoid求導db

sigmoid函數定義爲  y = 1/(1 + e-x)  = (1 + e-x)-1img

相關的求導公式:(xn)' = n * xn-1   和  (ex)= ex

應用鏈式法則,其求導過程爲:

                                                        dy/dx = -1 * (1 + e-x)-2 * e-x * (-1)

                                                     = e-x * (1 + e-x)-2

                                                     = (1 + e-x - 1) / (1 + e-x)2

                                                     = (1 + e-x)-1 - (1 + e-x)-2
                                                     = y - y2
                                                     = y(1 -y)

2. tanh求導

tanh函數定義爲 y = (ex - e-x)/(ex + e-x)

相關的求導公式:(u/v)= (uv - uv') / v2 

應用鏈式法則,其求導過程爲:

                                                                dy/dx = ( (ex - e-x)' * (ex + e-x) - (ex - e-x) * (ex + e-x)) / (ex + e-x)2 

                             =  ( (ex - (-1) * e-x) * (ex + e-x) - (ex - e-x) * (ex + (-1) * e-x) ) / (ex + e-x)2   

                             =  ( (ex + e-x) -  (ex - e-x)2 ) / (ex + e-x)2 

                             =  1 -  ( (ex - e-x)/(ex + e-x) )2 

                             = 1 - y2 

3. ReLU求導

ReLU函數定義爲 y = max(0, x)

簡單地推導得 當x <0 時,dy/dx = 0; 當 x >= 0時,dy/dx = 1

 

接下來着重討論下ReLU

在深度神經網絡中,一般選擇線性整流函數ReLU,Rectified Linear Units)做爲神經元的激活函數。ReLU源於對動物神經科學的研究,2001年,Dayan 和 Abbott 從生物學角度模擬出了腦神經元接受信號更精確的激活模型,如圖:

其中橫軸是刺激電流,縱軸是神經元的放電速率。同年,Attwell等神經學科學家經過研究大腦的能量消耗過程,推測神經元的工做方式具備稀疏性和分佈性;2003年,Lennie等神經學科學家估測大腦同時被激活的神經元只有1~4%,這進一步代表了神經元工做的稀疏性。

那麼,ReLU是如何模擬神經元工做的呢

 

從上圖能夠看出,ReLU實際上是分段線性函數,把全部的負值都變爲0,正值不變,這種性質被稱爲單側抑制。由於單側抑制的存在,才使得神經網絡中的神經元也具備了稀疏激活性。尤爲在深度神經網絡中(如CNN),當模型增長N層以後,理論上ReLU神經元的激活率將下降2的N次方倍。或許有人會問,ReLU的函數圖像爲何非得長成這樣子。其實不必定這個樣子。只要能起到單側抑制的做用,不管是鏡面翻轉仍是180°翻轉,最終神經元的輸入也只是至關於加上了一個常數項係數,並不會影響模型的訓練結果。之因此這樣定義,或許是爲了符合生物學角度,便於咱們理解吧。

這種稀疏性有什麼做用呢?由於咱們的大腦工做時,總有一部分神經元處於活躍或抑制狀態。與之相似,當訓練一個深度分類模型時,和目標相關的特徵每每也就幾個,所以經過ReLU實現稀疏後的模型可以更好地挖掘相關特徵,使網絡擬合訓練數據。

相比其餘激活函數,ReLU有幾個優點:(1)比起線性函數來講,ReLU的表達能力更強,尤爲體如今深度網絡模型中;(2)較於非線性函數,ReLU因爲非負區間的梯度爲常數,所以不存在梯度消失問題(Vanishing Gradient Problem),使得模型的收斂速度維持在一個穩定狀態。(注)梯度消失問題:當梯度小於1時,預測值與真實值之間的偏差每傳播一層就會衰減一次,若是在深層模型中使用sigmoid做爲激活函數,這種現象尤其明顯,將致使模型收斂停滯不前。

相關文章
相關標籤/搜索