人工智慧-如何選擇激勵函數

       在類神經網路中使用激勵函數,主要是利用非線性方程式,解決非線性問題,若不使用激勵函數,類神經網路即是以線性的方式組合運算,因為隱藏層以及輸出層皆是將上層之結果輸入,並以線性組合計算,作為這一層的輸出,使得輸出與輸入只存在著線性關係,而現實中,所有問題皆屬於非線性問題,因此,若無使用非線性之激勵函數,則類神經網路訓練出之模型便失去意義。

1.激勵函數需選擇可微分之函數,因為在誤差反向傳遞(Back Propagation)運算時,需要進行一次微分計算。

2.在深度學習中,當隱藏層之層數過多時,激勵函數不可隨意選擇,因為會造成梯度消失(Vanishing Gradient)以及梯度爆炸(Exploding gradients)等問題。

激勵函數類型:

常見的激勵函數如下圖所示,包含: Sigmoid、tan h以及ReLU 函數,而基於梯度消失、爆炸以及收斂性等問題,一般最常使用ReLU函數進行激發,而ReLU函數還有一些變形,如Leaky ReLU、Randon Leaky ReLU以及Maxout等。

  1. Sigmoid函數介紹:

Sigmoid函數是深度學習領域開始時使用頻率最高的activation function,它是便於求導數之平滑函數,其導數如上圖所示,然而Sigmoid存在著三大缺點:

  1. 容易出現梯度消失gradient vanishing (上面有介紹)
  2. 函數輸出並不是zero-centered :

Sigmoid函數中,當後面神經元之輸入皆為正數時,對權重值求梯度時,梯度數值恆為正,因此在誤差反向傳遞的過程中,權重都正方向更新或往負方向更新,導致收斂曲線不平滑,形成一種綑綁現象,也影響模型的收斂速度。

  1. 指數運算較為耗時:

相較於前兩項,運算時間較為容易克服,但與ReLU函數相比,運算效能還是相差甚遠。
       
                                                                  圖1 Sigmoid 


  
                                                                  圖2 Sigmoid導數

  1. tan h函數介紹:

    tan h讀作Hyperbolic Tangent,如上圖所示,雖然此函數順利解決Sigmoid函數中zero-centered的輸出問題,但是梯度消失問題以及需要指數運算的問題依然存在,但相較於Sigmoid函數,可用性還是相差不小。
                                                                                                                     
                                                                    圖3 tan h                                                                                                                                                      圖4 tah h 導數

  1. ReLU函數介紹:

        ReLU函數圖形如上圖所示,若值為正數,則輸出該值大小,若值為負數,則輸出為0,ReLU函數並不是全區間皆可微分,但是不可微分的部分可以使用Sub-gradient進行取代,ReLU是近年來最頻繁被使用的激勵函數,因其存在以下特點,包含:解決梯度爆炸問題、計算數度相當快、收斂速度快等特性。


                                                                                                                    
                                                                    圖5 ReLU                                                                                                                                                     圖6 ReLU導數

    建議使用ReLU函數,但是要注意初始化和learning rate的設置,避免造成Dead ReLU問題發生,也可以嘗試使用Leaky ReLU或ELU函數進行測試,此外,不建議使用tanh以及sigmoid函數。



★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論