人工智能python tensorflow2.0 常用激活函數

介紹幾種常用的神經網絡激活函數

1.sigmoid


人工智能python tensorflow2.0 常用激活函數

sigmoid函數公式


人工智能python tensorflow2.0 常用激活函數

sigmoid函數曲線

sigmoid也被稱為S型函數,它可以將整個實數區間映射到(0,1)區間,因此經常被用來計算概率

缺點是即當輸入x趨向於無窮的時候,它的導數會趨於0,導致很容易產生梯度消失

log_sigmoid函數:對sigmoid函數求log,它將整個實數區間映射到了(負無窮,0)

2.tanh


人工智能python tensorflow2.0 常用激活函數

tanh


人工智能python tensorflow2.0 常用激活函數

tanh函數曲線

tanh是雙曲正切函數,它將整個實數區間映射到了(-1,1),它的輸出是以0為中心,tanh的收斂速度比sigmoid要快。缺點是tanh也存在梯度消失的問題

3.relu


人工智能python tensorflow2.0 常用激活函數


人工智能python tensorflow2.0 常用激活函數

relu函數

由於x>0時,relu函數的導數為1,所以relu函數能夠在x>0時保持梯度不斷衰減,從而緩解梯度消失的問題,還能加快收斂速度當x<0時,relu函數的導數為0,導致對應的權重無法更新,這樣的神經元被稱為"神經元死亡"。

在TensorFlow中還包括了relu函數的擴展函數如:relu6和crelu,除此之外還有leaky relu、PRelu、RRelu等。

relu6激活函數:定義min(max(features,0),6),也就是說它的取值區間被限定在了[0,6]之間。

crelu激活函數:定義為[relu(x),relu(-x)]相對於relu(x),crelu的輸出會增加一倍。

4.leak_relu


人工智能python tensorflow2.0 常用激活函數


人工智能python tensorflow2.0 常用激活函數

leak_relu激活函數會給x<0,一個斜率,而不是將所有x<0都輸出0,默認斜率是0.2,x>0的部分仍然輸出是x,即斜率為1,保持不變。

5.softplus


人工智能python tensorflow2.0 常用激活函數


人工智能python tensorflow2.0 常用激活函數

softplus函數可以看作是relu函數的平滑版本

6.dropout

以一個概率為keep_prob來決定神經元是否被抑制。如果被抑制,該神經元輸出為0,如果不被抑制則該神經元的輸出為輸入的1/keep_probbe倍,每個神經元是否會被抑制是相互獨立的。神經元是否被抑制還可以通過調節noise_shape來調節,當noise_shape[i] == shape(x)[i],x中的元素是相互獨立的。如果shape(x)=[k,l,m,n](k表示數據的個數,l表示數據的行數,m表示數據的列,n表示通道),當noise_shape=[k,1,1,n],表示數據的個數與通道是相互獨立的,但是與數據的行和列是有關聯的,即要麼都為0,要麼都為輸入的1/keep_prob倍。


分享到:


相關文章: