深度學習幾種主流啟用函式總結
啟用函式的定義
加拿大蒙特利爾大學的Bengio教授在 ICML 2016 的文章[1]中給出了啟用函式的定義:啟用函式是對映 h:R→R,且幾乎處處可導。
啟用函式的性質
- 非線性: 當啟用函式是線性的時候,一個兩層的神經網路就可以逼近基本上所有的函數了。但是,如果啟用函式是恆等啟用函式的時候(即),就不滿足這個性質了,而且如果MLP使用的是恆等啟用函式,那麼其實整個網路跟單層神經網路是等價的。
- 可微性: 當優化方法是基於梯度的時候,這個性質是必須的。
- 單調性: 當啟用函式是單調的時候,單層網路能夠保證是凸函式
為什麼要用啟用函式?
神經網路中啟用函式的主要作用是提供網路的非線性建模能力,如不特別說明,啟用函式一般而言是非線性函式。假設一個示例神經網路中僅包含線性卷積和全連線運算,那麼該網路僅能夠表達線性對映,即便增加網路的深度也依舊還是線性對映,難以有效建模實際環境中非線性分佈的資料。加入(非線性)啟用函式之後,深度神經網路才具備了分層的非線性對映學習能力。因此,啟用函式是深度神經網路中不可或缺的部分。
啟用函式可以幫助神經網路隔離噪聲點。即啟用有用的資訊,抑制無關的資料點。
sigmod函式
Sigmoid 是使用範圍最廣的一類啟用函式,具有指數函式形狀 。正式定義為:
函式對應影象為:
優點:
- sigmoid函式的輸出對映在(0,1)之間,單調連續,輸出範圍有限,優化穩定,可以用於輸入的歸一化,也可以用作輸出層。
- 求導容易
缺點:
- 由於其軟飽和性,即容易產生梯度消失,導致訓練出現問題。
- 其輸出並不是以0為中心的
說明:
飽和性可以分為軟飽和、硬飽和。其中,軟飽和是指函式的導數趨近於0,硬飽和是指函式的導數等於0。
Sigmoid 的軟飽和性,使得深度神經網路在二三十年裡一直難以有效的訓練,是阻礙神經網路發展的重要原因。具體來說,由於在後向傳遞過程中,sigmoid向下傳導的梯度包含了一個f'(x) 因子(sigmoid關於輸入的導數),因此一旦輸入落入飽和區,f'(x) 就會變得接近於0,導致了向底層傳遞的梯度也變得非常小。此時,網路引數很難得到有效訓練。這種現象被稱為梯度消失。一般來說, sigmoid 網路在 5 層之內就會產生梯度消失現象
Sigmoid 的飽和性雖然會導致梯度消失,但也有其有利的一面。例如它在物理意義上最為接近生物神經元。 (0, 1) 的輸出還可以被表示作概率,或用於輸入的歸一化,代表性的如Sigmoid交叉熵損失函式
sigmoid的輸出均大於0,使得輸出不是0均值,稱為偏移現象,這將導致後一層的神經元將上一層輸出的非0均值的訊號作為輸入。關於原點對稱的輸入和中心對稱的輸出,網路會收斂地更好。
tanh函式
tanh的公式如下:
函式對應的影象如下:
優點:
- 比sigmoid函式收斂速度更快。
- 相比sigmoid函式,其輸出以0為中心。
缺點:
- 依舊具有軟飽和問題。
說明:
Xavier在文獻[2]中分析了sigmoid與tanh的飽和現象及特點,具體見原論文。此外,文獻 [3] 中提到tanh 網路的收斂速度要比sigmoid快。因為 tanh 的輸出均值比 sigmoid 更接近 0,SGD會更接近 natural gradient[4](一種二次優化技術),從而降低所需的迭代次數。
ReLU函式
Relu的公式如下:
函式對應的影象如下:
優點:
- Relu具有線性、非飽和的特點,並且相比Sigmoid和tanh,Relu的收斂速度更快。
- Relu實現比較簡單。
- Relu有效緩解了梯度下降問題。
- 提供了神經網路的稀疏表達能力
缺點:
- 隨著訓練的進行,可能會出現神經元死亡,權重無法更新的情況。
- 當x<0時,Relu是硬飽和的。
說明:
ReLU是一種後來才出現的啟用函式。從圖中可以看到,當x<0時,出現硬飽和,當x>0時,不存在飽和問題。因此,ReLU 能
夠在x>0時保持梯度不衰減,從而緩解梯度消失問題。然而,隨著訓練的推進,部分輸入會落入硬飽和區,導致對應權重無法更
新,這種現象被稱為“神經元死亡”。
與sigmoid類似,ReLU的輸出均值也大於0。偏移現象和神經元死亡會共同影響網路的收斂性。
啟用函式大面積沒有被啟用的原因可能是:1)初始化時,引數的設定使得ReLU沒有被啟用;2)學習速率太高,神經元在一定範圍內波動,可能會發生資料多樣性的丟失,這種情況下神經元不會被啟用,資料多樣性的丟失不可逆轉。
Leaky-ReLU 與 Parametric -ReLU函式
針對ReLU函式在x<0時的硬飽和問題,出現了Leaky-ReLU與P-ReLU進行改進,它們在形式上相似,不同的是在Leaky-ReLU中,α 是一個常數,實際中必須必須非常小心謹慎地重複訓練,從而選取合適的引數a;在P-ReLU中,α 可以作為引數來學習,自適應地從資料中學習引數。PReLU具有收斂速度快、錯誤率低的特點,可以用於反向傳播的訓練。
函式影象如下:
Maxout函式
Maxout[2]是ReLU的推廣(出現在ICML2013),其發生飽和是一個零測集事件(measure zero event)。正式定義為:
Maxout網路能夠近似任意連續函式,且當w2,b2,…,wn,bn為0時,退化為ReLU。 其實,Maxout的思想在視覺領域存在已久。例如,在HOG特徵裡有這麼一個過程:計算三個通道的梯度強度,然後在每一個畫素位置上,僅取三個通道中梯度強度最大的數值,最終形成一個通道。這其實就是Maxout的一種特例。
Maxout能夠緩解梯度消失,同時又規避了ReLU神經元死亡的缺點,但增加了引數和計算量。
ELU函式
ELU[3]融合了sigmoid和ReLU,具有左側軟飽性。其正式定義為:
函式影象如下:
優點:
- ELU融合了sigmoid和ReLU,左側具有軟飽和性,右側無飽和性。右側線性部分使得ELU能夠緩解梯度消失,而左側軟飽能夠 讓ELU對輸入變化或噪聲更魯棒。
- ELU的輸出均值接近於零,所以收斂速度更快。
啟用函式選擇的建議
1 ) 由於梯度消失問題,有時要避免使用sigmoid和tanh函式
2)ReLU函式基本用在隱藏層。使用 ReLU,一定要小心設定 learning rate,注意不要讓你的網路出現很多 “dead” 神經元
3)在人工神經網路(ANN)中,Softmax通常被用作輸出層的啟用函式。這不僅是因為它的效果好,而且因為它使得ANN的輸出值更易於理解。
- softmax函式最明顯的特點在於:它把每個神經元的輸入佔當前層所有神經元輸入之和的比值,當作該神經元的輸出。這使得輸出更容易被解釋:神經元的輸出值越大,則該神經元對應的類別是真實類別的可能性更高。
- softmax不僅把神經元輸出構造成概率分佈,而且還起到了歸一化的作用,適用於很多需要進行歸一化處理的分類問題。
- softmax配合log似然代價函式,其訓練效果也要比採用二次代價函式的方式好:二次代價函式在訓練ANN時可能會導致訓練速度變慢的問題(初始的輸出值離真實值越遠,訓練速度就越慢)。這個問題可以通過採用交叉熵代價函式來解決(當啟用函式是sigmod時候),也可以通過softmax的log似然代價函式。
參考文獻
[1] Gulcehre, C., et al., Noisy Activation Functions, in ICML 2016.
[2] Goodfellow, I.J., et al. Maxout Networks. ICML 2013
[3] Djork-Arné Clevert, T.U., Sepp Hochreiter. Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs). ICLR 2016