每日一問04
Question:激活函數ReLU和Sigmoid那個效果更好?
文章目錄
- 每日一問04
-
- Question:激活函數ReLU和Sigmoid那個效果更好?
-
- Sigmoid
- ReLU
- 對比
-
- Sigmoid不是零中心的
- Sigmoid的梯度消失問題
- ReLU的稀疏性
首先我們先了解ReLU和Sigmoid函數具體是什麼樣的
Sigmoid
Sigmoid函數對應的公式為:
Sigmoid函數對應的圖像為:
ReLU
ReLU對應的圖像為:
對比
Sigmoid不是零中心的
為什麼說Sigmoid不是零中心的呢,我們可以通過對Sigmoid函數進行求導可以分析,
是以sigmoid函數的導數為
而我們通過Sigmoid函數圖像可以看到,在整個坐标軸上Sigmoid時恒大于零且小于1的,是以sigmoid函數的導數是恒大與零的。
既然sigmoid函數的導數是恒大與零的這就意味着在進行梯度下降進行w參數更新的時候w的更新值隻與神經元的輸入有關,當輸入為正時,w向x正向更新,當輸入為負時w向y軸負方向更新,這就導緻梯度下降級重更新時呈“Z”字型下降,進而導緻權重的優化效率。
Sigmoid的梯度消失問題
Sigmoid對應的導函數圖像如圖
由圖可以看到Sigmoid的導數隻有在0附近時梯度較大具有很好的激活性,而在正負飽和區,尤其是在小于-5和大于5的區域,梯度幾乎為0,而這個梯度将會與整個損失函數關于該神經元輸出的梯度相乘,那麼相乘的結果也會接近零,這會導緻梯度消失。
ReLU的稀疏性
ReLU激活函數求導不涉及浮點運算,是以速度更快。
由ReLU圖像可以看到,在x正半軸的梯度始終為1;在x負半軸梯度始終為0;z等于零時的梯度可以當成1也可以當成0,實際應用中并不影響。
是以對于隐藏層,選擇ReLU作為激活函數,能夠保證z大于零時梯度始終為1,進而提高神經網絡梯度下降算法運算速度。而當輸入z小于零時,ReLU存在梯度為0的特點,一旦神經元的激活值進入負半區,那麼該激活值就不會産生梯度/不會被訓練,雖然減緩了學習速率,但也造成了網絡的稀疏性——稀疏激活,這有助于減少參數的互相依賴,緩解過拟合問題的發生。