David Sheehan 做了一個激活函數可視化的工作,幫助大家快速了解和選擇激活函數
《Visualising Activation Functions in Neural Networks》
在本文中,作者對包括 Relu、Sigmoid 在內的 26 種激活函數做了可視化,并附上了神經網絡的相關屬性,為大家了解激活函數提供了很好的資源。作者推薦使用Chrome瀏覽器
在神經網絡中,給定輸入集合,激活函數決定神經元節點的輸出;非線性激活函數允許人工神經網絡逼近復雜的非線性關系。復雜的激活函數可能會產生一些梯度消失(Vanishing Gradient)或梯度爆炸(Exploding Gradient)的問題。
下面是 26 個激活函數的圖示及其一階導數,圖的右側是一些與神經網絡相關的屬性
Step函數
激活函數 Step 大多在理論上探討,基本無法用于實際。它模仿了生物神經元要么全有要么全無的屬性。由于其導數是 0(除了零點導數無定義以外),這意味著基于梯度的優化方法并不可行,所以它基本無法應用于神經網絡。
單調性(Montonic): 單調性使得在激活函數處的梯度方向不會經常改變,從而讓訓練更容易收斂
連續性(Continuous):個人認為作者想表達可微性,可微性保證了在優化中梯度的可計算性
非飽和性(saturation):飽和指的是在某些區間梯度接近于零(即梯度消失),使得參數無法繼續更新的問題。
在深度神經網絡中,前面層上的梯度是來自于后面層上梯度的乘乘積。當存在過多的層次時,就出現了內在本質上的不穩定場景,如梯度消失和梯度爆炸
梯度消失(Vanishing Gradient):某些區間梯度接近于零;前面的層比后面的層梯度變化更小,故變化更慢,從而引起了梯度消失問題
梯度爆炸(Exploding Gradient):??某些區間梯度接近于無窮大或者權重過大;前面層比后面層梯度變化更快,會引起梯度爆炸問題