機(jī)器學(xué)習(xí)-損失函數(shù)

0,綜述

損失函數(shù)用于評價(jià)模型好壞。一個統(tǒng)計(jì)學(xué)習(xí)方法基本上由三個部分組成:
模型+策略+算法
1,模型,y=f(x),即輸入樣本特征,可以返回樣本值或概率值的函數(shù)
2,策略,有了模型,如何確定模型中的參數(shù)呢?如何根據(jù)訓(xùn)練數(shù)據(jù)擬合一個不錯的模型呢?這就是一個訓(xùn)練策略的問題?;旧暇褪牵簻p小模型誤差(損失)或增大模型收益(如最大似然),這兩種方式是可以互相轉(zhuǎn)化的。通常我們會采取減小模型誤差的方式。那么,就需要選取一個函數(shù)來評價(jià)模型的損失(誤差)即損失函數(shù)。不同的損失函數(shù)適用不同的任務(wù)。
3,算法,有了損失函數(shù)還不夠,我們的目的是利用數(shù)據(jù)降低損失函數(shù)。這里就會有一些優(yōu)化算法適用于降低損害函數(shù)。這是一個優(yōu)化問題。如果損失函數(shù)簡單,可以直接計(jì)算解析解,那很容易就能求得最優(yōu)參數(shù)從而確定模型。但往往在多維數(shù)據(jù)下,難以甚至無法計(jì)算解析解,此時(shí),就需要一些優(yōu)化算法來逐步逼近最優(yōu)解。例如梯度下降法,牛頓法,以及一些優(yōu)化轉(zhuǎn)換方法例如拉格朗日對偶性。

1,0-1損失函數(shù)

L=\begin{cases} 0, \text{ if }y=f(x) \\ 1, \text{ if }y\ne f(x) \end{cases}
此損失函數(shù)形式簡單,但是
1,不可導(dǎo)不易優(yōu)化。
2,一刀切,沒有體現(xiàn)f(x)接近和遠(yuǎn)離y時(shí)損失的差異
所以使用有局限性。適用于計(jì)數(shù)類型的模型,例如k近鄰。

2,合頁損失函數(shù)

一般模型為
y=sign(wx+b)
合頁損失,重要的組成部分稱為函數(shù)間隔y_i(wx_i+b),分對則大于0,分錯小于0

2.1 感知機(jī)損失函數(shù)

L=\sum[-y_i(wx_i+b)]_{+}

2.2 SVM損失函數(shù)

L=\sum[-y_i(wx_i+b)+1]_{+}+\lambda|w|^2

2.3 討論

方括號+的意思是,括號內(nèi)的值如果小于0,則值等于0,括號內(nèi)值大于0則保持原值。
兩者經(jīng)驗(yàn)損失部分十分相似,只不過相差1,表示SVM的經(jīng)驗(yàn)損失比感知機(jī)更嚴(yán)格(即使分對了,但y_i(wx_i+b)<1,也會帶來損失)
我認(rèn)為兩者的損失函數(shù)(經(jīng)驗(yàn)損失)都是合頁損失函數(shù)(以函數(shù)間隔為x軸),只不過SVM的右偏了一格。而SVM真正比感知機(jī)優(yōu)越的地方在于其L2正則,當(dāng)然,可以引入核函數(shù)則是其更重要的性質(zhì)與優(yōu)點(diǎn)了。
另外,SVM的這個損失函數(shù)等價(jià)于他的最優(yōu)化問題。把帶約束的最優(yōu)化問題轉(zhuǎn)換為不帶約束的最優(yōu)化問題,在數(shù)學(xué)上的轉(zhuǎn)換與證明也是十分巧妙的。

3,以熵或基尼指數(shù)度量的損失函數(shù)

決策樹的損失函數(shù)
決策樹的損失函數(shù)通常用于樹的剪枝。
C_{\alpha}(T)=C(T)+\alpha|T|
C(T)=\sum_{t=1}^{|T|}N_tH_t(T)
H_t(T)表示t葉節(jié)點(diǎn)上的熵或基尼指數(shù)。
通過計(jì)算剪枝前后的損失函數(shù)大小來判斷是否剪枝。

