我寫這篇很大的原因是因?yàn)楦杏X對各種Loss Functions掌握的不夠。經(jīng)我各種翻閱和調(diào)查99%的博客都只告訴你這些個(gè)Loss Function是什么,在什么模型下用,他們卻不告訴你為什么,怎么來的。(我不會(huì)告訴你我是因?yàn)楸话⒗锏拿嬖嚬賳柫艘欢袻oss Function問成了個(gè)撲街仔才寫這篇文章的orz)
希望對大家有所幫助!
0. 本篇大綱
Loss Function的定義
Regression與Classification對Loss Function的選擇
Regression中各種Loss Function的選擇
Classification中各種Loss Function的選擇
Credit
1. Loss Function定義
What it is?
- Loss Function(損失函數(shù))是用來計(jì)算模型h(x)的預(yù)測值和(訓(xùn)練集中的)真實(shí)值y的不一致程度。
Why important?
- 在機(jī)器學(xué)習(xí)的各種模型中Loss Function是一個(gè)有非凡意義的概念!通過訓(xùn)練使Loss Function的逐漸減小,模型h(x)和(訓(xùn)練集中)真實(shí)值y就越接近,模型的bias就越小,我們就能夠得到一個(gè)和訓(xùn)練集擬合程度越高的模型。(當(dāng)然擬合過頭overfit了,容易撲街= 。=)
2. Regression與Classification對Loss Function的選擇
Main Reasons(萬變不離其宗的理由): Loss Function(損失函數(shù))是用來計(jì)算模型h(x)的預(yù)測值和(訓(xùn)練集中的)真實(shí)值y的不一致程度。(重要的事情重復(fù)三遍X1)
1. Regression:
How to choose Loss for Regression?

Loss Function(損失函數(shù))是用來計(jì)算模型h(x)的預(yù)測值和(訓(xùn)練集中的)真實(shí)值y的不一致程度。(重要的事情重復(fù)三遍X2)
所以對于Regression來說,Loss Function是指每個(gè)真實(shí)值與其線性模型h(x)不一致程度之合。h(x)與真實(shí)值越接近,cost越小,h(x)與真實(shí)值越遠(yuǎn),cost越大。因此我們需要的cost function需要僅在=真實(shí)值的時(shí)候?yàn)?,越遠(yuǎn)離真實(shí)值越大(不論cost function是直的(MAE)還是彎的(MSE))。
通過使用這樣的Cost function和Loss Function,我們就可以很好的找出最能夠最好擬合一條符合真實(shí)值分布的線。

2. Classification:
How to choose Loss for Classification?


Loss Function(損失函數(shù))是用來計(jì)算模型h(x)的預(yù)測值和(訓(xùn)練集中的)真實(shí)值y的不一致程度。**(重要的事情重復(fù)三遍X3)
所以對于Classification而言,Loss Function是指每一個(gè)真實(shí)分類y與其模型對其分類h(x)的不一致程度之和。h(x)分對了類,cost小,h(x)分錯(cuò)了類,cost大。因?yàn)?strong>我們需要cost function需要在分對類盡可能接近0或者直接等于0(當(dāng)y=1的時(shí)候, h(x)>1的部分,當(dāng)y=0的時(shí)候,h(x)<0的部分),分的不對的時(shí)候盡可能大(不論cost function是彎的(Log Loss)還是直的(Hinge Loss))。
通過使用這樣的Cost function和Loss Function,我們就可以很好的找出最能夠最好擬合一條符合真實(shí)值分布的線。

3. Regression VS Classification
Why MAE or MSE can not be used in Classification?

(credit:What are the main reasons not to use MSE as a cost function for Logistic Regression?)
從上面這張圖(y=1時(shí)各種cost function,x軸為z=θx)中我們很顯然可以看出,MSE這個(gè)cost function僅在=真實(shí)值的時(shí)候?yàn)?,也就是僅僅在h(x)=1的時(shí)候cost=0。當(dāng)h(x)>1的時(shí)候,cost增加了,然而在classification的定義中,h(x)>1的時(shí)候仍然是分為1這個(gè)類中的。cost根本不需要增加,也不能增加!由此說明MAE和MSE這種Loss Function是不適用于Classification的問題的。
What if I used MSE in Classification?

(credit: 吳恩達(dá) 機(jī)器學(xué)習(xí)課程的某頁P(yáng)PT)
正如上圖,如果在Classification中使用MAE,它的Loss Function是非凹(convex)的,但在Classification中使用Log Regression,它的Loss Function是convex的。(具體證明可以用Loss Function的二階導(dǎo)恒大于等于0證明,大家可以上網(wǎng)搜一下)
What if I used Hinge Loss in Regression?

