詳解常見的損失函式

七月線上實驗室發表於2018-07-12

對於給定的輸入X,由f(X)給出相應的輸出Y,這個輸出的預測值f(X)與真實值Y可能一致也可能不一致(要知道,有時損失或誤差是不可避免的),用一個損失函式來度量預測錯誤的程度。損失函式記為L(Y, f(X)),用來估量你模型的預測值f(x)與真實值Y的不一致程度。


損失函式越小,模型的魯棒性就越好。損失函式是經驗風險函式的核心部分,也是結構風險函式重要組成部分。模型的結構風險函式包括了經驗風險項和正則項,通常可以表示成如下式子:

640?wx_fmt=png

其中,前面的均值函式表示的是經驗風險函式,L代表的是損失函式,後面的Φ是正則化項(regularizer)或者叫懲罰項(penalty term),它可以是L1,也可以是L2,或者其他的正則函式。整個式子表示的意思是找到使目標函式最小時的θ值。下面主要列出幾種常見的損失函式。


常用的損失函式有以下幾種(基本引用自《統計學習方法》):


640?wx_fmt=jpeg

640?wx_fmt=jpeg


接下來,我們來重點看下 下面幾種損失函式。


一、log對數損失函式(邏輯迴歸)

有些人可能覺得邏輯迴歸的損失函式就是平方損失,其實並不是。平方損失函式可以通過線性迴歸在假設樣本是高斯分佈的條件下推導得到,而邏輯迴歸得到的並不是平方損失。在邏輯迴歸的推導中,它假設樣本服從伯努利分佈(0-1分佈),然後求得滿足該分佈的似然函式,接著取對數求極值等等。


而邏輯迴歸並沒有求似然函式的極值,而是把極大化當做是一種思想,進而推匯出它的經驗風險函式為:最小化負的似然函式(即max F(y, f(x)) —> min -F(y, f(x)))。從損失函式的視角來看,它就成了log損失函式了。


log損失函式的標準形式:

L(Y,P(Y|X))=−logP(Y|X)


剛剛說到,取對數是為了方便計算極大似然估計,因為在MLE中,直接求導比較困難,所以通常都是先取對數再求導找極值點。


損失函式L(Y, P(Y|X))表達的是樣本X在分類Y的情況下,使概率P(Y|X)達到最大值(換言之,就是利用已知的樣本分佈,找到最有可能(即最大概率)導致這種分佈的引數值;或者說什麼樣的引數才能使我們觀測到目前這組資料的概率最大)。因為log函式是單調遞增的,所以logP(Y|X)也會達到最大值,因此在前面加上負號之後,最大化P(Y|X)就等價於最小化L了。


邏輯迴歸的P(Y=y|x)表示式如下(為了將類別標籤y統一為1和0,下面將表示式分開表示):

640?wx_fmt=png


將它帶入到上式,通過推導可以得到logistic的損失函式表示式,如下:


640?wx_fmt=png


邏輯迴歸最後得到的目標式子如下:


640?wx_fmt=png


二、平方損失函式(最小二乘法, Ordinary Least Squares )

