- **本文作者: **Liam Huang
- 本文鏈接: https://liam.page/2018/04/17/zero-centered-active-function/
- **版權聲明: **本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協議。轉載請注明出處!
今天在討論神經網絡中的激活函數時,陸同學提出 Sigmoid 函數的輸出不是以零為中心的(non-zero-centered),這會導致神經網絡收斂較慢。關于這一點,過去我只是將其記下,卻并未理解背后的原因。此篇談談背后的原因。
神經元
神經元
Sigmoid 與 tanh
此篇集中討論激活函數輸出是否以零為中心的問題,因而不對激活函數做過多的介紹,而只討論 Sigmoid 與 tanh 兩個激活函數。
Sigmoid 函數
tanh 函數
一些性質
Sigmoid 和 tanh 兩個函數非常相似,具有不少相同的性質。簡單羅列如下
優點:平滑
優點:易于求導
缺點:冪運算相對耗時
缺點:導數值小于 1,反向傳播易導致梯度消失(Gradient Vanishing)
對于 Sigmoid 函數來說,它的值域是 (0,1),因此又有如下特點
優點:可以作為概率,輔助模型解釋
缺點:輸出值不以零為中心,可能導致模型收斂速度慢
此篇重點講 Sigmoid 函數輸出值不以零為中心的這一缺點。
收斂速度
這里首先需要給收斂速度做一個詮釋。模型的最優解即是模型參數的最優解。通過逐輪迭代,模型參數會被更新到接近其最優解。這一過程中,迭代輪次多,則我們說模型收斂速度慢;反之,迭代輪次少,則我們說模型收斂速度快。
參數更新
以零為中心的影響
如圖,模型參數走綠色箭頭能夠最快收斂,但由于輸入值的符號總是為正,所以模型參數可能走類似紅色折線的箭頭。如此一來,使用 Sigmoid 函數作為激活函數的神經網絡,收斂速度就會慢上不少了。