在類神經網路中使用激勵函數,主要是利用非線性方程式,解決非線性問題,若不使用激勵函數,類神經網路即是以線性的方式組合運算,因為隱藏層以及輸出層皆是將上層之結果輸入,並以線性組合計算,作為這一層的輸出,使得輸出與輸入只存在著線性關係,而現實中,所有問題皆屬於非線性問題,因此,若無使用非線性之激勵函數,則類神經網路訓練出之模型便失去意義。
1.激勵函數需選擇可微分之函數,因為在誤差反向傳遞(Back Propagation)運算時,需要進行一次微分計算。
2.在深度學習中,當隱藏層之層數過多時,激勵函數不可隨意選擇,因為會造成梯度消失(Vanishing Gradient)以及梯度爆炸(Exploding gradients)等問題。
激勵函數類型:
常見的激勵函數如下圖所示,包含: Sigmoid、tan h以及ReLU 函數,而基於梯度消失、爆炸以及收斂性等問題,一般最常使用ReLU函數進行激發,而ReLU函數還有一些變形,如Leaky ReLU、Randon Leaky ReLU以及Maxout等。
- Sigmoid函數介紹:
Sigmoid函數是深度學習領域開始時使用頻率最高的activation function,它是便於求導數之平滑函數,其導數如上圖所示,然而Sigmoid存在著三大缺點:
- 容易出現梯度消失gradient vanishing (上面有介紹)
- 函數輸出並不是zero-centered :
Sigmoid函數中,當後面神經元之輸入皆為正數時,對權重值求梯度時,梯度數值恆為正,因此在誤差反向傳遞的過程中,權重都正方向更新或往負方向更新,導致收斂曲線不平滑,形成一種綑綁現象,也影響模型的收斂速度。
- 指數運算較為耗時:
相較於前兩項,運算時間較為容易克服,但與ReLU函數相比,運算效能還是相差甚遠。
圖1 Sigmoid
圖2 Sigmoid導數
- tan h函數介紹:
tan h讀作Hyperbolic Tangent,如上圖所示,雖然此函數順利解決Sigmoid函數中zero-centered的輸出問題,但是梯度消失問題以及需要指數運算的問題依然存在,但相較於Sigmoid函數,可用性還是相差不小。
圖3 tan h 圖4 tah h 導數
- ReLU函數介紹:
ReLU函數圖形如上圖所示,若值為正數,則輸出該值大小,若值為負數,則輸出為0,ReLU函數並不是全區間皆可微分,但是不可微分的部分可以使用Sub-gradient進行取代,ReLU是近年來最頻繁被使用的激勵函數,因其存在以下特點,包含:解決梯度爆炸問題、計算數度相當快、收斂速度快等特性。
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2350/tinymce/___5.png)
![](https://edit.wpgdadawant.com/uploads/news_file/blog/2020/2350/tinymce/___6.png)
圖5 ReLU 圖6 ReLU導數
建議使用ReLU函數,但是要注意初始化和learning rate的設置,避免造成Dead ReLU問題發生,也可以嘗試使用Leaky ReLU或ELU函數進行測試,此外,不建議使用tanh以及sigmoid函數。
評論