激活函數是用來解決線性不可分問題的一個方法,常用來svm以及神經網絡中。
常見的激活函數有sigmoid函數、tanh函數、softmax函數以及ReLU函數,上述方法都可以作爲隱層神經元的輸出。
1.sigmoid函數
導數爲:
圖像及導數圖像:
圖像結果在(0,1)之間,激活函數計算量大,反向傳播求誤差梯度時,會出現除法;並且在深層次網絡中容易產生梯度消失問題(當梯度小於1時,預測值與真實值之間的誤差每傳播一層會衰減一次),導致訓練出現問題,這是由於函數導數導致了軟飽和激活函數,導數圖像是關於x是對稱的,這就在對稱線會出現左飽和和右飽和;sigmoid函數的輸出不是0均值,將導致後一層的神經元將得到上一層輸出的非0均值的信號作爲輸入。
在分類問題中,可以將分類結果映射到0和1之間,可以得到每個類產生結果的可能性,進而完成分類。適用於特徵之間相差比較複雜或相差不大的情況。
一般情況下,不建議使用sigmoid函數,如果要用的話可以試着用tanh函數。
2.tanh函數
函數圖像爲:
圖像結果在[-1,1]之間,從圖像上看函數的收斂速度會比sigmoid函數收斂快,在特徵相差明顯時的效果會很好,在循環過程中會不斷擴大特徵效果。
tanh是一中改進的sigmoid函數,tanh的輸出是0均值的來改善sigmoid非0均值的問題,tanh一樣具有軟飽和性,容易產生梯度消失問題。
3.softmax函數
該函數是取得所有元素指數和的比值。該函數的計算非常簡單、易懂。通過指數的確定,擴大神經的映射。函數多用於多分類問題。
4.ReLU函數
函數圖像:
ReLU函數對於SGD的收斂有巨大的加速作用(ImageNet Classification with Deep ConvolutionalNeural Networks論文中提出),這個是線性,非飽和的形式,另外ReLU有效的緩解了梯度消失的問題,而且它提供了神經網絡的稀疏表達能力。
當神經元更新參數後,權重無法更新的情況。如果發生這種情況,那麼神經元的梯度從這一點開始將永遠是0。也就是說,ReLU的神經元在訓練中不可逆的死亡了。如果使用ReLU函數,就要小心設置learning rate,注意不要讓你網絡中出現很多"dead"神經元。
P-ReLU方法、Leaky-ReL、R-ReLU是上述改進方法。
爲了方便查看函數圖像,引用了文獻中的圖片。
參考文獻:
https://blog.csdn.net/u011584941/article/details/71534828
https://blog.csdn.net/guorongronghe/article/details/70174476
https://blog.csdn.net/zchang81/article/details/70224688