所謂激活函數,就是在神經網絡的神經元上運行的函數,負責將神經元的輸入映射到輸出端。常見的激活函數包括Sigmoid、TanHyperbolic(tanh)、ReLu、 softplus以及softmax函數。這些函數有一個共同的特色那就是他們都是非線性的函數。那麼咱們爲何要在神經網絡中引入非線性的激活函數呢?引用https://www.zhihu.com/question/29021768的解釋就是:html
若是不用激勵函數(其實至關於激勵函數是f(x) = x),在這種狀況下你每一層輸出都是上層輸入的線性函數,很容易驗證,不管你神經網絡有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果至關,這種狀況就是最原始的感知機(Perceptron)了。
正由於上面的緣由,咱們決定引入非線性函數做爲激勵函數,這樣深層神經網絡就有意義了(再也不是輸入的線性組合,能夠逼近任意函數)。最先的想法是sigmoid函數或者tanh函數,輸出有界,很容易充當下一層輸入(以及一些人的生物解釋balabala)。網絡
因而可知,激活函數對神經網絡的深層抽象功能有着極其重要的意義。下面分別對上述激活函數進行說明:函數
Sigmoid函數的表達式爲y=1/(1+ex),函數曲線以下圖所示:
Sigmoid函數是傳統神經網絡中最經常使用的激活函數,一度被視爲神經網絡的核心所在。
從數學上來看,Sigmoid函數對中央區的信號增益較大,對兩側區的信號增益小,在信號的特徵空間映射上,有很好的效果。
從神經科學上來看,中央區酷似神經元的興奮態,兩側區酷似神經元的抑制態,於是在神經網絡學習方面,能夠將重點特徵推向中央區,將非重點特徵推向兩側區。學習
TanHyperbolic(tanh)函數又稱做雙曲正切函數,數學表達式爲y=(ex−e−x)/(ex+e−x),其函數曲線與Sigmoid函數類似,tanh函數與Sigmoid函數的函數曲線以下所示:
在具體應用中,tanh函數相比於Sigmoid函數每每更具備優越性,這主要是由於Sigmoid函數在輸入處於[-1,1]之間時,函數值變化敏感,一旦接近或者超出區間就失去敏感性,處於飽和狀態,影響神經網絡預測的精度值。而tanh的輸出和輸入可以保持非線性單調上升和降低關係,符合BP網絡的梯度求解,容錯性好,有界,漸進於0、1,符合人腦神經飽和的規律,但比sigmoid函數延遲了飽和期。atom
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的解釋就是:spa
第一,採用sigmoid等函數,算激活函數時(指數運算),計算量大,反向傳播求偏差梯度時,求導涉及除法,計算量相對大,而採用Relu激活函數,整個過程的計算量節省不少。
第二,對於深層網絡,sigmoid函數反向傳播時,很容易就會出現梯度消失的狀況(在sigmoid接近飽和區時,變換太緩慢,導數趨於0,這種狀況會形成信息丟失),從而沒法完成深層網絡的訓練。
第三,Relu會使一部分神經元的輸出爲0,這樣就形成了網絡的稀疏性,而且減小了參數的相互依存關係,緩解了過擬合問題的發生(以及一些人的生物解釋balabala)。htm
若是想要了解更多的話,http://www.cnblogs.com/neopenx/p/4453161.html對softplus進行了詳細的介紹,這裏再也不贅述。blog
咱們能夠看到,Sigmoid函數實際上就是把數據映射到一個(−1,1)的空間上,也就是說,Sigmoid函數若是用來分類的話,只能進行二分類,而這裏的softmax函數能夠看作是Sigmoid函數的通常化,能夠進行多分類。softmax函數的函數表達式爲:σ(z)j=eZj/∑Kk=1eZk。從公式中能夠看出,就是若是某一個zj大過其餘z,那這個映射的份量就逼近於1,其餘就逼近於0,即用於多分類。也能夠理解爲將K維向量映射爲另一種K維向量。圖片