參考:http://www.cnblogs.com/rgvb178/p/6055213.html
Sigmoid函數
Sigmoid函數曾被廣泛地應用,但由於其自身的一些缺陷,現在很少被使用了。Sigmoid函數被定義為:

函數對應的圖像是:
優點:
1.Sigmoid函數的輸出映射在(0,1)之間,單調連續,輸出范圍有限,優化穩定,可以用作輸出層。
2.求導容易。
缺點:
1.由於其軟飽和性,容易產生梯度消失,導致訓練出現問題。
2.其輸出並不是以0為中心的。
tanh函數
現在,比起Sigmoid函數我們通常更傾向於tanh函數。tanh函數被定義為

函數位於[-1, 1]區間上,對應的圖像是:
優點:
1.比Sigmoid函數收斂速度更快。
2.相比Sigmoid函數,其輸出以0為中心。
缺點:
還是沒有改變Sigmoid函數的最大問題——由於飽和性產生的梯度消失。
ReLU
ReLU是最近幾年非常受歡迎的激活函數。被定義為

對應的圖像是:
但是除了ReLU本身的之外,TensorFlow還提供了一些相關的函數,比如定義為min(max(features, 0), 6)的tf.nn.relu6(features, name=None);或是CReLU,即tf.nn.crelu(features, name=None)。其中(CReLU部分可以參考這篇論文)。
優點:
1.相比起Sigmoid和tanh,ReLU(e.g. a factor of 6 in Krizhevsky et al.)在SGD中能夠快速收斂。例如在下圖的實驗中,在一個四層的卷積神經網絡中,實線代表了ReLU,虛線代表了tanh,ReLU比起tanh更快地到達了錯誤率0.25處。據稱,這是因為它線性、非飽和的形式。
2.Sigmoid和tanh涉及了很多很expensive的操作(比如指數),ReLU可以更加簡單的實現。
3.有效緩解了梯度消失的問題。
4.在沒有無監督預訓練的時候也能有較好的表現。
5.提供了神經網絡的稀疏表達能力。
缺點:
隨着訓練的進行,可能會出現神經元死亡,權重無法更新的情況。如果發生這種情況,那么流經神經元的梯度從這一點開始將永遠是0。也就是說,ReLU神經元在訓練中不可逆地死亡了。
Softmax - 用於多分類神經網絡輸出
為什么要取指數,第一個原因是要模擬 max 的行為,所以要讓大的更大。
第二個原因是需要一個可導的函數。