機器學習中的損失函數(二) 回歸問題的損失函數


參考鏈接:http://baijiahao.baidu.com/s?id=1603857666277651546&wfr=spider&for=pc

1. 平方損失函數:MSE- L2 Loss

$$MSE = \sum_{i = 1}^n (y_i - \hat{y_i})^2 \tag1$$

平方損失函數是光滑函數,能夠用梯度下降法進行優化。然而,預測值距離真實值越遠,平方損失的懲罰力度越大,因此,它對異常點比較敏感。為了解決該問題,可以采用絕對損失函數。

2. 絕對值損失函數:MAE - L1 Loss

$$MAE = \sum_{i = 1}^n |y_i - \hat{y_i}| \tag2$$

MAE相比MSE的優點:

MAE相當於在做中值回歸,相比做均值回歸的MSE,MAE對異常點的魯棒性更好。(中值回歸與均值回歸的介紹詳見“補充信息”)

MAE的不足:

1. MAE在 $y = \hat y$ 處無法求導數。針對這種情況,平衡MSE的可導性和MAE的魯棒性,可以采用Huber損失函數(在第3部分介紹)。

2. MAE更新的梯度始終相同,那么在接近最優值處可能仍維持着較大的梯度而錯過最優值。

針對這種情況,可以使用變化的學習率,在接近最優值時降低學習率。

而MSE在這種情況下表現較好,即使使用固定的的學習率也可以有效收斂。MSE損失的梯度隨損失增大而增大,在損失趨於0時則減小,這使得在訓練結束時,MSE模型的結果往往會更精確。 

那么什么時候用MSE,什么時候用MAE呢?

MSE:如果異常點代表在商業中很重要的異常情況,並且需要被檢測出來,則應選用MSE損失函數。

MAE:相反,如果只把異常值當作受損數據,則應選用MAE損失函數。

總而言之,處理異常點時,MAE更穩定,但它的導數不連續,因此求解效率較低。

MSE對異常點更敏感,但通過令其導數為0,可以得到更穩定的封閉解。 

MSE與MAE都不能很好解決的問題:

二者兼有的問題是:在某些情況下,上述兩種損失函數都不能滿足需求。例如,若數據中90%的樣本對應的目標值為150,剩下10%在0到30之間。那么使用MAE作為損失函數的模型可能會忽視10%的異常點,而對所有樣本的預測值都為150。 

這是因為模型會按中位數來預測。而使用MSE的模型則會給出很多介於0到30的預測值,因為模型會向異常點偏移。上述兩種結果在許多商業場景中都是不可取的。

這些情況下應該怎么辦呢?最簡單的辦法是對目標變量進行變換。而另一種辦法則是換一個損失函數,這就引出了下面要講的第三種損失函數,即Huber損失函數。

補充信息:

1. 中值回歸就是我們優化的目標是使目標值趨於樣本點值的中位數,直觀理解就是大於 與 小於 目標值的樣本點數盡量相等。

2. 均值回歸的目標則是使目標值趨於樣本點值的均值。

3. 為什么MSE是均值回歸,而MAE是中值回歸呢?

我在StackExchange找到一條很好的解釋。

3. Huber損失函數

    (3)

 

Huber損失函數在|y - f(x)|較小時為平方損失,在 |y - f(x)| 較大時為線性損失。並且處處可導。

這里超參數$\delta$的選擇非常重要,因為這決定了你對與異常點的定義。當殘差大於$\delta$,應當采用L1(對較大的異常值不那么敏感)來最小化,而殘差小於超參數,則用L2來最小化。

由上圖可知,$\delta$ 越大,對異常點越敏感。

為什么使用Huber?

在離最優值較遠時,Huber損失相當於MAE,對異常點有更好的魯棒性;

當離最優值較近時,Huber損失相當於MSE,隨着損失的減小梯度也在逐漸減小,可以更好的逼近最優值,可以避免MAE中始終維持大梯度而錯過最優值的問題。

使用MAE訓練神經網絡最大的一個問題就是不變的大梯度,這可能導致在使用梯度下降快要結束時,錯過了最小點。而對於MSE,梯度會隨着損失的減小而減小,使結果更加精確。

在這種情況下,Huber損失就非常有用。它會由於梯度的減小而落在最小值附近。比起MSE,它對異常點更加魯棒。因此,Huber損失結合了MSE和MAE的優點。但是,Huber損失的問題是我們可能需要不斷調整超參數delta。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM