MSE和CE是機(jī)器學(xué)習(xí)中常見的兩種損失函數(shù),在訓(xùn)練神經(jīng)網(wǎng)絡(luò)中锌介,也經(jīng)常用到,但是如何深刻地理解二者的異同笤休,卻不是容易輕松搞定的齿椅。本文從模擬面試的角度嘗試對這一問題作出解讀。
精靈是一名研二的學(xué)生玻侥,土木專業(yè)决摧,本科數(shù)學(xué)專業(yè),從讀研開始凑兰,精靈就已經(jīng)感覺到自己所學(xué)專業(yè)就業(yè)行情慘淡掌桩,但是人工智能卻如日中天,各大廠針對應(yīng)屆生開出的薪酬也是讓人咂舌姑食。憑著本科扎實(shí)的數(shù)學(xué)功底波岛,精靈開始了人工智能修行之路,無數(shù)的挑燈夜戰(zhàn)音半,寫代碼则拷、調(diào)bug、推公式曹鸠,什么python隔躲,什么模型,什么tensorflow物延,統(tǒng)統(tǒng)拿下宣旱!
眼瞅著要找實(shí)習(xí)了,精靈信心滿滿地將簡歷投到了某大廠叛薯,一天浑吟,電話突然響起:“喂,是精靈嗎耗溜?我是某某廠的面試官组力,現(xiàn)在方便進(jìn)行電話面試嗎?”正在宿舍吃著泡面抖拴,盯著屏幕上的epoch不斷增長的精靈火速擦了擦嘴燎字,關(guān)門關(guān)窗腥椒,無比激動地開始了自己的電面之旅。
面試官先問了幾個簡單問題候衍,精靈自然輕松答出來了笼蛛。終于面試官問到了MSE和CE的區(qū)別。
面試官:MSE和CE你熟悉嗎蛉鹿?
精靈:熟悉滨砍,MSE就是mean square error,CE就是cross entropy妖异。
面試官:沒錯惋戏,是這樣的,訓(xùn)練神經(jīng)網(wǎng)絡(luò)時他膳,你經(jīng)常用哪一個响逢?
精靈:如果是回歸問題,用MSE棕孙,如果是分類問題龄句,一般用CE。(這是一個小坑散罕,先要區(qū)分問題是分類還是回歸,面試官故意模糊這一點(diǎn)傀蓉,就是考察精靈是否清楚這樣的細(xì)節(jié))
面試官:為什么呢欧漱?
精靈:因為MSE容易發(fā)生梯度消失問題,而CE則不會葬燎。
面試官:為什么呢误甚?
精靈:以分類問題為例,假設(shè)我們的類別數(shù)量是T谱净,最后一層使用softmax窑邦。對一條樣本(x,c)而言,其label為c壕探。在神經(jīng)網(wǎng)絡(luò)softmax之前那一層冈钦,共有T個神經(jīng)元,讓我們將目光投向第c個神經(jīng)元李请,如下圖所示:
不管是用MSE還是CE瞧筛,我們都是希望y_c越大越好,其他與其并列的神經(jīng)元越小輸出值越好导盅。
如果是MSE较幌,這條樣本的誤差是:
我們來分析這個誤差對于參數(shù)w的梯度。上式中一共有T項白翻,我們不妨先取出其中一項乍炉,比如第一項來分析:
這里,我省略了其中的推導(dǎo)過程,相信面試官您也能理解岛琼。觀察這個式子底循,我們發(fā)現(xiàn)了一個尷尬的問題,我們是想調(diào)整參數(shù)w從而增大這一項衷恭,使它盡可能接近于1:
可當(dāng)這一項接近于0時此叠,上面的梯度也將接近于0,因為該值就是梯度的一個因子随珠。這就是gradient vannishing灭袁。
如果是用CE,則不會出現(xiàn)這個問題窗看,用CE茸歧,其損失為:
同樣我們求該損失對w的梯度:
此時,我們發(fā)現(xiàn)显沈,該梯度就不會發(fā)生gradient vanishing了软瞎。因為消去了導(dǎo)致梯度錯誤消失的因子。
可見拉讯,因為我們最后做了softmax涤浇,所以用CE會比MSE好。
面試官:不錯魔慷!分析的很到位只锭!就你了,明天來公司上班吧院尔!
精靈:好嘞蜻展!
Note:寫完后才發(fā)現(xiàn)文章中有一重大bug,不知道你看出來了沒有邀摆?如果你覺得文章不錯纵顾,點(diǎn)贊和轉(zhuǎn)發(fā)就是最大的支持!