原文連結:https://zhuanlan.zhihu.com/p/508741909?utm_id=0、https://zhuanlan.zhihu.com/p/476373735?utm_id=0、https://blog.csdn.net/purple_love/article/details/134620930
https://www.zhihu.com/question/60650016/answer/2441796198?utm_id=0
卷積神經網路中的卷積和池化等操作得到的輸出是線性的,啟用函式可以把非線性因素引入到深層網路中,讓深層網路更有意義。能夠更好的對映特徵去除資料中的冗餘。沒有啟用函式的每層都相當於矩陣相乘。就算你疊加了若干層之後,無非還是個矩陣相乘罷了。如果不使用啟用函式,則輸出訊號僅是一個簡單的線性函式。線性函式一個一級多項式,線性方程的複雜度有限,從資料中學習複雜函式對映的能力很小。沒有啟用函式,神經網路將無法學習和模擬其他複雜型別的資料,例如影像、影片、音訊、語音等。3.啟用函式可以把當前特徵空間透過一定的線性對映轉換到另一個空間,讓資料能夠更好的被分類。
sigmoid/tanh比較常見於全連線層,後者relu常見於卷積層。
sigmoid 函式公式如上式所示,函式影像如圖 2.16 所示。該函式能夠把變數對映到[0,1]區間,所以一般是用來處理二分類的問題。
Sigmoid 公式如下:
2、Tanh 函式改善了 Sigmoid 函式變化過於平緩的問題,是將變數對映到[-1,1]區間,Tanh 計算公式如下:
3、ReLU 函式的優點是收斂速度非常快。當輸入值為負數時,梯度也變為 0,容易導致神經元壞死,所以需要用較小的學習率對網路進行訓練。
因為 sigmoid 和 tanh 函式在反向傳播中常常因為值過小而造成梯度消失,ReLU 函式能夠避免這個問題,ReLU 是“修正線性單元”, ReLU 函式的表示式如下式所示:ReLU 啟用函式公式如下:
函式如下圖所示,從圖中可以看出 ReLU 函式不是連續的,屬於分段函式。當 x <0時, f(x)值為 0,當 x >0 時, f(x)等於 x ,因此不會出現梯度消失的情況。與 sigmoid、tanh 啟用函式相比,ReLU 函式當輸入小於 0 時梯度等於 0,這時神經元不會被啟用,所以在某一段時間裡只有部分神經元會被啟用,在反向傳播過程中收斂速度會更快。
4、Leaky ReLU 是在 ReLU 的基礎上改進的,雖然可以避免神經元壞死,但是增加了計算量和引數量。
因為 ReLU 函式當輸入在 x 軸的負半軸時,會導致部分神經元失活。針對這個問題,研究人員又提出了改進函式—Leaky ReLU 啟用函式。該函式的數學表示式如下式所示:
Leaky ReLU 和 ReLU 函式相比,主要的變化是在 x 的負半軸值不再為 0,而是有一定斜率的直線,a 值一般設為 0.01,值不是固定的,是人為設定的超引數。函式的影像如下圖所示。