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時,可以爲神經元構造多種輸出可能性,這還僅僅是一個神經元,在神經網絡中,千千萬萬個神經元結合就能產生複雜的輸出模式。