機器學習-損失函數

0,綜述

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

1,0-1損失函數

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

2,合頁損失函數

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

2.1 感知機損失函數

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

2.2 SVM損失函數

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

2.3 討論

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

3,以熵或基尼指數度量的損失函數

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

4,交叉熵損失函數(Cross Entropy Loss)

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

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

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

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

所謂擬合一個分布,其實就是得到一系列離散或連續的概率值Q(x_i)
通過觀測數據/訓練數據我們本身也可以得到其分布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散度,是指兩個分布在同一值下對數概率之差的期望
P,Q兩分布越接近,KL散度越小
當兩分布相等時(所有對應概率相等),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的交叉熵。
因為常常我們觀測數據或訓練數據的熵時固定的,所以KL散度和交叉熵只差固定值,所以,可以用交叉熵代替KL散度來評估兩個分布或某一個分部與訓練數據的差異。

4.3 交叉熵損失函數

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

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

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

5.1 最大似然估計

最大似然估計的核心思想是:觀測數據D之所以被觀測到,是因為數據D出現的概率本身就高。想法很樸素。
似然函數如下:
\begin{alignedat}{2} l(\theta)&=p(x_1,x_2..x_n|\theta)\\\\ &=\prod_{i=1}^{n}p(x_i|\theta) \end{alignedat}
最大似然估計即在當前數據下,求解令l(\theta)最大的\theta
例如估計拋硬幣正面朝上的概率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)
求最大值,令導數=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時,l(\theta)取得最大值

5.2 最大似然函數做目標函數-對數損失

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

5.3 對數損失的進一步擴展

假如我們令y\in(-1,1) 即負類標簽由0變為-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)))
這也是對數損失 只不過此時標簽y\in(1,-1)

6,指數損失(Exponential Loss)

L=exp(-y_if(x_i))
應用于加法模型Adaboost中。
因為指數具有指數相加等于數相乘的性質:
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全程可導,MAE在0處不可導

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

另一個解釋是,當我們用一個定值去擬合一列數時,MSE擬合的是數據的平均數,而MAE擬合的是數據的中位數。
\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擬合的是平均數
對于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擬合的是一個區間,這個區間通常可以取中位數替代。
顯然中位數對異常值是不敏感的,而平均值則會敏感。這提示我們對于不同的數據,需要選擇不同的損失。就想在預測全國人均收入問題上,由于大部分財富集中在很小一部分人中,這些數據就相當于異常值,所以中位數更能代表人均收入水平。

3,對于梯度下降法來說,MSE梯度隨著越接近最優點而越來越小,相當于一開始邁大步快速接近極值,后面邁小步精確靠近極值。而MAE的導數一直為1不變,使得它在靠近極值時容易一步跨過。

9,Huber損失函數

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}
這個函數是全局可導的,他是MSE與MAE的結合,擁有兩者的優點。通過\delta來調節MSE和MAE的占比。

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

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

另外,我們考慮一種回歸問題。以一元回歸為例,在眾多數據中,我們可以擬合一條曲線,這條曲線告訴我們對于某個x可能的擬合結果y=f(x)。即使真實y不是f(x),也應該在f(x)附近,此時,我們的預測是一個點。
但是,我們如果想要獲取一個y的范圍呢?即對于x,我想知道y的大致范圍。因為很多時候,我們不需要精確值,反而更需要一個范圍值。此時,我們需要預測一個線段。
那怎么做呢?
其實如果我們能分別獲得y的0.1分位數與0.9分位數的擬合,那么兩者之間的部分就是我們需要的,它預測了y的80%的取值范圍f_{0.1}(x)-f_{0.9}(x)
此時,就需要優化分位數損失函數:
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)|
即,該損失函數對預測值大于真實值和小于真實值得懲罰是不一樣的。
\gamma=0.5時,該損失等價于MAE
\gamma>0.5時,該損失對預測值小于真實值的情況懲罰更大
\gamma<0.5時,該損失對預測值大于真實值的情況懲罰更大

11 總結

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

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

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

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

不同的損失函數也有不同的特性

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

參考

KL散度
損失函數
Regression Loss Functions
Regression Loss Functions-翻譯
分位數回歸
《統計學習方法》-李航

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容