1. 程式人生 > >淺析神經網路中的啟用函式

淺析神經網路中的啟用函式

1 什麼是啟用函式

啟用函式就是一類x到y的對映
目的:是為了引入非線性元素,解決線性模型不能解決的問題。
意義:一個沒有啟用函式的神經網路將只不過是一個線性迴歸模型(Linear regression Model)。它並不能表達複雜的資料分佈。

啟用函式一般要滿足的性質:
非線性:因為如果是線性啟用函式,不管多少隱藏層,輸出都是輸入的線性組合。
可微性:因為當優化方法是基於梯度的時候,要對啟用函式求偏導。
單調性:當啟用函式是單調的時候,單層網路能夠保證是凸函式。
輸出值範圍:當啟用函式輸出值是有限的時候,基於梯度的優化方法會更加穩定,因為特徵的表示受有限權值的影響更顯著。當啟用函式輸出值為無限的時候,模型的訓練會更加高效,不過在這種情況下,一般需要更小的learning rate。

2 神經網路中為什麼要使用啟用函式?

因為有些資料集並不是線性可分的。比如下面兩幅圖,左邊是線性不可分,右邊是線性可分。如果不用一個啟用函式來處理,那這個神經網路什麼時候也不能把左邊這幅圖的兩種顏色的資料分開。

3 相關概念

飽和:當一個啟用函式h(x)滿足
limn±h(x)=0 我們稱之為飽和了,n趨近於正無窮時為

硬飽和和軟飽和:對任意的xx,如果存在常數cc,當x>cx>c時恆有 h′(x)=0h′(x)=0則稱其為右硬飽和,當x

4 常用的啟用函式

4.1 Sigmoid函式

sigmoid函式在淺層神經網路(三層)中使用比較多。

  • 公式:

    f(x)=11+ex
  • 影象:

優點:
1、輸出範圍有限(0,1),在資料傳遞過程中不容易發散。所以可以作為輸出層,輸出表示概率。

缺點:
1、飽和導致容易產生梯度消失。sigmoid 神經元在值為 0 或 1 的時候接近飽和,這些區域,梯度幾乎為 0。因此在反向傳播時,這個區域性梯度會與整個代價函式關於該單元輸出的梯度相乘,結果也會接近為 0 。
這樣,幾乎就沒有訊號通過神經元傳到權重再到資料了,因此這時梯度就對模型的更新沒有任何貢獻。導致資訊丟失。
除此之外,為了防止飽和,必須對於權重矩陣的初始化特別留意。比如,如果初始化權重過大,那麼大多數神經元將會飽和,導致網路就幾乎不學習。
2、其輸出並不是以0為中心的,這個特性會導致後面網路層的輸入也不是0為中心的,進而影響梯度下降的運作。因為如果輸入都是正數的話,那麼關於梯度在反向傳播過程中,要麼全是正數,要麼全是負數,這將會導致梯度下降權重更新時出現z字型下降。

4.2 tanh(雙曲正切)函式

  • 公式:

    tanh(x)=$1+e2x1e2x
  • 影象:

優點:
1. 相比Sigmoid收斂速度更快。
2. 其輸出以0為中心。

缺點:
和sigmoid函式一樣,也是存在梯度消失的問題。

4.3 ReLU,目前使用最廣泛的啟用函式

  • 公式:

    f(x)={0x(x≤0)(x>0)
  • 影象:

優點:
1. 更容易學習優化,收斂速度比sigmoid/tanh快很多。因為其分段線性性質,導致其前傳、後傳,求導都是分段線性。
2. Relu會使一部分神經元的輸出為0,這樣就造成了網路的稀疏性,並且減少了引數的互相依存關係,緩解了過擬合問題的發生。
3. 在生物上的合理性,它是單邊的,相比sigmoid和tanh,更符合生物神經元的特徵。

缺點:
1. ReLU在訓練的時候很”脆弱”,一不小心有可能導致神經元”壞死”。舉個例子:由於ReLU在x<0時梯度為0,這樣就導致負的梯度在這個ReLU被置零,而且這個神經元有可能再也不會被任何資料啟用。如果這個情況發生了,那麼這個神經元之後的梯度就永遠是0了,也就是ReLU神經元壞死了,不再對任何資料有所響應。實際操作中,如果你的learning rate 很大,那麼很有可能你網路中的40%的神經元都壞死了。 當然,如果你設定了一個合適的較小的learning rate,這個問題發生的情況其實也不會太頻繁。

4.4 Leaky-ReLU、P-ReLU、R-ReLU

  • LReLU和PReLU的函式:

    f(x)={yiaiyi(y_{i}>0)(y_{i}≤0)
  • RReLU函式:

  • LReLU
    當aiai比較小而且固定的時候,我們稱之為LReLU。LReLU最初的目的是為了避免梯度消失。但在一些實驗中,我們發現LReLU對準確率並沒有太大的影響。很多時候,當我們想要應用LReLU時,我們必須要非常小心謹慎地重複訓練,選取出合適的aa,LReLU的表現出的結果才比ReLU好。因此有人提出了一種自適應地從資料中學習引數的PReLU。

  • PReLU
    PReLU是LReLU的改進,可以自適應地從資料中學習引數。PReLU具有收斂速度快、錯誤率低的特點。PReLU可以用於反向傳播的訓練,可以與其他層同時優化。

  • RReLU
    其中,aij是一個保持在給定範圍內取樣的隨機變數,在測試中是固定的。RReLU在一定程度上能起到正則效果。

4.5 ELU

  • 公式:f(x)={xα(ex1)(x0)(x < 0)
  • 影象:

優點:
1、融合了sigmoid和ReLU,左側具有軟飽和性,右側無飽和性。右側線性部分使得ELU能夠緩解梯度消失,而左側軟飽能夠讓ELU對輸入變化或噪聲更魯棒。ELU的輸出均值接近於零,所以收斂速度更快。
2、將前面單元輸入的啟用值均值控制在0。
3、讓啟用函式的負值部分也可以被使用了。之前的啟用函式,負值部分幾乎不攜帶資訊,特別是ReLU.

4.6 Maxout

f(x)=max(wT1x+b1,wT2x+b2,...,wTn+bn)

優點: maxout能夠近似任意連續函式,且當w_{2},b_{2},…,w_{n},b_{n}為0時,退化為ReLU,Maxout同時能夠緩解梯度消失,同時又規避了ReLU神經元死亡的缺點.
缺點: 增加了引數和計算量。

4.7 Softmax

fi(x)=exiJj=1exjfori=1,....j
應用到多分類,把多個輸入對映到0-1的數。

5 如何選擇啟用函式?

1) 4層以上就不要考慮sigmoid了,很容易出現梯度消失。
2)可以嘗試tanh,但是層數多時tanh也會出現梯度消失。
3)使用ReLU啟用函式時,注意不要把學習率設定太高,避免產生神經元“死亡”現象。
4)最好使用Maxout或者Leaky ReLU。

參考資料: