當(dāng)一開(kāi)始進(jìn)入推薦系統(tǒng),讓我一直困惑就是怎么一會(huì)兒loss,一會(huì)兒metric,在網(wǎng)上了找了很久也只有一些損失函數(shù)、目標(biāo)函數(shù)的解釋?zhuān)斫獗举|(zhì),還得自己動(dòng)手,豐衣足食。
以下內(nèi)容來(lái)自對(duì)英文內(nèi)容的翻譯與調(diào)整,有條件有能力的大佬請(qǐng)直接轉(zhuǎn)原文原文鏈接
當(dāng)建立一個(gè)學(xué)習(xí)算法時(shí),我們希望最大化一個(gè)給定的評(píng)價(jià)指標(biāo)matric(比如說(shuō)準(zhǔn)確度),但算法在學(xué)習(xí)過(guò)程中會(huì)嘗試優(yōu)化一個(gè)不同的損失函數(shù)loss(比如說(shuō)MSE/Cross-entropy)。
那為什么不把評(píng)價(jià)指標(biāo)matric作為學(xué)習(xí)算法的損失函數(shù)loss呢?
一般來(lái)說(shuō),我認(rèn)為你應(yīng)該嘗試優(yōu)化一個(gè)與你最關(guān)心的評(píng)價(jià)指標(biāo)相對(duì)應(yīng)的損失函數(shù)。例如,在做分類(lèi)時(shí),我認(rèn)為你需要給我一個(gè)很好的理由,讓我不要優(yōu)化交叉熵。也就是說(shuō),交叉熵并不是一個(gè)非常直觀的指標(biāo),所以一旦你完成了訓(xùn)練,你可能還想知道你的分類(lèi)準(zhǔn)確率有多高,以了解你的模型是否真的能在現(xiàn)實(shí)世界中發(fā)揮作用(它可能是最好的模型,比其他人的交叉熵更好,但仍然沒(méi)有足夠的準(zhǔn)確性在現(xiàn)實(shí)世界中發(fā)揮作用)。
總之,在每個(gè)epoch訓(xùn)練完后,你都會(huì)有多個(gè)評(píng)估指標(biāo)。這樣作的主要原因是為了了解你的模型在做什么。這意味著你想要最大化指標(biāo)A,以便得到一個(gè)接近最大化指標(biāo)B的解決方案。
2. 通常情況下,MSE/交叉熵比精度更容易優(yōu)化,因?yàn)樗鼈儗?duì)模型參數(shù)是可微的,在某些情況下甚至是凸的,這使得它更容易。
在可微的條件下,或許你還想要梯度更容易計(jì)算(交叉熵v.s.dice-coefficient或者IoU)。在語(yǔ)義分割的情況下使用交叉熵而不是dice或者類(lèi)似的IoU指標(biāo),這是因?yàn)榻徊骒氐奶荻雀?。交叉熵相?duì)于對(duì)數(shù)的梯度類(lèi)似于
,其中
是softmax輸出,
是目標(biāo)。同時(shí),如果我們?cè)噲D把dice的系數(shù)寫(xiě)成可微分的形式
,那么產(chǎn)生的梯度相要難計(jì)算得多
。因此在數(shù)值計(jì)算中,想象一種情況(p和t都很?。?,梯度會(huì)膨脹到某個(gè)巨大的值,從而溢出。這樣會(huì)讓我們的訓(xùn)練變得更加不穩(wěn)定。