深度學習常用激活函數之— Sigmoid & ReLU & Softmax

1. 激活函數

  • Rectified Linear Unit(ReLU) - 用於隱層神經元輸出
  • Sigmoid - 用於隱層神經元輸出
  • Softmax - 用於多分類神經網絡輸出
  • Linear - 用於迴歸神經網絡輸出(或二分類問題)
    ReLU函數計算如下:
                           
    Sigmoid函數計算如下:
                           
    Softmax函數計算如下:
                           
    Softmax激活函數只用於多於一個輸出的神經元,它保證所以的輸出神經元之和爲1.0,所以一般輸出的是小於1的概率值,可以很直觀地比較各輸出值。


2. 爲什麼選擇ReLU?

    深度學習中,我們一般使用ReLU作爲中間隱層神經元的激活函數,AlexNet中提出用ReLU來替代傳統的激活函數是深度學習的一大進步。我們知道,sigmoid函數的圖像如下:

    而一般我們優化參數時會用到誤差反向傳播算法,即要對激活函數求導,得到sigmoid函數的瞬時變化率,其導數表達式爲:
                                 
    對應的圖形如下:

    由圖可知,導數從0開始很快就又趨近於0了,易造成“梯度消失”現象,而ReLU的導數就不存在這樣的問題,它的導數表達式如下:
                                  
    Relu函數的形狀如下(藍色):

    對比sigmoid類函數主要變化是:1)單側抑制 2)相對寬闊的興奮邊界 3)稀疏激活性。這與人的神經皮層的工作原理接近。

3. 爲什麼需要偏移常量?

    通常,要將輸入的參數通過神經元后映射到一個新的空間中,我們需要對其進行加權和偏移處理後再激活,而不僅僅是上面討論激活函數那樣,僅對輸入本身進行激活操作。比如sigmoid激活神經網絡的表達式如下:
                                 
    x是輸入量,w是權重,b是偏移量(bias)。這裏,之所以會討論sigmoid函數是因爲它能夠很好地說明偏移量的作用。
    權重w使得sigmoid函數可以調整其傾斜程度,下面這幅圖是當權重變化時,sigmoid函數圖形的變化情況:

    上面的曲線是由下面這幾組參數產生的:
                   
    我們沒有使用偏移量b(b=0),從圖中可以看出,無論權重如何變化,曲線都要經過(0,0.5)點,但實際情況下,我們可能需要在x接近0時,函數結果爲其他值。下面我們改變偏移量b,它不會改變曲線大體形狀,但是改變了數值結果:

    上面幾個sigmoid曲線對應的參數組爲:
                         
    這裏,我們規定權重爲1,而偏移量是變化的,可以看出它們向左或者向右移動了,但又在左下和右上部位趨於一致。
    當我們改變權重w和偏移量b時,可以爲神經元構造多種輸出可能性,這還僅僅是一個神經元,在神經網絡中,千千萬萬個神經元結合就能產生複雜的輸出模式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章