代價(jià)函數(shù)簡(jiǎn)介
??代價(jià)函數(shù)(Cost Function),通常也被稱為損失函數(shù)(Loss Function)。這類函數(shù)是機(jī)器學(xué)習(xí)乃至整個(gè)數(shù)據(jù)科學(xué)學(xué)科中最為重要的一類函數(shù)模型,它直觀的將數(shù)據(jù)的擬合程度呈現(xiàn)在我們面前。對(duì)于機(jī)器學(xué)習(xí)的目標(biāo),無非也就是最小化誤差,也就是讓代價(jià)函數(shù)最小化。訓(xùn)練模型的過程就是優(yōu)化代價(jià)函數(shù)的過程,代價(jià)函數(shù)對(duì)每個(gè)參數(shù)的偏導(dǎo)數(shù)就是梯度下降中提到的梯度,防止過擬合時(shí)添加的正則化項(xiàng)也是加在代價(jià)函數(shù)后面的。因此我覺得有必要花點(diǎn)時(shí)間進(jìn)行討論一番。
??我們先做一個(gè)代價(jià)函數(shù)的簡(jiǎn)單的定義,代價(jià)函數(shù):假定有樣本數(shù)據(jù),函數(shù)模型為
,參數(shù)為
。擬合曲線用
表示。代價(jià)函數(shù)是一個(gè)有點(diǎn)抽象的東西,理論上能反應(yīng)擬合函數(shù)
與真實(shí)值
差異的函數(shù)都可以用來作為我們的代價(jià)函數(shù)。通常代價(jià)函數(shù)寫成
,不過我們一般會(huì)進(jìn)行求均值,寫成
。代價(jià)函數(shù)是一個(gè)關(guān)于
的函數(shù),這點(diǎn)很好理解,因?yàn)槲覀冎?,?duì)于給定的算法,誤差期望應(yīng)該是一定的,但是擬合函數(shù)參數(shù)的變化卻會(huì)影響誤差。算法在尋找最優(yōu)參數(shù)的過程,我們記為:
幾種常見的代價(jià)函數(shù)
??平均絕對(duì)誤差(L1誤差函數(shù)): 平均絕對(duì)誤差(MAE)其實(shí)就是類似統(tǒng)計(jì)學(xué)中的標(biāo)準(zhǔn)差,它的具體公式如下:
??它的圖像:

??均方誤差函數(shù)(L2誤差函數(shù)): 均方誤差函數(shù)(MSE)也就是我們熟知的方差,它廣泛的運(yùn)用在一些線性問題上,下式中底的2,是為了方便求導(dǎo)約去,并無實(shí)際意義,它的公式如下:
??它的圖像:

??平滑平均絕對(duì)誤差(Huber損失): Huber損失相比于平方損失來說對(duì)于異常值不敏感,但它同樣保持了可微的特性。它基于絕對(duì)誤差但在誤差很小的時(shí)候變成了平方誤差。我們可以使用超參數(shù)
??它的圖像:

??對(duì)于Huber損失來說,
??Huber損失函數(shù)克服了MAE和MSE的缺點(diǎn),不僅可以保持損失函數(shù)具有連續(xù)的導(dǎo)數(shù),同時(shí)可以利用MSE梯度隨誤差減小的特性來得到更精確的最小值,也對(duì)異常值具有更好的魯棒性。而Huber損失函數(shù)的良好表現(xiàn)得益于精心訓(xùn)練的超參數(shù)
??Log-Cosh損失函數(shù): Log-Cosh損失函數(shù)是一種比L2更為平滑的損失函數(shù),利用雙曲余弦來計(jì)算預(yù)測(cè)誤差:
??它的圖像:

??它的優(yōu)點(diǎn)在于對(duì)于很小的誤差來說
??但是Log-cosh損失并不是完美無缺的,它還是會(huì)在很大誤差的情況下梯度和 hessian 變成了常數(shù)。
??交叉熵CrossEntropy代價(jià)函數(shù): 我們?cè)谥耙呀?jīng)極為詳細(xì)的講述過交叉熵的概念了,交叉熵通常用于分類問題上的代價(jià)函數(shù),尤其在邏輯回歸,神經(jīng)網(wǎng)絡(luò)中使用的更多。
一點(diǎn)比較:
??均方誤差(MSE)在誤差較大點(diǎn)時(shí)的損失遠(yuǎn)大于平均絕對(duì)誤差(MAE),它會(huì)給異常值賦予更大的權(quán)重,模型會(huì)全力減小異常值造成的誤差,從而使得模型的整體表現(xiàn)下降。
??所以當(dāng)訓(xùn)練數(shù)據(jù)中含有較多的異常值時(shí),平均絕對(duì)誤差(MAE)更為有效。當(dāng)我們對(duì)所有觀測(cè)值進(jìn)行處理時(shí),如果利用MSE進(jìn)行優(yōu)化則我們會(huì)得到所有觀測(cè)的均值,而使用MAE則能得到所有觀測(cè)的中值。與均值相比,中值對(duì)于異常值的魯棒性更好,這就意味著平均絕對(duì)誤差對(duì)于異常值有著比均方誤差更好的魯棒性。
??但MAE也存在一個(gè)問題,特別是對(duì)于神經(jīng)網(wǎng)絡(luò)來說,它的梯度在極值點(diǎn)處會(huì)有很大的躍變,及時(shí)很小的損失值也會(huì)長(zhǎng)生很大的誤差,這很不利于學(xué)習(xí)過程。為了解決這個(gè)問題,需要在解決極值點(diǎn)的過程中動(dòng)態(tài)減小學(xué)習(xí)率。MSE在極值點(diǎn)卻有著良好的特性,及時(shí)在固定學(xué)習(xí)率下也能收斂。MSE的梯度隨著損失函數(shù)的減小而減小,這一特性使得它在最后的訓(xùn)練過程中能得到更精確的結(jié)果。
??當(dāng)然還有很多的代價(jià)函數(shù),例如分位數(shù)損失等等,我們?cè)谶@里就不進(jìn)行一一展開講述了,感興趣的讀者可以自行了解。
??下一章,我們將仔細(xì)的講解如何通過梯度進(jìn)行最小化我們的代價(jià)函數(shù)。
Reference
5 Regression Loss Functions All Machine Learners Should Know
MachineLearning CostFunction
我的掘金:WarrenRyan
我的簡(jiǎn)書:WarrenRyan
歡迎關(guān)注我的博客獲得第一時(shí)間更新 https://blog.tity.online
我的Github:StevenEco