天天看點

神經網絡的交叉熵損失函數

0-1損失函數

L(Y,f(X))={1,0Y != f(X)Y = f(X)

平方損失函數

L(Y,f(X))=(Y−f(X))2

絕對損失函數L(Y,f(X))=|(Y−f(X))|

對數損失函數L(Y,P(Y|X))=−logP(Y|X)

常見的損失函數包含以上幾個。

在神經網絡中樣本的平方損失函數一般會定義為:

Ed=12∑i(zi−yi)2,友善求導後約掉系數。

使用誤差逆傳播訓練神經網絡時會使用梯度下降法來更新每個神經網絡中的權重,

根據鍊式求導法可以得到權重更新公式,

∂Ed∂wji=∂Ed∂nodej∂nodej∂wji=∂Ed∂nodej∂∑iwjixji∂wji=∂Ed∂nodejxji

此時對于輸出層,權重更新公式為

∂Ed∂wji=∂Ed∂yj∂yj∂nodejxji

如果神經元使用sigmoid激活函數,即y=11+e−z

,函數圖如下,

神經網絡的交叉熵損失函數

則梯度下降法更新權重時,會涉及到sigmoid函數的導數,這個導數的形狀大緻如下:

神經網絡的交叉熵損失函數

可以看到導數兩邊的值基本都接近0,也就是說兩邊的斜率很平緩,兩邊的點在使用梯度下降時下降很緩慢,可能會影響訓練最終效果。

針對以上不足,有兩個方向來避免,一是從激活函數下手,一個是從損失函數下手。這裡我們不換激活函數,還是用sigmoid函數,于是引入了交叉熵損失函數。

L=∑i[zilnyi+(1−zi)ln(1−yi)]

這時再看權重更新公式,

∂L∂wji=∂L∂nodej∂nodej∂wji=∂L∂nodej∂∑iwjixji∂wji=∂L∂nodejxji

∂L∂wji=∂L∂yj∂yj∂nodejxji=xji(zj−yj)

可以看到梯度下降已經不與sigmoid的導數相關了,而是由誤差來影響,當誤差較大時則下降較快,讓梯度下降法更有效率,避免了訓練慢的問題。

以下是廣告和相關閱讀

========廣告時間========

<a href="http://blog.csdn.net/wangyangzhizhou/article/details/74080321">為什麼寫《Tomcat核心設計剖析》</a>

=========================

相關閱讀:

<a href="http://blog.csdn.net/wangyangzhizhou/article/details/72487394">機器學習之神經網絡</a>

歡迎關注:

神經網絡的交叉熵損失函數

繼續閱讀