# Activation Function [ Python ] Activation Function,可以利用非線性方程式,解決非線性問題,若不使用Activation Function,類神經網路就會以線性的方式組合運算,因為隱藏層以及輸出層皆是將上層之結果輸入,並以線性組合計算,作為輸出,使得輸出與輸入只存在著線性關係,則類神經網路訓練出之模型便失去意義。 * 激勵函數需選擇可微分之函數,因為在誤差反向傳遞(Back Propagation)運算時,需要進行一次微分計算 * 在深度學習中,當隱藏層之層數過多時,激勵函數不可隨意選擇,因為會造成梯度消失(Vanishing Gradient)以及梯度爆炸(Exploding gradients)等問題 * 常見的激勵函數包含: Sigmoid、tanh以及ReLU 函數,而基於梯度消失、爆炸以及收斂性等問題,一般最常使用ReLU函數進行激發,而ReLU函數還有一些變形,如Leaky ReLU、Randon Leaky ReLU以及Maxout等。 ## Sigmoid Function * 值會介於0~1之間 * 便於求導數之平滑函數 * 在深度的神經網路裡,容易產生梯度消失的問題 ![](https://i.imgur.com/caTJZTH.png) <br> ## tan h (Hyperbolic Tangent) * 值會介於 -1 ~ 1 之間 * 在深度的神經網路裡,容易產生梯度消失的問題 * 相較於Sigmoid函數,可用性還是相差不小 ![](https://i.imgur.com/go8apHl.png) <br> ## ReLu (Rectified Linear Unit) * 若值為正數,則輸出該值大小,若值為負數,則輸出為0 * 微分不是 0,就是 1 * 為了解決深層神經網路梯度消失的問題,正數梯度保持為 1,這樣可以保證極大值仍然具有梯度可以修正,而且因為電腦計算上不需要處理微分,效率比 Sigmoid 函數快上許多 * ReLU是近年來最頻繁被使用的激勵函數,因其存在以下特點,包含:解決梯度爆炸問題、計算數度相當快、收斂速度快等特性 ![](https://i.imgur.com/kFj68pc.png) <br> ###### tags: `Python`