機器學習損失函式梳理

2021-09-10 23:09:16 字數 2744 閱讀 3313

沒有乙個適合所有機器學習演算法的損失函式。針對特定問題選擇損失函式涉及到許多因素,比如所選機器學習演算法的型別、是否易於計算導數以及資料集中異常值所佔比例。

下文中總結了機器學習中比較重要的損失函式。

均方誤差(mse)度量的是**值和實際觀測值間差的平方的均值。它只考慮誤差的平均大小,不考慮其方向。但由於經過平方,與真實值偏離較多的**值會比偏離較少的**值受到更為嚴重的懲罰。再加上 mse 的數學特性很好,這使得計算梯度變得更容易。

平均絕對誤差(mae)度量的是**值和實際觀測值之間絕對差之和的平均值。和 mse 一樣,這種度量方法也是在不考慮方向的情況下衡量誤差大小。但和 mse 的不同之處在於,mae 需要像線性規劃這樣更複雜的工具來計算梯度。此外,mae 對異常值更加穩健,因為它不使用平方。

與其它損失函式相比,這個函式在機器學習領域沒有那麼常見。它與 mae 相似,唯一的區別是這個函式沒有用絕對值。用這個函式需要注意的一點是,正負誤差可以互相抵消。儘管在實際應用中沒那麼準確,但它可以確定模型存在正偏差還是負偏差。

huber損失對資料中的異常點沒有平方誤差損失那麼敏感。它在0也可微分。本質上,huber損失是絕對誤差,只是在誤差很小時,就變為平方誤差。誤差降到多小時變為二次誤差由超引數δ(delta)來控制。當huber損失在[0-δ,0+δ]之間時,等價為mse,而在[-∞,δ]和[δ,+∞]時為mae。

這裡超引數delta的選擇非常重要,因為這決定了你對與異常點的定義。當殘差大於delta,應當採用l1(對較大的異常值不那麼敏感)來最小化,而殘差小於超引數,則用l2來最小化。

綜合而言,此損失函式處處可導,且對異常點魯棒。

簡言之,在一定的安全間隔內(通常是 1),正確類別的分數應高於所有錯誤類別的分數之和。因此 hinge loss 常用於最大間隔分類(maximum-margin classification),最常用的是支援向量機。儘管不可微,但它是乙個凸函式,因此可以輕而易舉地使用機器學習領域中常用的凸優化器。

這是分類問題中最常見的設定。隨著**概率偏離實際標籤,交叉熵損失會逐漸增加。

注意,當實際標籤為 1(y(i)=1) 時,函式的後半部分消失,而當實際標籤是為 0(y(i=0)) 時,函式的前半部分消失。簡言之,我們只是把對真實值類別的實際**概率的對數相乘。還有重要的一點是,交叉熵損失會重重懲罰那些置信度高但是錯誤的**值。

以上表示式為二分類下的交叉熵損失函式,這個表示式其實就是邏輯回歸的損失函式。

拓展到多分類:

log-cosh是另一種應用於回歸問題中的,且比l2更平滑的的損失函式。它的計算方式是**誤差的雙曲余弦的對數。

注:cosh(x)=(exp(x) + exp(-x)) / 2.0

優點:對於較小的x,log(cosh(x))近似等於(x^2)/2,對於較大的x,近似等於abs(x)-log(2)。這意味著『logcosh』基本類似於均方誤差,但不易受到異常點的影響。它具有huber損失所有的優點,但不同於huber損失的是,log-cosh二階處處可微。

為什麼需要二階導數?許多機器學習模型如xgboost,就是採用牛頓法來尋找最優點。而牛頓法就需要求解二階導數(hessian)。因此對於諸如xgboost這類機器學習框架,損失函式的二階可微是很有必要的。

與二分類交叉熵對比:

首先在原有的基礎上加了乙個因子,其中gamma>0使得減少易分類樣本的損失。使得更關注於困難的、錯分的樣本。

例如gamma為2,對於正類樣本而言,**結果為0.95肯定是簡單樣本,所以(1-0.95)的gamma次方就會很小,這時損失函式值就變得更小。而**概率為0.3的樣本其損失相對很大。對於負類樣本而言同樣,**0.1的結果應當遠比**0.7的樣本損失值要小得多。對於**概率為0.5時,損失只減少了0.25倍,所以更加關注於這種難以區分的樣本。

此外,加入平衡因子alpha,用來平衡正負樣本本身的比例不均:

只新增alpha雖然可以平衡正負樣本的重要性,但是無法解決簡單與困難樣本的問題。

lambda調節簡單樣本權重降低的速率,當lambda為0時即為交叉熵損失函式,當lambda增加時,調整因子的影響也在增加。實驗發現lambda為2是最優。

機器學習(四) 損失函式

在上上一節邏輯回歸中,是使用似然函式來作為模型的求解引數的目標。但在很多情況下,似然函式很難直接寫出,更常用的方法是損失函式,這個在上上一節的補充中也有提過。那麼損失函式表示什麼概念呢?和似然函式相反,損失函式是模型 失敗的度量。注意最大化似然函式和最小化損失函式兩者並不能完全等同,因為這涉及到所選...

機器學習常見損失函式

損失函式作用 損失函式是用於衡量模型 值與真實值之間差距的函式,損失函式的值越小越好。常見的損失函式有如下幾種 0 1損失函式 zero one loss 當且僅當 為真的時候取值為1,否則取值為0。可以看出該損失函式過於嚴格,導致其具有非凸 非光滑的特點,使得演算法很難直接對該函式進行優化。感知損...

機器學習之損失函式

有這樣乙個問題,損失函式和評價指標都是來評判模型的好與不好,它們之間有什麼區別?簡單區分可以理解為損失函式是用在模型訓練階段,用在梯度下降階段,做梯度更新,來讓損失函式最小化。評價指標是用在測試階段,也就是判斷生成的模型的好壞,評價指標有很多種,會單獨寫一篇文章。什麼是損失函式?在有監督學習中,真實...