1. 程式人生 > >深度學習基礎理論探索(二): cross-entropy損失函式的前世今生

深度學習基礎理論探索(二): cross-entropy損失函式的前世今生

前面我們講到,克服梯度消失有兩個方向,1.rule啟用函式。2.改進損失函式用cross_entropy

ok,首先我們先看為什麼代價損失函式可以用Cross_entropy.

以前使用的二次代價函式很好理解:

    

  即:計算值與真實值的殘差。

它有兩個特點:

1.損失函式永遠大於0.

2.計算值與真實值越接近,損失函式越小。兩者差距越大,損失函式越大。

我們現在假設這是損失函式的基本要求。

cross-entropy損失函式滿足這些要求嗎?

 

      首先,可以證明該函式是大於0

   其次,當y=0時(即真實值為0a=0(計算值為0)c = 0*ln0 + 1*ln1  等於

0(前項等於0,後項也等於0)

   y=1時,若a=0, c = ln0 +  0*ln1等於無窮大。

即:計算值與真實值差距越大,損失函式越大。反之亦然。

所以cross-entropy滿足我們對損失函式的定義。所以他是個合格的損失函式

這裡我們其實會發現 y=0,a=1這樣的極端情況出現時,損失函式無窮大。程式會出問題,我們可以對cross-entropy做一個修改:y*ln((a+0.05)/1.05))+(1-y)*ln((1.05-a)/1.05)

ok,下一個話題。為什麼cross-entroy可以抑制梯度消失。

根據上個話題我們知道了啟用函式為sigmoid、損失 函式為二次代價函式時,w、b的跟新速度與啟用函式的導數相關。

那麼損失函式換成cross-entropy會怎樣呢

再來一波公式:


由以上推導可得w、b對損失函式的偏導,即w、b的更新速度只與(a-y)有關,也就是隻與預測值與真實值的差距有關。不同於二次代價函式的更新速度和啟用函式的導數成正比(上篇提到)。

這樣就會有一個比較好的性質:

計算值與實際值差距越大,w、b的更新速度越快

具體推導過程,可參見

http://neuralnetworksanddeeplearning.com/chap3.html