當(dāng)我們對Regression使用Hinge Loss:
如果全局僅僅只用y=1的這半邊Hinge Loss,那么這個(gè)模型對<1的點(diǎn)是0容忍,>1的點(diǎn)是全部容忍,那么最終當(dāng)Loss Function=0時(shí),就會(huì)導(dǎo)致所有的點(diǎn)都在同一邊。
如果用了y=1和y=0兩邊的Hinge Loss,那么對分類對且距離大于1的點(diǎn)是容忍的,對其他的不容忍,這就會(huì)導(dǎo)致迭代到最后所有點(diǎn)離那條線就會(huì)太遠(yuǎn),這條線就不能很好的擬合所有的點(diǎn),不是一個(gè)很好的Regression的線,而是變成一條分類的線了。

3.Loss Function in Regression
(未完待續(xù))
4. Loss Function in Classification
Classification中經(jīng)典的Loss Functions大致有5種:
Log Loss(Logist Regressionn)
Focal Loss
KL Divergence/Relative Entropy
Exponential Loss(AdaBoost)
Hinge Loss(SVM)
本文主要講Log Loss, Hinge Loss, Exponential Loss這3種Loss Function。
1. Log Loss
Log Loss要從Logistic Regression的基本的intuition講起。當(dāng)有一個(gè)二分類的問題時(shí),它的思想大致上是把一個(gè)線性回歸的結(jié)果映射到(0,1)這個(gè)區(qū)間范圍。當(dāng)這個(gè)線性回歸的結(jié)果映射在(0.5,1)分為一類,映射在(0,0.5)的時(shí)候分為另一類。

同圖上,我們對h(x)可以這樣認(rèn)為:h(x)代表的意義是在0和x給定的這個(gè)條件下,y取得1的概率,當(dāng)h(x)>0.5時(shí),分類為1,h(x)<0.5,分類為0。
由此我們可以通過條件概率的特有的屬性,通過求Maximum Likelihood Estimation來求得可以使得所見到的訓(xùn)練數(shù)據(jù)出現(xiàn)概率最大。然后log化,通過log函數(shù)特有的性質(zhì),使連乘變成連加。


這就是Log Loss來的思想,總結(jié)一下幾個(gè)點(diǎn):
1.基本intuition:將線性回歸映射到(0,1)區(qū)間
2.g/h(x)代表概率,>0.5分到y(tǒng)=1的類,<0.5分到y(tǒng)=0的類
3.通過條件概率特有屬性,通過MLE來求得訓(xùn)練數(shù)據(jù)出現(xiàn)概率最大
4.log化,連乘變連加,得出loss function,也得出每一個(gè)點(diǎn)的cost function
2. Hinge Loss
我在做國內(nèi)的面試的時(shí)候經(jīng)常被面試官考到讓我對Logistic Regression和SVM做比較。講道理來說,Logistic Regression和SVM的分類核心思想是完全不一樣的,這就導(dǎo)致了它們的Loss Function的不同。
SVM的核心思想是在幾何空間內(nèi)做一個(gè)劃分(h(x)),這個(gè)h(x)能使其兩邊的點(diǎn)盡可能有很大的區(qū)分度。所以Hinge Loss的每個(gè)點(diǎn)的cost function在分對且離線大于一定范圍(一般為1)的時(shí)候?yàn)?,其他時(shí)候?yàn)閏ost=z+1(y=1時(shí))或者cost=-z+1(y=-1時(shí))。

而它的loss function就是將這些cost function連加起來。

(SVM的Loss Function不完全是Hinge Loss,之后我會(huì)寫LR和SVM的比較中會(huì)寫到。)
總結(jié)一下:
1.基本intuition:每個(gè)點(diǎn)都要離分類器這條線盡可能遠(yuǎn)。
2.每個(gè)點(diǎn)cost function在分對類且離分類器為1時(shí),cost function等于0,其他時(shí)候?yàn)閥z+1。
3.連加起來得到總體的Loss Function。
3. Exponential Loss
exponential loss一般是用于Adaboost的情況的。(Adaboost我沒有很深入的了解,如果以后對其了解加深,可能會(huì)多寫一些?。?/p>

它的loss function是一堆cost function相加,每個(gè)cost function都是e的-zi次方。zi是分類器預(yù)測值加權(quán)和乘上分類器的標(biāo)簽。
總結(jié)一下:
1.每個(gè)點(diǎn)cost function是e的-zi次方,zi為分類器預(yù)測值加權(quán)和乘上分類器的標(biāo)簽。
2.連加起來得到的總和為Loss Function。
5. Credit
【深度學(xué)習(xí)】一文讀懂機(jī)器學(xué)習(xí)常用損失函數(shù)(Loss Function)
What are the main reasons not to use MSE as a cost function for Logistic Regression?
Loss Functions for Regression and Classification
5 Regression Loss Functions All Machine Learners Should Know