1.sigmod函數——
(tf.nn.sigmoid())
sigmod函數性質:
1.如圖像所示其值域在[0,1]之間,函數輸出不是0均值的,權重更新效率降低,因為這會導致后層的神經元的輸入是非0均值的信號,這會對梯度產生影響:假設后層神經元的輸入都為正(e.g. x>0 elementwise in ),那么對w求局部梯度則都為正,這樣在反向傳播的過程中w要么都往正方向更新,要么都往負方向更新,導致有一種捆綁的效果,使得收斂緩慢。 當然了,如果你是按batch去訓練,那么每個batch可能得到不同的符號(正或負),那么相加一下這個問題還是可以緩解。因此,非0均值這個問題雖然會產生一些不好的影響,不過跟上面提到的 kill gradients 問題相比還是要好很多的。
2.如圖當其取值遠離原點時,其梯度越來越小趨近於0,在反向傳播中,用鏈式求導法,求權值求梯度,梯度逐層減小,權值更新速度緩慢,一般不超過五層sigmod層,就會出現梯度彌散,即梯度飽和問題。
3.要進行指數運算,速度慢
4.定義域(0, 1) 可以表示作概率,或者用於輸入的歸一化,如Sigmoid交叉熵損失函數。
5.sigmoid在壓縮數據幅度方面有優勢,在深度網絡中,在前向傳播中,sigmoid可以保證數據幅度在[0,1]內,這樣數據幅度穩住了,不會出現數據擴散,不會有太大的失誤。
2.tanh 函數——
(tf.nn.tanh())
tanh函數性質
1.如圖所示,值域是0均值的,權值更新快,而且也能保證數據幅度穩定。
2.也有梯度彌散問題,要進行指數運算,速度慢。
一般二分類問題中,隱藏層用tanh函數,輸出層用sigmod函數
3.relu函數——σ(x)=max(0,x)(tf.nn.relu())
relu函數性質
1.當輸入為正數的時候,不存在梯度飽和問題;當輸入是負數的時候,ReLU是完全不被激活的,這就表明一旦輸入到了負數,ReLU就會死掉。這樣在前向傳播過程中,還不算什么問題,有的區域是敏感的,有的是不敏感的。但是到了反向傳播過程中,輸入負數,梯度就會完全到0,這個和sigmod函數、tanh函數有一樣的問題。
2.ReLU函數也不是以0為中心的函數,權值更新慢
3.計算速度要快很多。ReLU函數只有線性關系,不管是前向傳播還是反向傳播,都比sigmod和tanh要快很多。
4.在正向傳播時,relu不會對數據做幅度壓縮,所以如果數據的幅度不斷擴張,那么模型的層數越深,幅度的擴張也會越厲害,最終會影響模型的表現。
5.但是relu在反向傳導方面可以很好地將梯度傳到后面,這樣在學習的過程中可以更好地發揮出來。
4.elu函數——(tf.nn.elu())

ELU函數是針對ReLU函數的一個改進型,相比於ReLU函數,在輸入為負數的情況下,是有一定的輸出的,而且這部分輸出還具有一定的抗干擾能力。這樣可以消除ReLU死掉的問題,不過還是有梯度飽和和指數運算的問題。
5.prelu函數——σ(x)=max(ax,x)(tf.nn.relu())

1.參數α一般是取0~1之間的數,而且一般還是比較小的,如零點零幾。當α=0.01時,PReLU為Leaky ReLU。
2.PReLU也是針對ReLU的一個改進型,在負數區域內,PReLU有一個很小的斜率,雖然斜率很小,但是不會趨於0。這樣也可以避免ReLU死掉的問題。相比於ELU,PReLU在負數區域內是線性運算,速度快。
6.softplus函數——σ(x)=log(1+ex)(tf.nn.softplus())

softplus可以看作是ReLu的平滑。根據神經科學家的相關研究,softplus和ReLu與腦神經元激活頻率函數有神似的地方。也就是說,相比於早期的激活函數,softplus和ReLu更加接近腦神經元的激活模型。
7.softmax函數

softmax把一個k維的real value向量(a1,a2,a3,a4….)映射成一個(b1,b2,b3,b4….)其中bi是一個0-1的常數,且k項之和為1,用於多分類任務,bi最大的那一項為所屬類別。
8.maxout函數

f
是將激活函數用一層全鏈接層取擬合,輸出為,那層的最大值,理論maxout網絡能夠近似任意連續函數,且當w2,b2,…,wn,bn為0時,退化為ReLU。Maxout能夠緩解梯度消失,同時又規避了ReLU神經元死亡的缺點,但增加了參數和計算量,對於中間層數k,其參數會隨k增長。
權值初始化
1.高斯初始化
2.均值初始化
3.Xavir初始化——(tf.contrib.layer.xavier_initializer_conv2d())

如上圖nj為第j層的節點數,為均勻分布均值為1,且保證前向傳播和反向傳播時每一層的方差一致,原因可以見論文及其解釋為了,當激活函數為sigmoid和tanh的時候比較適用。
- X. Glorot and Y. Bengio. Understanding the difficulty of training deepfeedforward neural networks. In International Conference on Artificial Intelligence and Statistics, pages 249–256, 2010.
- Y. Jia, E. Shelhamer, J. Donahue, S. Karayev, J. Long, R. Girshick, S.Guadarrama, and T. Darrell. Caffe: Convolutional architecture for fast featureembedding. arXiv:1408.5093, 2014.
這對梯度消失有好處?感覺只是保證了在前向傳播中方差一致的問題,解決了前向傳播中的數據穩定性保證問題,可以防止數據擴散和爆炸問題4.relu比較適用(he initia——激活函數為())tf.contrib.layers.variance_scaling_initializer

