激活函數Activation Function

目錄

 

激活函數

常見的激活函數

Sigmoid

Tanh

ReLU

Leaky ReLU

Softmax

結論


激活函數

神經網絡從信息處理角度對人腦神經元進行抽象,是一種運算模型,由大量的節點(神經元)之間相互連接構成。下圖是一個神經元的實例圖,對一個神經元來說,對輸入向量x進行加權求和,權重爲W,偏置量爲b,得到線性輸出爲,然後將求和結果z作爲一個激活函數f的輸入,激活函數的輸出爲該神經元的結果,此結果作爲下一層神經元的輸入。前一步的加權求和是線性變換,後一步的激活函數是非線性的。激活函數在神經網絡中加入非線性使得神經網絡能夠更好地解決較爲複雜的問題,如果缺少激活函數,一個神經網絡僅僅只是一個線性的迴歸模型,而對於複雜的問題,神經網絡將不再具有高效的學習力。

常見的激活函數

激活函數的種類很多,在這裏僅僅介紹一下常見的幾種激活函數。

Sigmoid

Sigmoid激活函數的函數形式爲,它爲S型曲線,取值區間爲(0,1),當x越小時,值越趨近於0,x越大的時候,值就越趨近於1,現在sigmoid激活函數很少使用,一般作爲輸出層的激活函數和用於二分類問題。

sigmoid激活函數的導數表達式爲。下圖是sigmoid原函數和其導數函數的圖形。如圖所示,當x>4和x<-4的時候,導數函數的取值趨近於0,使得當參數W迭代更改時,W幾乎不變,使得網絡很難得到有效的訓練,這就是梯度消失。

sigmoid激活函數需要進行指數運算,計算量大,而且反向傳播求誤差梯度時,很容易出現梯度消失的問題,使得不能完成深層網絡的訓練,除此外,sigmoid激活函數不是關於原點中心對稱的。吳恩達大大在深度學習課程中說tanh激活函數幾乎在任何場合的性能都優於sigmoid激活函數,除了輸出層和二分類,使用sigmoid會更好點。

Tanh

tanh激活函數的數學公式爲,爲雙曲正切函數,關於原點對稱,輸出區間在[-1,1]之間,使得激活函數的平均值接近於0(有類似數據中心化的效果,使得數據的平均值接近於0,能夠讓下一層的學習更加方便)。

tanh函數圖

tanh與sigmoid類似,可看做是由sigmoid激活函數平移得到,所以仍然存在梯度消失的問題,不過tanh的收斂速度要快於sigmoid函數。

ReLU

ReLU激活函數是Rectified linear unit的簡稱,是如今使用率最高的激活函數,它的數學形式爲。在輸入爲正數的時候,輸出等同於輸入,在輸入爲負數的時候,輸出爲0,爲分段線性函數。

當輸入爲正數時,其導數恆爲1,不衰減,從而緩解梯度消失問題。當輸入爲負數時,其導數爲0。

relu函數圖

 由於ReLU的導數沒有接近於0時減慢收斂速度的效應,所以ReLU激活函數在訓練過程中會比sigmoid和tanh收斂的更快。雖然ReLU有一半的導數爲0,但是在實踐中,有足夠多的神經元使得z大於0。

Leaky ReLU

leaky ReLU就是爲了解決ReLU激活函數當x爲負數時,導數爲0的情況,使得當x爲負數時,導數不爲0,而是有一個很平緩的斜率,如下圖所示。LReLU效果通常要比ReLU要好,不過實際使用的頻率卻沒有那麼高。還是ReLU更常用些。

prelu函數圖

 

Softmax

softmax激活函數的數學形式爲,用於多分類問題 ,輸出每一個類別的概率大小,所有類別的概率總和爲1,概率最大的類別就是輸入所屬的類別。

結論

  1. sigmoid激活函數更適用於輸出層,tanh幾乎在所有場合都優於sigmoid,但是目前最常用的默認激活函數是ReLU
  2. softmax更多地用於多分類問題

在建立神經網絡時有很多選擇,很難確定一個準則確定什麼參數才更適合,所以需要在測試集或者驗證集上試試各種選擇,然後選擇最好的。