機器學習-損失函數

2021-02-08 算法與數學之美

機器學習-損失函數

來源:劉帝偉 (中國統計網特邀認證作者)

編輯:Gemini





損失函數(loss function)是用來估量你模型的預測值f(x)與真實值Y的不一致程度,它是一個非負實值函數,通常使用L(Y, f(x))來表示,損失函數越小,模型的魯棒性就越好。損失函數是經驗風險函數的核心部分,也是結構風險函數重要組成部分。


模型的結構風險函數包括了經驗風險項和正則項,通常可以表示成如下式子:


θ∗=argminθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)


θ∗=arg⁡minθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)


其中,前面的均值函數表示的是經驗風險函數,L代表的是損失函數,後面的ΦΦ是正則化項(regularizer)或者叫懲罰項(penalty term),它可以是L1,也可以是L2,或者其他的正則函數。


整個式子表示的意思是找到使目標函數最小時的θθ。下面主要列出幾種常見的損失函數。



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


有些人可能覺得邏輯回歸的損失函數就是平方損失,其實並不是。


平方損失函數可以通過線性回歸在假設樣本是高斯分布的條件下推導得到,而邏輯回歸得到的並不是平方損失。


在邏輯回歸的推導中,它假設樣本服從伯努利分布(0-1分布),然後求得滿足該分布的似然函數,接著取對數求極值等等。而邏輯回歸併沒有求似然函數的極值,而是把極大化當做是一種思想,進而推導出它的經驗風險函數為:最小化負的似然函數(即max F(y, f(x)) —-> min -F(y, f(x)))。從損失函數的視角來看,它就成了log損失函數了。


log損失函數的標準形式


L(Y,P(Y|X))=−logP(Y|X)L(Y,P(YX))=−log⁡P(YX)


剛剛說到,取對數是為了方便計算極大似然估計,因為在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,下面將表達式分開表示):



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



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



上面是針對二分類而言的。


這裡需要解釋一下:之所以有人認為邏輯回歸是平方損失,是因為在使用梯度下降來求最優解的時候,它的迭代式子與平方損失求導後的式子非常相似,從而給人一種直觀上的錯覺。


這裡有個PDF可以參考一下:Lecture 6: logistic regression.pdf.



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


最小二乘法是線性回歸的一種,OLS將問題轉化成了一個凸優化問題。


在線性回歸中,它假設樣本和噪聲都服從高斯分布(為什麼假設成高斯分布呢?


其實這裡隱藏了一個小知識點,就是中心極限定理,可以參考【central limit theorem】),最後通過極大似然估計(MLE)可以推導出最小二乘式子。


最小二乘的基本原則是:最優擬合直線應該是使各點到回歸直線的距離和最小的直線,即平方和最小


換言之,OLS是基於距離的,而這個距離就是我們用的最多的歐幾裡得距離。


為什麼它會選擇使用歐式距離作為誤差度量呢(即Mean squared error, MSE),主要有以下幾個原因:


簡單,計算方便;


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


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


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


L(Y,f(X))=(Y−f(X))2L(Y,f(X))=(Y−f(X))2


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



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


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

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



三、指數損失函數(Adaboost)


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


fm(x)fm(x):


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



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



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



關於Adaboost的推導,可以參考Wikipedia:AdaBoost或者《統計學習方法》P145.



四、Hinge損失函數(SVM)


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



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



於是,原式就變成了:



如若取λ=12Cλ=12C,式子就可以表示成:



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



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


Hinge 損失函數的標準形式


L(y)=max(0,1−yy~),y=±1L(y)=max(0,1−yy~),y=±1


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


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

0-線性核;


1-多項式核;


2-RBF核;


3-sigmoid核。


五、其它損失函數


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


0-1損失函數



絕對值損失函數



下面來看看幾種損失函數的可視化圖像,對著圖看看橫坐標,看看縱坐標,再看看每條線都表示什麼損失函數,多看幾次好好消化消化。



OK,暫時先寫到這裡,休息下。最後,需要記住的是:參數越多,模型越複雜,而越複雜的模型越容易過擬合。過擬合就是說模型在訓練數據上的效果遠遠好於在測試集上的性能。此時可以考慮正則化,通過設置正則項前面的hyper parameter,來權衡損失函數和正則項,減小參數規模,達到模型簡化的目的,從而使模型具有更好的泛化能力。


End.

往期精彩文章:

第一個被認為「科學家」的人:泰勒斯

數學思維比數學運算更重要

二十世紀的十大科學騙局

瞎扯現代數學的基礎

x背後的軼聞趣事

主宰這個世界的10大算法

16個讓你燒腦讓你暈的悖論

機器學習中距離和相似性度量方法

