天天看點

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

符号:

 C : 代價函數

 w:weight

 b:bias

η:學習速率

在使用平方差作代價函數時:

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

 其中a是預測結果    

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

, 

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

  即 

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

其用鍊式法則來求權重和偏置的偏導數就有(這裡求導過程我就不寫了,畢竟從 "宏觀" 上來了解一個問題我覺得會更重要。如果想去了解完整的過程可以去參考其他資料,如這本書,有中文版的,可以在網上找到):

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

sigmoid函數圖像如下:

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

而梯度下降更新規則為:

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

由 sigmoid 函數的圖像我們可以知道,當 z 很小 ( 遠小于0 ) 或者 z 很大 ( 遠大于0 ) 時,σ′(z) 趨于 0,是以代價函數對于 w 和 b 的偏導數就會很小。是以 w 和 b 就會産生的變化很小,故,學習緩慢。

而使用交叉熵作代價函數時:

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

其用鍊式法則來求權重和偏置的偏導數就有:

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好
簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

式中沒有 σ′(z) ,其實σ′(z) 在鍊式求導時被約去了,是以不會出現學習緩慢的問題 (除非在最後結果收斂的時候) 。它告訴我們權重學習的速度受到 σ(z) − y,也就是輸出中的誤差的控制。更大的誤差,會有更快的學習速度。這是我們直覺上期待的結果。

注:使用平方差會出現這樣的情況:在結果未收斂時就有一段 Epoch 學習緩慢,Cost 下降緩慢

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

        而對應使用交叉熵:不會出現上述情況

簡述為什麼輸出層在使用sigmoid做激勵函數時, 代價函數用交叉熵比平方差更好

擴充一下:其實還有一種組合方式也可以防止我們遇到學習緩慢的問題: 

                                                             具有對數似然代價的柔性最大值輸出層

具有對數似然代價的柔性最大值輸出層和一個具有交叉熵代價的 S 型輸出層效果差不多,有興趣的朋友可以自己去了解一下,這裡就不闡述了。

完!

繼續閱讀