最小二乘法是線性迴歸的一種,OLS將問題轉化成了一個凸優化問題。線上性迴歸中,它假設樣本和噪聲都服從高斯分佈(為什麼假設成高斯分佈呢?其實這裡隱藏了一個小知識點,就是中心極限定理,可以參考:https://blog.csdn.net/v_july_v/article/details/8308762),最後通過極大似然估計(MLE)可以推匯出最小二乘式子。最小二乘的基本原則是:最優擬合直線應該是使各點到迴歸直線的距離和最小的直線,即平方和最小。


換言之,OLS是基於距離的,而這個距離就是我們用的最多的歐幾里得距離。為什麼它會選擇使用歐式距離作為誤差度量呢(即Mean squared error, MSE),主要有以下幾個原因:


簡單,計算方便;

歐氏距離是一種很好的相似性度量標準;

在不同的表示域變換後特徵性質不變。


平方損失(Square loss)的標準形式如下:


640?wx_fmt=png


當樣本個數為n時,此時的損失函式變為:


640?wx_fmt=png


Y-f(X)表示的是殘差,整個式子表示的是殘差的平方和,而我們的目的就是最小化這個目標函式值(注:該式子未加入正則項),也就是最小化殘差的平方和(residual sum of squares,RSS)。


而在實際應用中,通常會使用均方差(MSE)作為一項衡量指標,公式如下:

640?wx_fmt=png

上面提到了線性迴歸,這裡額外補充一句,我們通常說的線性有兩種情況,一種是因變數y是自變數x的線性函式,一種是因變數y是引數αα的線性函式。在機器學習中,通常指的都是後一種情況。


三、指數損失函式(Adaboost)

學過Adaboost演算法的人都知道,它是前向分步加法演算法的特例,是一個加和模型,損失函式就是指數函式。在Adaboost中,經過m此迭代之後,可以得到fm(x)fm(x):


640?wx_fmt=png


Adaboost每次迭代時的目的是為了找到最小化下列式子時的引數α和G:


640?wx_fmt=png


而指數損失函式(exp-loss)的標準形式如下


640?wx_fmt=png


可以看出,Adaboost的目標式子就是指數損失,在給定n個樣本的情況下,Adaboost的損失函式為:

640?wx_fmt=png

關於Adaboost的推導,可以參考:https://blog.csdn.net/v_july_v/article/details/40718799


四、Hinge損失函式(SVM)

在機器學習演算法中,hinge損失函式和SVM是息息相關的。線上性支援向量機中,最優化問題可以等價於下列式子:

 

640?wx_fmt=png


下面來對式子做個變形,令:


640?wx_fmt=png


於是,原式就變成了:


640?wx_fmt=png


如若取640?wx_fmt=png,式子就可以表示成:



640?wx_fmt=png


可以看出,該式子與下式非常相似:


640?wx_fmt=png


前半部分中的ll就是hinge損失函式,而後面相當於L2正則項。


Hinge 損失函式的標準形式



640?wx_fmt=png


可以看出,當|y|>=1時,L(y)=0。


補充一下:在libsvm中一共有4中核函式可以選擇,對應的是-t引數分別是:

0-線性核;

1-多項式核;

2-RBF核;

3-sigmoid核。


如此,SVM有第二種理解,即最優化+損失最小,或如@夏粉_百度所說“可從損失函式和優化演算法角度看SVM,boosting,LR等演算法,可能會有不同收穫”。


關於SVM的更多理解請參考:支援向量機通俗導論(理解SVM的三層境界),連結:http://blog.csdn.net/v_july_v/article/details/7624837


五、其它損失函式

除了以上這幾種損失函式,常用的還有:

0-1損失函式


640?wx_fmt=png


絕對值損失函式


640?wx_fmt=png


以下是幾種損失函式的視覺化影象:

640?wx_fmt=png

參考文獻:

http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/


題目來源:

七月線上官網(https://www.julyedu.com/)——面試題庫——面試大題——機器學習 第26題。


機器學習中所有的演算法都需要最大化或最小化一個函式,這個函式被稱為“目標函式”。其中,我們一般把最小化的一類函式,稱為“損失函式”。它能根據預測結果,衡量出模型預測能力的好壞。“損失函式”是機器學習優化中至關重要的一部分。


為了幫助大家系統地學習機器學習課程的相關知識,我們特意推出了機器學習集訓營系列課程。迄今為止,「機器學習集訓營」已經舉辦了四期,每一期都湧現出了不少優秀offer,特別是上一期很多同學從Java、Android、iOS等傳統IT行業成功轉行轉型轉崗AI拿到年薪三四十萬,部分甚至超過四十萬拿到五十萬。


本第五期,在第四期的基礎上,除了繼續維持“入學測評、直播答疑、佈置作業、階段考試、畢業考核、一對一批改、線上線下結合、CPU&GPU雙雲平臺、組織比賽、面試輔導、就業推薦”十一位一體的教學模式,本期特地推出機器學習工程師聯合認證。且線下在北京、上海、深圳、廣州、杭州、瀋陽、濟南、鄭州、成都的基礎上,新增武漢、西安兩個線下點,十一城同步開營


此外,本期依然沿用前四期線上線下相結合的授課方式,加強專案實訓的同時引入線下BAT專家面對面、手把手的教學方式;突出BAT級工業專案實戰輔導 + 一對一面試求職輔導,並提供一年GPU雲實驗平臺免費使用,精講面試考點。讓每一位學員不用再為遇到問題沒人解答,缺乏實戰經驗以及簡歷上沒有專案經驗,面試屢屢遭拒而發愁。


本期限150個名額,歷時3個月,10多個BAT級工業專案,保障每一位學員所學更多、效率更高、收穫更大。


機器學習集訓營 第五期 課程詳情可點選文末“閱讀原文”進行檢視,或者加微信客服:julyedukefu_02進行諮詢。

640?wx_fmt=jpeg

相關文章