一.前言
在做神經網絡的訓練學習過程中,一開始,經常是喜歡用二次代價函數來做損失函數,因為比較通俗易懂,后面在大部分的項目實踐中卻很少用到二次代價函數作為損失函數,而是用交叉熵作為損失函數。為什么?一直在思考這個問題,這兩者有什么區別,那個更好?下面通過數學的角度來解釋下。
思考:
1.我們希望我們損失函數能夠做到,當我們預測的值跟目標值越遠時,在修改參數時候,減去一個更大的值,做到更加快速的下降。
2.哪個函數更不容易陷入局部最優解
二.兩種代價函數的表達式
二次代價損失函數:


交叉熵損失函數:


針對二分類來說,其中:


ai第Xi個樣本經過前向傳播之后到達最后一個節點的值
三.收斂速度比較
兩個函數反向傳播梯度比較
1.二次代價函數
為了方便只取一個樣本,那么損失為:


那么w,b的梯度為:



2.交叉熵
為了方便只取一個樣本,損失為:


計算w,b的梯度:



分析和結論
由此可看出,在做后向傳播時
1.對於square mean在更新w,b時候,w,b的梯度跟激活函數的梯度成正比,激活函數梯度越大,w,b調整就越快,訓練收斂就越快,但是Simoid函數在值非常高時候,梯度是很小的,比較平緩。
2.對於cross entropy在更新w,b時候,w,b的梯度跟激活函數的梯度沒有關系了,bz已經表抵消掉了,其中bz-y表示的是預測值跟實際值差距,如果差距越大,那么w,b調整就越快,收斂就越快。
四.兩個損失函數的函數圖像
square mean:


交叉熵:


(這兩個圖是從吳恩達課程中截取出來的)可以看出,二次代價函數存在很多局部最小點,而交叉熵就不會。
附錄:
simoid函數的導數:


參考: