1. 程式人生 > >######好好好######MSE與CE的區別?數學推導 本質理解

######好好好######MSE與CE的區別?數學推導 本質理解

 

面試官先問了幾個簡單問題,精靈自然輕鬆答出來了。終於面試官問到了MSE和CE的區別。

面試官:MSE和CE你熟悉嗎?

精靈:熟悉,MSE就是mean square error,CE就是cross entropy。

面試官:沒錯,是這樣的,訓練神經網路時,你經常用哪一個?

精靈:如果是迴歸問題,用MSE,如果是分類問題,一般用CE。(這是一個小坑,先要區分問題是分類還是迴歸,面試官故意模糊這一點,就是考察精靈是否清楚這樣的細節)

面試官:為什麼呢?

精靈:因為MSE容易發生梯度消失問題,而CE則不會。

面試官:為什麼呢?

精靈:以分類問題為例,假設我們的類別數量是T,最後一層使用softmax。對一條樣本(x,c)而言,其label為c。在神經網路softmax之前那一層,共有T個神經元,讓我們將目光投向第c個神經元,如下圖所示:

 

不管是用MSE還是CE,我們都是希望y_c越大越好,其他與其並列的神經元越小輸出值越好。

如果是MSE,這條樣本的誤差是:

 

我們來分析這個誤差對於引數w的梯度。上式中一共有T項,我們不妨先取出其中一項,比如第一項來分析:

 

這裡,我省略了其中的推導過程,相信面試官您也能理解。觀察這個式子,我們發現了一個尷尬的問題,我們是想調整引數w從而增大這一項,使它儘可能接近於1:

 

可當這一項接近於0時,上面的梯度也將接近於0,因為該值就是梯度的一個因子。這就是gradient vannishing。

如果是用CE,則不會出現這個問題,用CE,其損失為:

 

同樣我們求該損失對w的梯度:

 

此時,我們發現,該梯度就不會發生gradient vanishing了。因為消去了導致梯度錯誤消失的因子。

可見,因為我們最後做了softmax,所以用CE會比MSE好。

面試官:不錯!分析的很到位!就你了,明天來公司上班吧!

精靈:好嘞!



作者:milter
連結:https://www.jianshu.com/p/5d13bcd9d990
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。