4,交叉熵?fù)p失函數(shù)(Cross Entropy Loss)

4.1 K-L散度(Kullback–Leibler divergence)

又稱相對熵(Relative Entropy)
舉個例子:

假設(shè)我們獲取了某一地區(qū)人口年齡的樣本數(shù)據(jù)D
D=[(0,18),(1,16),...,(30,22),...(89,1),...(98,0.5)]
代表了從0歲到98歲的人口數(shù)量,單位萬人。
此時(shí),我們想用一個分布來擬合這批數(shù)據(jù),以預(yù)測本地區(qū)總體年齡分布。
A想了一個0-98的均勻分布M_a
B想了一個均值45方差30的正態(tài)分布M_b
雖然這兩個擬合看著都很不靠譜,但是這兩個分布哪個更好一點(diǎn)呢?

K-L散度就可以解決這個問題

所謂擬合一個分布,其實(shí)就是得到一系列離散或連續(xù)的概率值Q(x_i)
通過觀測數(shù)據(jù)/訓(xùn)練數(shù)據(jù)我們本身也可以得到其分布P(x_i)
K-L散度定義如下:
\begin{alignedat}{2} D_{KL}(P||Q)&=\sum p(x_i)(logp(x_i)-logq(x_i))\\\\ &=E[logp(x_i)-logq(x_i)]\\\\ &=\sum p(x_i)log\frac{p(x_i)}{q(x_i)} \end{alignedat}
顯然,K-L散度,是指兩個分布在同一值下對數(shù)概率之差的期望
P,Q兩分布越接近,KL散度越小
當(dāng)兩分布相等時(shí)(所有對應(yīng)概率相等),KL散度=0
另外需注意,KL散度不對稱即:
D_{KL}(P||Q) \neq D_{KL}(Q||P)

4.2 交叉熵(Cross Entropy)

由KL散度公式可以推算
\begin{alignedat}{2} D_{KL}(P||Q)&=\sum p(x_i)(logp(x_i)-logq(x_i))\\ &=\sum p(x_i)logp(x_i)-\sum p(x_i)logq(x_i)\\ &=-H(P)-\sum p(x_i)logq(x_i)\\\\ -\sum p(x_i)logq(x_i)&=H(P)+D_{KL}(P||Q) \end{alignedat}
其中
H(P,Q)=-\sum p(x_i)logq(x_i)
就是PQ的交叉熵。
因?yàn)槌3N覀冇^測數(shù)據(jù)或訓(xùn)練數(shù)據(jù)的熵時(shí)固定的,所以KL散度和交叉熵只差固定值,所以,可以用交叉熵代替KL散度來評估兩個分布或某一個分部與訓(xùn)練數(shù)據(jù)的差異。

4.3 交叉熵?fù)p失函數(shù)

1,對于一個二分類任務(wù)
一個樣本其交叉熵?fù)p失就是
L=-ylogp-(1-y)log(1-p)
其中
y\in(0,1)
p=f(x)=p(y=1|x)
則總體損失就是所有樣本sum

2,對于一個多分類任務(wù)
一個樣本的交叉熵?fù)p失就是
L=-\sum_{c=1}^{M}y_c logp_c
其中
y_c \in (0,1) 表示樣本是否屬于c類
M 即類別c的數(shù)量
p_c 即樣本是c類的概率
則總體損失就是所有樣本sum
由此可見,對于多樣本交叉熵?fù)p失函數(shù),其模型需要預(yù)測出樣本屬于各個類別的概率值

5,最大化似然估計(jì)與對數(shù)損失(Maximum Likelihood Estimation & Logistic Loss)

5.1 最大似然估計(jì)

