回歸損失函數2 : HUber loss,Log Cosh Loss,以及 Quantile Loss


均方誤差(Mean Square Error,MSE)和平均絕對誤差(Mean Absolute Error,MAE) 是回歸中最常用的兩個損失函數,但是其各有優缺點。為了避免MAE和MSE各自的優缺點,在Faster R-CNN和SSD中使用\(\text{Smooth} L_1\)損失函數,當誤差在\([-1,1]\) 之間時,\(\text{Smooth} L_1\)損失函數近似於MSE,能夠快速的收斂;在其他的區間則近似於MAE,其導數為\(\pm1\),不會對離群值敏感。

本文再介紹幾種回歸常用的損失函數

  • Huber Loss
  • Log-Cosh Loss
  • Quantile Loss

Huber Loss

Huber損失函數(\(\text{Smooth} L_1\)損失函數是其的一個特例)整合了MAE和MSE各自的優點,並避免其缺點

\[L_\delta(y,f(x)) = \left \{ \begin{array}{c} \frac{1}{2} (y - f(x))^2 & \mid y - f(x) \mid \leq \delta \\ \delta \mid y-f(x) \mid - \frac{1}{2} \delta ^2 & \text{otherwise}\end{array}\right. \]

\(\delta\) 是Huber的一個超參數,當真實值和預測值的差值\(\mid y- f(x) \mid \leq \delta\) 時,Huber就是MSE;當差值在\((-\infty,\delta )\)或者 \((\delta,+\infty)\) 時,Huber就是MAE。這樣,當誤差較大時,使用MAE對離群點不那么敏感;在誤差較小時使用MSE,能夠快速的收斂;

這里超參數\(\delta\)的值的設定就較為重要,和真實值的差值超過該值的樣本為異常值。誤差的絕對值小於\(\delta\) 時,使用MSE;當誤差大於\(\delta\) 時,使用MAE。

下圖給出了不同的\(\delta\) 值,Huber的函數曲線。

橫軸表示真實值和預測值的差值,縱軸為Huber的函數值。可以看出,\(\delta\) 越小其曲線越趨近於MSE;越大,越趨近於MAE。

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

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

\(\text{Smooth }L_1\) 損失函數可以看作超參數\(\delta = 1\) 的Huber函數。

Log-Cosh Loss

Log-Cosh是比\(L_2\) 更光滑的損失函數,是誤差值的雙曲余弦的對數

\[L(y,f(x)) = \sum_{i=1}^n\log \cosh(y-f(x)) \]

其中,\(y\)為真實值,\(f(x)\) 為預測值。

對於較小的誤差$\mid y - f(x) \mid $ ,其近似於MSE,收斂下降較快;對於較大的誤差\(\mid y - f(x) \mid\) 其近似等於\(\mid y-f(x) \mid - log(2)\) ,類似於MAE,不會受到離群點的影響。 Log-Cosh具有Huber 損失的所有有點,且不需要設定超參數。

相比於Huber,Log-Cosh求導比較復雜,計算量較大,在深度學習中使用不多。不過,Log-Cosh處處二階可微,這在一些機器學習模型中,還是很有用的。例如XGBoost,就是采用牛頓法來尋找最優點。而牛頓法就需要求解二階導數(Hessian)。因此對於諸如XGBoost這類機器學習框架,損失函數的二階可微是很有必要的。但Log-cosh損失也並非完美,其仍存在某些問題。比如誤差很大的話,一階梯度和Hessian會變成定值,這就導致XGBoost出現缺少分裂點的情況。

Quantile Loss 分位數損失

通常的回歸算法是擬合訓練數據的期望或者中位數,而使用分位數損失函數可以通過給定不同的分位點,擬合訓練數據的不同分位數。 如下圖

設置不同的分位數可以擬合出不同的直線。

分位數損失函數如下:

\[L_{quantile} = \frac{1}{N}\sum_{i=1}^N \amalg_{y > f(x)}(1-\gamma)\mid y-f(x)\mid + \amalg_{y < f(x)}\gamma \mid y - f(x) \mid \]

該函數是一個分段函數,\(\gamma\) 為分位數系數,\(y\)為真實值,\(f(x)\)為預測值。根據預測值和真實值的大小,分兩種情況來開考慮。\(y > f(x)\) 為高估,預測值比真實值大;\(y < f(x)\)為低估,預測值比真實值小,使用不同過得系數來控制高估和低估在整個損失值的權重

特別的,當\(\gamma = 0.5\) 時,分位數損失退化為平均絕對誤差MAE,也可以將MAE看成是分位數損失的一個特例 - 中位數損失。下圖是取不同的中位點\([0.25,0.5,0.7]\) 得到不同的分位數損失函數的曲線,也可以看出0.5時就是MAE。

總結

均方誤差(Mean Square Error,MSE)和平均絕對誤差(Mean Absolute Error,MAE) 可以說是回歸損失函數的基礎。但是MSE對對離群點(異常值)較敏感,MAE在梯度下降的過程中收斂較慢,就出現各種樣的分段損失函數,在loss值較小的區間使用MSE,loss值較大的區間使用MAE。

  • Huber Loss ,需要一個超參數\(\delta\) ,來定義離群值。$ \text{smooth } L_1$ 是\(\delta = 1\) 的一種情況。
  • Log-Cosh Loss, Log-Cosh是比\(L_2\) 更光滑的損失函數,是誤差值的雙曲余弦的對數.
  • Quantile Loss , 分位數損失,則可以設置不同的分位點,控制高估和低估在loss中占的比重。


免責聲明!

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



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