傳說中的快排是怎樣的

玻璃秘史:一個人 改變了全世界

程序人生的四個象限和兩條主線

比特幣的原理及運作機制

概率論公式,你值得擁有

分類算法之樸素貝葉斯算法

採樣定理:有限個點構建出整個函數


長按二維碼識別

歡迎大家把獨特見解分享出來,投稿郵箱:

math_alg@163.com






相關焦點

  • 【損失函數】常見的損失函數(loss function)總結
    不同的模型用的損失函數一般也不一樣。損失函數分為經驗風險損失函數和結構風險損失函數。經驗風險損失函數指預測結果和實際結果的差別,結構風險損失函數是指經驗風險損失函數加上正則項。常見的損失函數以及其優缺點如下:0-1損失函數(zero-one loss)0-1損失是指預測值和目標值不相等為1, 否則為0:
  • GAN是一種特殊的損失函數?
    神經網絡的函數逼近理論在數學中,我們可以將函數看做一個「機器」或「黑匣子」,我們為這個「機器」或「黑匣子」提供了一個或多個數字作為輸入,則會輸出一個或多個數字,如下圖所示:將函數可以比喻成一個「機器」或「黑匣子」一般來說,我們可以用一個數學表達式來表示我們想要的函數。
  • 深度學習中常見的損失函數
    在深度學習分類任務中,我們經常會使用到損失函數,今天我們就來總結一下深度學習中常見的損失函數。Log損失函數是0-1損失函數的一種替代函數,其形式如下: 該式就是sigmoid函數的交叉熵,這也是上文說的在分類問題上,交叉熵的實質是對數似然函數。在深度學習中更普遍的做法是將softmax作為最後一層,此時常用的仍是對數似然損失函數,如下所示:
  • 【機器學習基礎】用Python畫出幾種常見機器學習二分類損失函數
    在二分類的監督學習中,支持向量機、邏輯斯諦回歸與最大熵模型、提升方法各自使用合頁損失函數、邏輯斯諦損失函數、指數損失函數,分別寫為:
  • 如何為模型選擇合適的損失函數?所有ML學習者應該知道的5種回歸損失函數
    損失函數的選擇取決於許多因素,包括是否有離群點,機器學習算法的選擇,運行梯度下降的時間效率,是否易於找到函數的導數,以及預測結果的置信度。這篇文章的目的就是希望幫助大家了解不同的損失函數。機器學習中的所有算法都依賴於最小化或最大化某一個函數,我們稱之為「目標函數」。最小化的這組函數被稱為「損失函數」。損失函數是衡量預測模型預測期望結果表現的指標。
  • 入門| 機器學習中常用的損失函數你知多少?
    選自towards data science作者:Ravindra Parmar機器之心編譯參與:李詩萌、王淑婷本文作者將常用的損失函數分為了兩大類:分類和回歸。然後又分別對這兩類進行了細分和講解,其中回歸中包含了一種不太常見的損失函數:平均偏差誤差,可以用來確定模型中存在正偏差還是負偏差。
  • 機器學習經典損失函數比較
    我們常常將最小化的函數稱為損失函數,它主要用于衡量模型的預測能力。在尋找最小值的過程中,我們最常用的方法是梯度下降法,這種方法很像從山頂下降到山谷最低點的過程。 雖然損失函數描述了模型的優劣為我們提供了優化的方向,但卻不存在一個放之四海皆準的損失函數。損失函數的選取依賴於參數的數量、局外點、機器學習算法、梯度下降的效率、導數求取的難易和預測的置信度等方面。
  • 總結 | 深度學習損失函數大全
    在多分類任務中,經常採用 softmax 激活函數+交叉熵損失函數,因為交叉熵描述了兩個概率分布的差異,然而神經網絡輸出的是向量,並不是概率分布的形式。所以需要 softmax激活函數將一個向量進行「歸一化」成概率分布的形式,再採用交叉熵損失函數計算 loss。
  • 換個角度看GAN:另一種損失函數
    ,我們可以把函數當做機器,往機器中輸入一或多個數字,它會相應地生成一或多個數字。將函數比作「機器」或「黑箱」。然而,所有損失函數具有一個共同特性──它必須能以精確的數學表達式表示損失函數。基於 L2 損失函數的反饋,模型已學習出一隻相似的鳥,但模型應該輸出一種與紅色及藍色都接近的顏色。模型會怎麼做?模型會輸出一種黃色的鳥,這是最小化紅色與藍色距離的最安全選擇,即便模型在訓練過程中從未觀察到一隻黃色的鳥。
  • 機器學習常用損失函數小結
    轉載自:https://zhuanlan.zhihu.com/p/77686118機器學習中的監督學習本質上是給定一系列訓練樣本  ,嘗試學習
  • 深度學習中的損失函數總結以及Center Loss函數筆記
    北京 上海巡迴站 | NVIDIA DLI深度學習培訓NVIDIA 深度學習學院 帶你快速進入火熱的DL領域正文共5481個字,19張圖,預計閱讀時間14分鐘。損失函數度量的是預測值與真實值之間的差異.損失函數通常寫做L(y_,y).y_代表了預測值,y代表了真實值.
  • 機器學習中常用的5種回歸損失函數
    「損失函數」是機器學習優化中至關重要的一部分。L1、L2損失函數相信大多數人都早已不陌生。
  • 損失函數
    一般來說,監督學習的目標函數由損失函數和正則化項組成。(Objective = Loss + Regularization)Pytorch中的損失函數一般在訓練模型時候指定。注意Pytorch中內置的損失函數的參數和tensorflow不同,是y_pred在前,y_true在後,而Tensorflow是y_true在前,y_pred在後。對於回歸模型,通常使用的內置損失函數是均方損失函數nn.MSELoss 。
  • 多類SVM的損失函數
    這類學習方法使我們能夠輸入一組數據和類別標籤,然後從中學到一個從輸入值到預測值的映射關係,而我們只需要定義一組參數並優化這些參數。我們本篇線性分類器教程主要關注評分函數的概念和它的用法。但是,為了真的「學會」輸入值和類別標籤的映射關係,我們需要討論下面兩個重要的概念:在本周和下周的文章中,我們會討論兩類常見的損失函數,它們在機器學習、神經網絡和深度學習算法中都被應用:接下來,我們就討論多類SVM損失。用最簡單的方式來解釋,損失函數就是用來衡量一個預測器在對輸入數據進行分類預測時的質量好壞。
  • 要做好深度學習任務,不妨先在損失函數上「做好文章」
    雷鋒網 AI 科技評論按:損失函數對於機器學習而言,是最基礎也最重要的環節之一,因此在損失函數上「做好文章」,是一個機器學習項目順利進行的前提之一。Deep Learning Demystified 編輯、數據科學家 Harsha Bommana 以淺顯易懂的文字介紹了在不同的深度學習任務中如何設置損失函數,以期大家能夠對損失函數有一個更加清晰的認識。
  • 深度人臉識別中不同損失函數的性能對比
    選自arXiv作者:Y Srivastava、V Murali、S R Dubey機器之心編譯參與:路、淑婷人臉識別是當前手機設備中使用最廣泛的生物識別特徵之一。而損失函數在訓練用於人臉識別的 CNN 過程中有重要作用。因此,本文對用於人臉識別的多種損失函數進行了性能對比。
  • 《機器學習及R應用》詳細目錄
    (詳情點擊頁底「閱讀原文」)陳強老師的《機器學習及R應用》終於上市啦!目前已經開始在高等教育出版社的官方微店預售。掃描(或識別)下方二維碼,即可前往售書頁面。昨日推文引起極大反響,不少讀者想知道《機器學習及R應用》的目錄。
  • 常見的損失函數(loss function)總結
    不同的模型用的損失函數一般也不一樣。損失函數分為經驗風險損失函數和結構風險損失函數。經驗風險損失函數指預測結果和實際結果的差別,結構風險損失函數是指經驗風險損失函數加上正則項。常見的損失函數以及其優缺點如下:1. 0-1損失函數(zero-one loss)0-1損失是指預測值和目標值不相等為1, 否則為0:特點:(1)0-1損失函數直接對應分類判斷錯誤的個數,但是它是一個非凸函數,不太適用.
  • XGboost基礎之損失函數logloss和CART決策樹
    首先看看邏輯回歸怎麼構建損失函數。簡單地說,我們希望對一個樣本Xi,它的被預測目標yi出現的可能性越大越好。那麼我們可以構建一個它的概率分布函數:                                                   這其實很精妙,當對這個樣本yi=1的時候
  • PyTorch 學習筆記(六):PyTorch的十七個損失函數
    PyTorch 中訓練一個模型所可能涉及到的方法及函數的詳解等,本文為作者整理的學習筆記(六),後續會繼續更新這個系列,歡迎關注。請來了解PyTorch中給出的十七種損失函數吧。嚴格意義上的交叉熵損失函數應該是nn.NLLLoss()。補充:小談交叉熵損失函數 交叉熵損失(cross-entropy Loss) 又稱為對數似然損失(Log-likelihood Loss)、對數損失;二分類時還可稱之為邏輯斯諦回歸損失(Logistic Loss)。交叉熵損失函數表達式為 L = - sigama(y_i * log(x_i))。