最大似然估計(jì)的核心思想是:觀測數(shù)據(jù)D之所以被觀測到,是因?yàn)閿?shù)據(jù)D出現(xiàn)的概率本身就高。想法很樸素。
似然函數(shù)如下:
\begin{alignedat}{2} l(\theta)&=p(x_1,x_2..x_n|\theta)\\\\ &=\prod_{i=1}^{n}p(x_i|\theta) \end{alignedat}
最大似然估計(jì)即在當(dāng)前數(shù)據(jù)下,求解令l(\theta)最大的\theta
例如估計(jì)拋硬幣正面朝上的概率p=\theta
正面p(ZM)=p=\theta
反面p(FM)=1-p=1-\theta

只拋1次,正面朝上
l(\theta)=p(ZM|\theta)=\theta
則最大化l=1
\theta=1=p

拋10次,正6反4
l(\theta)=\sum p(x_i|\theta)=\theta^6(1-\theta)^4
\frac{\partial l(\theta)}{\partial \theta}=\theta^5(1-\theta)^3(6(1-\theta)-4\theta)
求最大值,令導(dǎo)數(shù)=0得
\theta=0.6即p=0.6

拋10000次,正4901反5099
\frac{\partial l(\theta)}{\partial \theta}=\theta^{4900}(1-\theta)^{5098}(4901(1-\theta)-5099\theta)
\theta=0.4901時(shí),l(\theta)取得最大值

5.2 最大似然函數(shù)做目標(biāo)函數(shù)-對數(shù)損失

例如在邏輯回歸LR推導(dǎo)中,由于邏輯回歸會估計(jì)樣本是正樣本的概率p(y=1|x)=h(x)=sigmoid(wx)
這里y\in(0,1)
則對于一個樣本(x,y),其似然函數(shù)
l=p(y=1|x)^y(1-p(y=1|x))^{(1-y)}
對所有訓(xùn)練數(shù)據(jù):
L=\prod l
又因?yàn)樽畲蠡疞等價(jià)于最大化log(L)等價(jià)于最小化-log(L)
因?yàn)閷?shù)具有相乘變相加的特性
log(ab)=log(a)+log(b)
所以求解令-logL最小的參數(shù)(對于邏輯回歸即是w)即可
-log(L)=\sum(-ylogp-(1-y)log(1-p))
這不正是交叉熵?fù)p失函數(shù)嗎?
-logL 也被叫做對數(shù)損失。
所以對數(shù)損失函數(shù)和交叉熵?fù)p失函數(shù)是等價(jià)的
交叉熵?fù)p失函數(shù),從熵的角度度量模型差異
對數(shù)函數(shù),從統(tǒng)計(jì)估計(jì)的角度度量模型擬合

5.3 對數(shù)損失的進(jìn)一步擴(kuò)展

假如我們令y\in(-1,1) 即負(fù)類標(biāo)簽由0變?yōu)?1
p(y=1|x)=sigmoid(f(x))=\frac{1}{1+exp(-f(x))}
p(y=-1|x)=1-sigmoid(f(x))=\frac{1}{1+exp(f(x))}
f(x)=wx
則有
p(y|x)=\frac{1}{1+exp(-yf(x))}

L=\prod p(y|x)=\prod \frac{1}{1+exp(-yf(x))}

-logL=\sum(1+exp(-yf(x)))
這也是對數(shù)損失 只不過此時(shí)標(biāo)簽y\in(1,-1)

6,指數(shù)損失(Exponential Loss)

L=exp(-y_if(x_i))
應(yīng)用于加法模型Adaboost中。
因?yàn)橹笖?shù)具有指數(shù)相加等于數(shù)相乘的性質(zhì):
e^{a+b}=e^ae^b
所以,對于加法模型
f_t(x)=f_{t-1}+G_m(x)

\begin{alignedat}{2} L&=exp(-y_if_t(x))\\ &=exp(-y_if_{t-1}(x))exp(-y_iG_m(x))\\ &=w*exp(-y_iG_m(x)) \end{alignedat}

7,均方誤差(Mean Square Error MSE)

L=\frac{1}{N}\sum_{i=1}^{N}(y-f(x))^2

