1. 程式人生 > >神經網路中的啟用函式(activation function)-Sigmoid, ReLu, TanHyperbolic(tanh), softmax, softplus

神經網路中的啟用函式(activation function)-Sigmoid, ReLu, TanHyperbolic(tanh), softmax, softplus

  不管是傳統的神經網路模型還是時下熱門的深度學習,我們都可以在其中看到啟用函式的影子。所謂啟用函式,就是在神經網路的神經元上執行的函式,負責將神經元的輸入對映到輸出端。常見的啟用函式包括Sigmoid、TanHyperbolic(tanh)、ReLu、 softplus以及softmax函式。這些函式有一個共同的特點那就是他們都是非線性的函式。那麼我們為什麼要在神經網路中引入非線性的啟用函式呢?引用https://www.zhihu.com/question/29021768的解釋就是:

如果不用激勵函式(其實相當於激勵函式是f(x) = x),在這種情況下你每一層輸出都是上層輸入的線性函式,很容易驗證,無論你神經網路有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,這種情況就是最原始的感知機(Perceptron)了。
正因為上面的原因,我們決定引入非線性函式作為激勵函式,這樣深層神經網路就有意義了(不再是輸入的線性組合,可以逼近任意函式)。最早的想法是sigmoid函式或者tanh函式,輸出有界,很容易充當下一層輸入(以及一些人的生物解釋balabala)。

  由此可見,啟用函式對神經網路的深層抽象功能有著極其重要的意義,下面根據我在網路上找到的資料,分別對上述啟用函式進行說明:

Sigmoid函式

  Sigmoid函式的表示式為y=1/(1+ex),函式曲線如下圖所示:
  
        Sigmoid函式的函式曲線
  
  Sigmoid函式是傳統神經網路中最常用的啟用函式,一度被視為神經網路的核心所在。
  從數學上來看,Sigmoid函式對中央區的訊號增益較大,對兩側區的訊號增益小,在訊號的特徵空間對映上,有很好的效果。
  從神經科學上來看,中央區酷似神經元的興奮態,兩側區酷似神經元的抑制態,因而在神經網路學習方面,可以將重點特徵推向中央區,將非重點特徵推向兩側區。

TanHyperbolic(tanh)函式

  TanHyperbolic(tanh)函式又稱作雙曲正切函式,數學表示式為y=(exex)/(ex+ex),其函式曲線與Sigmoid函式相似,tanh函式與Sigmoid函式的函式曲線如下所示:
        這裡寫圖片描述
  
  在具體應用中,tanh函式相比於Sigmoid函式往往更具有優越性,這主要是因為Sigmoid函式在輸入處於[-1,1]之間時,函式值變化敏感,一旦接近或者超出區間就失去敏感性,處於飽和狀態,影響神經網路預測的精度值。而tanh的輸出和輸入能夠保持非線性單調上升和下降關係,符合BP網路的梯度求解,容錯性好,有界,漸進於0、1,符合人腦神經飽和的規律,但比sigmoid函式延遲了飽和期。

ReLu函式和softplus函式

  ReLu函式的全稱為Rectified Linear Units,函式表示式為y=max(0,x),softplus函式的數學表示式為y=log(1+ex),它們的函式表示式如下:
  這裡寫圖片描述
  可以看到,softplus可以看作是ReLu的平滑。根據神經科學家的相關研究,softplus和ReLu與腦神經元啟用頻率函式有神似的地方。也就是說,相比於早期的啟用函式,softplus和ReLu更加接近腦神經元的啟用模型,而神經網路正是基於腦神經科學發展而來,這兩個啟用函式的應用促成了神經網路研究的新浪潮。
  那麼softplus和ReLu相比於Sigmoid的優點在哪裡呢?引用https://www.zhihu.com/question/29021768的解釋就是:

第一,採用sigmoid等函式,算啟用函式時(指數運算),計算量大,反向傳播求誤差梯度時,求導涉及除法,計算量相對大,而採用Relu啟用函式,整個過程的計算量節省很多。
第二,對於深層網路,sigmoid函式反向傳播時,很容易就會出現梯度消失的情況(在sigmoid接近飽和區時,變換太緩慢,導數趨於0,這種情況會造成資訊丟失),從而無法完成深層網路的訓練。
第三,Relu會使一部分神經元的輸出為0,這樣就造成了網路的稀疏性,並且減少了引數的相互依存關係,緩解了過擬合問題的發生(以及一些人的生物解釋balabala)。

softmax函式

  我們可以看到,Sigmoid函式實際上就是把資料對映到一個(1,1)的空間上,也就是說,Sigmoid函式如果用來分類的話,只能進行二分類,而這裡的softmax函式可以看做是Sigmoid函式的一般化,可以進行多分類。softmax函式的函式表示式為:σ(z)j=eZj/k=1KeZk。從公式中可以看出,就是如果某一個zj大過其他z,那這個對映的分量就逼近於1,其他就逼近於0,即用於多分類。也可以理解為將K維向量對映為另外一種K維向量。用通訊的術語來講,如果Sigmoid函式是MISO,Softmax就是MIMO的Sigmoid函式。