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

,其中

是softmax輸出,

是目標(biāo)。同時,如果我們試圖把dice的系數(shù)寫成可微分的形式

,那么產(chǎn)生的梯度相要難計算得多

。因此在數(shù)值計算中,想象一種情況(p和t都很?。?,梯度會膨脹到某個巨大的值,從而溢出。這樣會讓我們的訓(xùn)練變得更加不穩(wěn)定。