—— 原文發佈於本人的微信公衆號「大數據與人工智能Lab」(BigdataAILab),歡迎關注。算法
咱們知道深度學習的理論基礎是神經網絡,在單層神經網絡中(感知機),輸入和輸出計算關係以下圖所示:
可見,輸入與輸出是一個線性關係,對於增長了多個神經元以後,計算公式也是相似,以下圖:
這樣的模型就只能處理一些簡單的線性數據,而對於非線性數據則很難有效地處理(也可經過組合多個不一樣線性表示,但這樣更加複雜和不靈活),以下圖所示:
那麼,經過在神經網絡中加入非線性激勵函數後,神經網絡就有可能學習到平滑的曲線來實現對非線性數據的處理了。以下圖所示:
所以,神經網絡中激勵函數的做用通俗上講就是將多個線性輸入轉換爲非線性的關係。若是不使用激勵函數的話,神經網絡的每層都只是作線性變換,即便是多層輸入疊加後也仍是線性變換。經過激勵函數引入非線性因素後,使神經網絡的表示能力更強了。微信
下面介紹幾個經常使用的激勵函數
一、sigmoid 函數
這應該是神經網絡中使用最頻繁的激勵函數了,它把一個實數壓縮至0到1之間,當輸入的數字很是大的時候,結果會接近1,當輸入很是大的負數時,則會獲得接近0的結果。在早期的神經網絡中使用得很是多,由於它很好地解釋了神經元受到刺激後是否被激活和向後傳遞的場景(0:幾乎沒有被激活,1:徹底被激活),不過近幾年在深度學習的應用中比較少見到它的身影,由於使用sigmoid函數容易出現梯度彌散或者梯度飽和。當神經網絡的層數不少時,若是每一層的激勵函數都採用sigmoid函數的話,就會產生梯度彌散的問題,由於利用反向傳播更新參數時,會乘以它的導數,因此會一直減少。若是輸入的是比較大或者比較小的數(例如輸入100,經Sigmoid函數後結果接近於1,梯度接近於0),會產生飽和效應,致使神經元相似於死亡狀態。網絡
【小白科普】什麼是飽和呢?
分佈式
二、tanh 函數
tanh函數將輸入值壓縮至-1到1之間。該函數與Sigmoid相似,也存在着梯度彌散或梯度飽和的缺點。函數
三、ReLU函數
ReLU是修正線性單元(The Rectified Linear Unit)的簡稱,近些年來在深度學習中使用得不少,能夠解決梯度彌散問題,由於它的導數等於1或者就是0。相對於sigmoid和tanh激勵函數,對ReLU求梯度很是簡單,計算也很簡單,能夠很是大程度地提高隨機梯度降低的收斂速度。(由於ReLU是線性的,而sigmoid和tanh是非線性的)。
但ReLU的缺點是比較脆弱,隨着訓練的進行,可能會出現神經元死亡的狀況,例若有一個很大的梯度流經ReLU單元后,那權重的更新結果多是,在此以後任何的數據點都沒有辦法再激活它了。若是發生這種狀況,那麼流經神經元的梯度從這一點開始將永遠是0。也就是說,ReLU神經元在訓練中不可逆地死亡了。oop
四、Leaky ReLU 函數
Leaky ReLU主要是爲了不梯度消失,當神經元處於非激活狀態時,容許一個非0的梯度存在,這樣不會出現梯度消失,收斂速度快。它的優缺點跟ReLU相似。學習
五、ELU 函數
ELU在正值區間的值爲x自己,這樣減輕了梯度彌散問題(x>0區間導數到處爲1),這點跟ReLU、Leaky ReLU類似。而在負值區間,ELU在輸入取較小值時具備軟飽和的特性,提高了對噪聲的魯棒性
下圖是ReLU、LReLU、ELU的曲線比較圖:大數據
六、Maxout 函數
Maxout也是近些年很是流行的激勵函數,簡單來講,它是ReLU和Leaky ReLU的一個泛化版本,當w一、b1設置爲0時,便轉換爲ReLU公式。
所以,Maxout繼承了ReLU的優勢,同時又沒有「一不當心就掛了」的擔心。但相比ReLU,由於有2次線性映射運算,所以計算量也會翻倍。人工智能
推薦相關閱讀spa
歡迎關注本人的微信公衆號「大數據與人工智能Lab」(BigdataAILab),獲取更多資訊