激活函數

深度學習之激活函數

之前我們介紹了Sigmoid函數能夠將輸入的數據轉換到0和1之間,其實Sigmoid函數本質上是一種常用的激活函數,是神經元最重要的組成部分。那什麼是激活函數呢?激活函數有什麼作用呢?常見的激活函數都有哪些?以及如何選擇合適的激活函數?本節我們將重點對上述問題進行討論。

線性模型在處理非線性問題時往往手足無措,這時我們需要引入激活函數來解決線性不可分問題。激活函數(Activation function),又名激勵函數,往往存在於神經網絡的輸入層和輸出層之間,作用是給神經網絡中增加一些非線性因素,使得神經網絡能夠解決更加複雜的問題,同時也增強了神經網絡的表達能力和學習能力。

常用的激活函數有Sigmoid函數、雙曲正切激活函數(tanh)、修正線性單元(ReLU)等。接下來我們將一一學習。

sigmoid函數

Sigmoid函數是神經網絡中最常用到的激活函數,數學表達式爲:
f(x)=\frac{1}{1+e^{-x}}
函數圖像如下


由函數圖像可知,Sigmoid函數是單調增函數,輸出範圍在[0,1]之間,且越是負向增大,越接近於0,逼近速度越來越慢;越是正向增大,越接近於1,逼近速度也是越來越慢;因爲 Sigmoid函數求導比較容易可解釋性也很強,所以在歷史上被廣泛的使用。

與此同時,Sigmoid函數也有兩個很大的缺點:首先是Sigmoid函數會造成梯度消失問題,從圖像中我們也可以得知,當輸入特別大或是特別小時,神經元的梯度幾乎接近於0,這就導致神經網絡不收斂,模型的參數不會更新,訓練過程將變得非常困難。另一方面,Sigmoid函數的輸出不是以0爲均值的,導致傳入下一層神經網絡的輸入是非0的。這就導致一個後果:若Sigmoid函數的輸出全部爲正數,那麼傳入下一層神經網絡的值永遠大於0,這時參數無論怎麼更新梯度都爲正。正是基於上述的缺點,Sigmoid函數近年來的使用頻率也在漸漸減弱

雙曲正切激活函數(Tanh)

Tanh函數又名雙曲正切激活函數,是Sigmoid函數的變形,其數學表達式爲:
tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}
函數圖像如圖3-9所示:


由上圖可知,tanh激活函數與Sigmoid函數不同的是,函數的輸出範圍在[-1,1]之間,且Tanh函數的輸出是以爲0均值的,這就一定程度上解決了上述Sigmoid函數的第二個缺點,所以其在實際應用中的效果要好於Sigmoid函數。但當輸入特別大或是特別小時,仍然存在梯度消失的問題。

修正線性單元ReLU

ReLU激活函數又名修正線性單元,是目前深層神經網絡中越來越受歡迎的一種激活函數,其數學表達式爲:f(x) = max(0,x),函數圖像如下圖所示:


從ReLU的函數圖像我們可以發現,函數原點左側的部分,輸出值爲0,斜率爲0;函數原點右側是斜率爲1的直線,且輸出值就是輸入值。相比於上述的Sigmoid和tanh兩種激活函數,ReLU激活函數完美的解決了梯度消失的問題,因爲它的線性的、非飽和的。此外,它的計算也更加簡單,只需要設置一個特定的閾值就可以計算激活值,這樣極大的提高了運算的速度。所以近年來,ReLU激活函數的應用越來越廣泛。

但是ReLU激活函數也有一些缺陷:訓練的時候不適合大梯度的輸入數據,因爲在參數更新之後,ReLU的神經元不會再任何數據節點被激活,這就會導致梯度永遠爲0。比如:輸入的數據小於0時,梯度就會爲0,這就導致了負的梯度被置0,而且今後也可能不會被任何數據所激活,也就是說ReLU的神經元“壞死”了。

所以針對ReLU函數上述的缺點,又出現了帶泄露的ReLU(Leaky ReLU)和帶參數的ReLU(Parametric ReLU)。

  • Leaky ReLU
    f(x)=\left\{\begin{array}{cc} x&if\ x>0\\ \lambda x& if\ x\leq 0\end{array}\right.
  • PReLU
    f(x)=\left\{\begin{array}{cc} x&if\ x>0\\ \alpha x& if\ x\leq 0\end{array}\right.其中\alpha爲可學習的參數變量

其它激活函數

Leaky ReLU是ReLU激活函數的變形,主要是針對ReLU函數中神經元容易壞死的缺陷,將原點左側小於0的部分,賦予一個很小的斜率。其效果通常要好於ReLU激活函數,但實踐中使用的頻率並沒有那麼高。數據公式爲:f(x) = max(0, x) + γmin(0, x)。通常,γ是一個很小的常數,如:0.01。

Parametric ReLU是ReLU激活函數的另一種變形,和Leaky ReLU函數一樣是非飽和函數,解決了壞死難題。不同之處在於其在函數中引入一個可學習的參數,往往不同的神經元有不同的參數,所以第i個神經元的數學表達式爲:f(x) = max(0, x) + γi min(0, x)。當γi 取0時,便可以視爲ReLU函數,取很小的常數時,可視爲Leaky ReLU函數。相對而言,Parametric ReLU激活函數的使用頻率也不是很高。

上述兩種ReLU激活函數的變形Leaky ReLU、Parametric ReLU函數圖如圖3-10所示:


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