8,平方絕對誤差(Mean Absolute Error MAE)

L=\frac{1}{N}\sum_{i=1}^{N}|y-f(x)|

8.1 MSE VS MAE

1,MSE全程可導(dǎo),MAE在0處不可導(dǎo)

2,MAE更魯棒:
兩者差別以|y-f(x)|=1為分界線
0~1之間時(shí),MSE<<MAE
大于1時(shí),MSE>>MAE
而當(dāng)數(shù)據(jù)有異常值時(shí),往往|y-f(x)|>>1
此時(shí)MSE>>MAE
這表示,使用MSE對異常值會更加敏感,而算法為了降低MSE,就會使模型過度偏向異常值。這種現(xiàn)象在MAE上就會減輕很多。所以可以說MAE相對于MSE更魯棒一些。

另一個解釋是,當(dāng)我們用一個定值去擬合一列數(shù)時(shí),MSE擬合的是數(shù)據(jù)的平均數(shù),而MAE擬合的是數(shù)據(jù)的中位數(shù)。
\begin{alignedat}{2} MSE&=\frac{1}{N}\sum_{i=1}^{N}(x_i-\theta)^2\\ \frac{\partial MSE}{\partial \theta}&=\frac{2}{N}\sum_{i=1}^{N}(\theta-x_i)=0\\ \theta&=\frac{1}{N}\sum_{i=1}^{N}x_i\\ \end{alignedat}
所以MSE擬合的是平均數(shù)
對于MAE
我們對x從小到大排序
\begin{alignedat}{2} MAE&=\frac{1}{N}\sum_{i=1}^{N}|x_i-\theta|\\ &=\frac{1}{N}(\sum_{i=1}^{k}(\theta-x_i)+\sum_{i=k+1}^{N}(x_i-\theta) ) \\ \theta& \in [x_{k-1},x_{k+1}]\\\\ \frac{\partial MAE}{\partial \theta}&=\frac{1}{N}(\sum_{i=1}^{k}(1)+\sum_{i=k+1}^{N}(-1))=0\\ k&=\frac{N}{2}\\ \theta& \in [x_{N/2-1},x_{N/2+1}]\\ \end{alignedat}
所以MAE擬合的是一個區(qū)間,這個區(qū)間通常可以取中位數(shù)替代。
顯然中位數(shù)對異常值是不敏感的,而平均值則會敏感。這提示我們對于不同的數(shù)據(jù),需要選擇不同的損失。就想在預(yù)測全國人均收入問題上,由于大部分財(cái)富集中在很小一部分人中,這些數(shù)據(jù)就相當(dāng)于異常值,所以中位數(shù)更能代表人均收入水平。

3,對于梯度下降法來說,MSE梯度隨著越接近最優(yōu)點(diǎn)而越來越小,相當(dāng)于一開始邁大步快速接近極值,后面邁小步精確靠近極值。而MAE的導(dǎo)數(shù)一直為1不變,使得它在靠近極值時(shí)容易一步跨過。

9,Huber損失函數(shù)

L_{\delta}(y,f(x))=\begin{cases}\frac{1}{2}(y-f(x))^2,\text{ if }|y-f(x)|\leq \delta \\ \delta|y-f(x)| -\frac{1}{2}\delta^2, \text{ if }|y-f(x)|> \delta \end{cases}
這個函數(shù)是全局可導(dǎo)的,他是MSE與MAE的結(jié)合,擁有兩者的優(yōu)點(diǎn)。通過\delta來調(diào)節(jié)MSE和MAE的占比。

10,分位數(shù)損失函數(shù)(Quantile Loss)

要理解分位數(shù)損失函數(shù),首先要理解MAE,MAE是擬合中位數(shù)的損失函數(shù)(即離差絕對值的期望在中位數(shù)處取得最低)
而中位數(shù)就是分位數(shù)的一種。

