這篇文章用來整理一下入門深度學習過程中接觸到的四種激活函數,下面會從公式、代碼以及圖像三個方面介紹這幾種激活函數,首先來明確一下是哪四種: 激活函數的作用下面圖像A是一個線性可分問題,也就是說對於兩類點(藍點和綠點),你通過一條直線就可以實現完全分類。當然圖像A是最理想、也是最簡單的一種二分類問題,但是現實中往往存在一些非常複雜的線性不可分問題,比如圖像B,你是找不到任何一條直線可以將圖像B中藍點和綠點完全分開的,你必須圈出一個封閉曲線。而激活函數就是幫助"繪製"這個封閉曲線的非線性函數,有了激活函數的幫助,很多算法的處理能力會得到加強,也可以處理線性不可分問題。Sigmoid函數Sigmoid函數曾在介紹邏輯回歸時提起過,它的數學表達式為:其中 e 為納皮爾常數,其值為2.7182... 它的圖像如下:
這兩個函數相同的是,當輸入的 x 值很大或者很小時,對應函數輸出的 y 值近乎相等,同樣的缺點也是梯度特別小,非常不利於權重的更新;不同的是Tanh函數的值域為(-1,1),並且當 x = 0 時,輸出的函數值為0。
import numpy as np def tanh(x): return (exp(x)-exp(-x))/(exp(x)+exp(-x)) ReLu函數ReLu是線性整流函數,又稱為修正性線性單元,它的函數的數學表達式為
圖像很容易理解,若輸入的 x 值小於0,則輸出為也為0;若輸入的 x 值大於0,則直接輸出 x 值,需要注意的是ReLu函數在x = 0 處不連續(不可導),但同樣也可以作為激活函數。與Sigmoid函數和Tanh函數相比,ReLu函數一個很明顯的優點就是在應用梯度下降法是收斂較快,當輸入值為整數時,不會出現梯度飽和的問題,因為大於0的部分是一個線性關係,這個優點讓ReLu成為目前應用較廣的激活函數。
import numpy as np def relu(x): return np.maximum(0,x) SoftMax函數分類問題可以分為二分類問題和多分類問題,Sigmoid函數比較適合二分類問題,而SoftMax函數更加適合多分類問題。其中