所謂激活函數,就是在神經網絡的神經元上運行的函數,負責將神經元的輸入映射到輸出端。常見的激活函數包括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函數對中央區的信號增益較大,對兩側區的信號增益小,在信號的特征空間映射上,有很好的效果。
從神經科學上來看,中央區酷似神經元的興奮態,兩側區酷似神經元的抑制態,因而在神經網絡學習方面,可以將重點特征推向中央區,將非重點特征推向兩側區。
TanHyperbolic(tanh)函數
TanHyperbolic(tanh)函數又稱作雙曲正切函數,數學表達式為y=(ex−e−x)/(ex+e−x),其函數曲線與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)。
如果想要了解更多的話,http://www.cnblogs.com/neopenx/p/4453161.html對softplus進行了詳細的介紹,這里不再贅述。
softmax函數
我們可以看到,Sigmoid函數實際上就是把數據映射到一個(−1,1)的空間上,也就是說,Sigmoid函數如果用來分類的話,只能進行二分類,而這里的softmax函數可以看做是Sigmoid函數的一般化,可以進行多分類。softmax函數的函數表達式為:σ(z)j=eZj/∑Kk=1eZk。從公式中可以看出,就是如果某一個zj大過其他z,那這個映射的分量就逼近於1,其他就逼近於0,即用於多分類。也可以理解為將K維向量映射為另外一種K維向量。