另外,我們考慮一種回歸問題。以一元回歸為例,在眾多數(shù)據(jù)中,我們可以擬合一條曲線,這條曲線告訴我們對于某個x可能的擬合結(jié)果y=f(x)。即使真實(shí)y不是f(x),也應(yīng)該在f(x)附近,此時(shí),我們的預(yù)測是一個點(diǎn)。
但是,我們?nèi)绻胍@取一個y的范圍呢?即對于x,我想知道y的大致范圍。因?yàn)楹芏鄷r(shí)候,我們不需要精確值,反而更需要一個范圍值。此時(shí),我們需要預(yù)測一個線段。
那怎么做呢?
其實(shí)如果我們能分別獲得y的0.1分位數(shù)與0.9分位數(shù)的擬合,那么兩者之間的部分就是我們需要的,它預(yù)測了y的80%的取值范圍f_{0.1}(x)-f_{0.9}(x)
此時(shí),就需要優(yōu)化分位數(shù)損失函數(shù):
L_{\gamma}(y,f(x))=\sum_{i\in \left \{ i|y_i<f(x_i)\right \}}(1-\gamma)|y_i-f(x_i)|+\sum_{i\in \left \{ i|y_i \geq f(x_i)\right \}}\gamma|y_i-f(x_i)|
即,該損失函數(shù)對預(yù)測值大于真實(shí)值和小于真實(shí)值得懲罰是不一樣的。
當(dāng)\gamma=0.5時(shí),該損失等價(jià)于MAE
當(dāng)\gamma>0.5時(shí),該損失對預(yù)測值小于真實(shí)值的情況懲罰更大
當(dāng)\gamma<0.5時(shí),該損失對預(yù)測值大于真實(shí)值的情況懲罰更大

11 總結(jié)

本節(jié)講述了常見的損失函數(shù)。
損失函數(shù)大致分為應(yīng)用于分類的和應(yīng)用于回歸的。
從7均方誤差之后,基本上都用于回歸。

不同的模型會有自己比較適合的損失函數(shù)

回歸問題的損失函數(shù),往往存在y-f(x)的部分,我們稱之為殘差
\varepsilon = y-f(x) \tag{11.1} 回歸損失函數(shù)往往圍繞殘差構(gòu)建。

分類問題,就二分類(多分類往往建立在二分類的基礎(chǔ)上)而言,標(biāo)簽y往往存在兩種形式:
y\in(0,1) \tag{11.2}
or
y\in(1,-1) \tag{11.3}
對于11.2的情況,模型往往傾向于把預(yù)測值轉(zhuǎn)換成概率p=P(y=1|x)=f(x)
從而使用交叉熵?fù)p失log損失,這些損失函數(shù)都存在ylogf(x)(或f(x)^y)部分。這樣的模型有LR,神經(jīng)網(wǎng)絡(luò)
對于11.3的情況,模型往往傾向于構(gòu)建分類超平面f(x)=wx+b=0,再通過sign(f(x))判斷標(biāo)簽,例如感知機(jī),SVM。又如集成學(xué)習(xí)Adaboost,其模型f_t(x)=f_{t-1}(x)+\alpha G_t(x),而標(biāo)簽也是由sign(f_t(x))來決定,這幾個模型的損失函數(shù)往往存在yf(x)的部分。
可以看到分類的損失函數(shù),常圍繞yf(x)來構(gòu)建
當(dāng)然,有的模型對于標(biāo)簽形式是不敏感的,例如k近鄰,決策樹等,因?yàn)檫@些模型沒有把y用于損失計(jì)算,其損失函數(shù)也會比較不同。

不同的損失函數(shù)也有不同的特性

這些特性會有針對性的優(yōu)化我們的某些需求。
MAE相比于MSE有較強(qiáng)的魯棒性
分位數(shù)損失組合可以獲得預(yù)測值的范圍

參考

KL散度
損失函數(shù)
Regression Loss Functions
Regression Loss Functions-翻譯
分位數(shù)回歸
《統(tǒng)計(jì)學(xué)習(xí)方法》-李航

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容