標籤:

比二次代價函數學習更快的Cross-entropy

前言

在神經網路中,使用交叉熵( Cross-entropy )作為代價函數能更好的促進訓練。在說明交叉熵之前,先來講講二次代價函數的不足。

二次代價函數的不足

神經網路中,經常使用 sigmoid 函數作為激活函數(本文中也使用這個函數)。

回顧二次代價函數為:

cost function

調參方式是反向傳播後採用梯度下降演算法( 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:神经网络 |