比二次代價函數學習更快的Cross-entropy
01-31
前言
在神經網路中,使用交叉熵( Cross-entropy
)作為代價函數能更好的促進訓練。在說明交叉熵之前,先來講講二次代價函數的不足。
二次代價函數的不足
神經網路中,經常使用 sigmoid
函數作為激活函數(本文中也使用這個函數)。
回顧二次代價函數為:
調參方式是反向傳播後採用梯度下降演算法( Gradient descent
) 進行參數的調整,為了說明方便,我們以單個神經元來說明,對於單個神經元來說,它的損失函數:
a = σ(z)
表示該神經元的輸出,y表示標準值。參數調整需要求損失函數的偏導:
參數沿著梯度方向調整參數大小,不足的地方在於,當初始的誤差越大,收斂得越緩慢。什麼意思呢? σ(z)
表示的是 sigmoid
函數的導數,在二維坐標直觀的表示斜率:
也就是說誤差大的情況下,其斜率小,參數更新前後變化不大,這就是導致訓練越慢的原因。
交叉熵代價函數
我們希望的情況是,訓練過程中,在誤差大的情況下,參數調整也要大,從而達到更快收斂的目的。
交叉熵代價函數為:
其中, a =
σ(z)
最終求導得到更新權重時的偏導:
就避免了 σ(z)
參與參數更新、影響更新效率的問題。偏導證明如下:
總結
- 交叉熵並不一定能提高最終的準確度;
- 使用 sigmoid 函數作為神經元的激活函數時,最好使用交叉熵代價函數來替代二次代價函數,以避免訓練過程太慢。
推薦閱讀:
※人工神經網路——跨學科應用的大殺器
※《A Decomposable Attention Model for Natural Language Inference》閱讀筆記
※BP神經網路優化方程式的推導
※Google黑科技系列 4:自動修正你的靈魂畫作autodraw.com
※可怕!斯坦福AI看臉即知性取向,國外媒體和網友都炸了
TAG:神经网络 |