卷積層的非線性部分
一、ReLU定義
ReLU:全稱 Rectified Linear Units)激活函數
定義
def relu(x):
return x if x >0 else 0
#Softplus為ReLU的平滑版
二、傳統sigmoid系激活函數
Sigmoid與人的神經反應很相似,在很多淺層模型上發揮巨大作用
傳統神經網絡中最常用的兩個激活函數,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被視為神經網絡的核心所在。
從數學上來看,非線性的Sigmoid函數對中央區的信號增益較大,對兩側區的信號增益小,在信號的特征空間映射上,有很好的效果。
從神經科學上來看,中央區酷似神經元的興奮態,兩側區酷似神經元的抑制態,因而在神經網絡學習方面,可以將重點特征推向中央區,將非重點特征推向兩側區。
無論是哪種解釋,看起來都比早期的線性激活函數(y=x),階躍激活函數(-1/1,0/1)高明了不少。
梯度消失問題
sigmoid導數值的范圍(0, 0.25)
tanh的導數值范圍(0, 1)
可以看出sigmoid的弱點:對於深度網絡,sigmoid在最好的情況下也會把傳遞的導數數值縮小至0.25倍,下層網絡得到的梯度值明顯小很多。這會導致模型訓練效果很差。
對於淺層網絡這種影響不明顯,但對於深度網絡,反向傳導逐漸變成了一個“漫長累積”的過程。
從訓練效果看,以不同激活函數的LeNet模型,訓練迭代數與Loss的關系——
sigmoid明顯弱一些,tanh與ReLU相近
ReLU的優點:沒有出現梯度消失問題
三、ReLU的線性性質
作為一個非線性函數,它還具備線性性質
1 0 0
[ 0 1 0 ] x 向量 = 結果
0 0 0
對線性部分的輸出,結果等效於左乘一個非0即1的對角陣(向量負數位置對應對角陣位置上為0),仍可以被看作是一個線性操作
這一性質會使模型的理論分析變得簡單
四、ReLU的不足
1:過於寬廣的接受域,在接受較大數據時出現不穩定
可以對輸入數據上界進行限制,比如ReLU6
2:負數方向
輸入數據的負數部分,ReLU會把它置為0,那么梯度也為0,訓練過程中負數部分不會更新
解決:一系列的改進函數,比如 Leaky ReLU