機器學習中常見的損失函數

一般來說,我們在進行機器學習任務時,使用的每一個算法都有一個目標函數,算法便是對這個目標函數進行優化,特別是在分類或者回歸任務中,便是使用損失函數(Loss Function)作為其目標函數,又稱為代價函數(Cost Function)。

損失函數是用來評價模型的預測值Y^=f(X)與真實值Y的不一致程度,它是一個非負實值函數。通常使用L(Y,f(x))來表示,損失函數越小,模型的性能就越好。

設總有N個樣本的樣本集為(X,Y)=(xi,yi),yi,i∈[1,N]為樣本ii的真實值,yi^=f(xi),i∈[1,N]為樣本i的預測值,f為分類或者回歸函數。

那麼總的損失函數為:

機器學習中常見的損失函數

常見的損失函數ℓ(yi,yi^)有以下幾種:

Zero-one Loss

Zero-one Loss即0-1損失,它是一種較為簡單的損失函數,如果預測值與目標值不相等,那麼為1,否則為0,即:

機器學習中常見的損失函數

可以看出上述的定義太過嚴格,如果真實值為1,預測值為0.999,那麼預測應該正確,但是上述定義顯然是判定為預測錯誤,那麼可以進行改進為Perceptron Loss。

Perceptron Loss

Perceptron Loss即為感知損失。即:

機器學習中常見的損失函數

其中t是一個超參數閾值,如在PLA(Perceptron Learning Algorithm,感知機算法)中取t=0.5。

Hinge Loss

Hinge損失可以用來解決間隔最大化問題,如在SVM中解決幾何間隔最大化問題,其定義如下:

機器學習中常見的損失函數

yi∈{−1,+1}

問題:SVM損失函數怎麼寫成Hinge損失的形式的?這可是面試常考的呢。

Log Loss

重點)在使用似然函數最大化時,其形式是進行連乘,但是為了便於處理,一般會套上log,這樣便可以將連乘轉化為求和,由於log函數是單調遞增函數,因此不會改變優化結果。因此log類型的損失函數也是一種常見的損失函數,如在LR(Logistic Regression, 邏輯迴歸)中使用交叉熵(Cross Entropy)作為其損失函數。即:

機器學習中常見的損失函數

yi∈{0,1}

規定 0⋅log⋅=0

Square Loss

Square Loss即平方誤差,常用於迴歸中。即:

機器學習中常見的損失函數

yi,yi^∈R

Absolute Loss

Absolute Loss即絕對值誤差,常用於迴歸中。即:

機器學習中常見的損失函數

yi,yi^∈R

Exponential Loss

Exponential Loss為指數誤差,常用於boosting算法中,如AdaBoost。即:

機器學習中常見的損失函數

yi∈{−1,1}

正則

一般來說,對分類或者回歸模型進行評估時,需要使得模型在訓練數據上使得損失函數值最小,即使得經驗風險函數最小化,但是如果只考慮經驗風險(Empirical risk),容易過擬合(詳細參見防止過擬合的一些方法),因此還需要考慮模型的泛化能力,一般常用的方法便是在目標函數中加上正則項,由損失項(Loss term)加上正則項(Regularization term)構成結構風險(Structural risk),那麼損失函數變為:

機器學習中常見的損失函數

其中λ是正則項超參數,常用的正則方法包括:L1正則與L2正則,詳細介紹參見:我上一篇文章。

各損失函數圖形如下:

機器學習中常見的損失函數


分享到:


相關文章: