Difference between ReLU、LReLU、PReLU、CReLU、ELU、SELU


激活函數 ReLU、LReLU、PReLU、CReLU、ELU、SELU  的定義和區別

ReLU

tensorflow中:tf.nn.relu(features, name=None)

LReLU

(Leaky-ReLU) 

 

其中 ai 是固定的。 i 表示不同的通道對應不同的 ai . 
tensorflow中:tf.nn.leaky_relu(features, alpha=0.2, name=None)

 

PReLU

 

其中ai是可以學習的的。如果ai=0,那么 PReLU 退化為ReLU;如果 aiai是一個很小的固定值(如ai=0.01),則 PReLU 退化為 Leaky ReLU(LReLU)。 
PReLU 只增加了極少量的參數,也就意味着網絡的計算量以及過擬合的危險性都只增加了一點點。特別的,當不同 channels 使用相同的ai時,參數就更少了。BP 更新ai時,采用的是帶動量的更新方式(momentum)。 
tensorflow中:沒找到啊!

CReLU

(Concatenated Rectified Linear Units) 

 


tensorflow中:tf.nn.crelu(features, name=None)

 

ELU

 

 


其中α是一個可調整的參數,它控制着ELU負值部分在何時飽和。 
右側線性部分使得ELU能夠緩解梯度消失,而左側軟飽能夠讓ELU對輸入變化或噪聲更魯棒。ELU的輸出均值接近於零,所以收斂速度更快 
tensorflow中:tf.nn.elu(features, name=None)

SELU

 

經過該激活函數后使得樣本分布自動歸一化到0均值和單位方差(自歸一化,保證訓練過程中梯度不會爆炸或消失,效果比Batch Normalization 要好) 

其實就是ELU乘了個lambda,關鍵在於這個lambda是大於1的。以前relu,prelu,elu這些激活函數,都是在負半軸坡度平緩,這樣在activation的方差過大的時候可以讓它減小,防止了梯度爆炸,但是正半軸坡度簡單的設成了1。而selu的正半軸大於1,在方差過小的的時候可以讓它增大,同時防止了梯度消失。這樣激活函數就有一個不動點,網絡深了以后每一層的輸出都是均值為0方差為1。

tensorflow中:tf.nn.selu(features, name=None)

 

 PS:

Activation Function Cheetsheet

 

 

 

來源:




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM