大家好,這里是好評筆記,公主號:Goodnote,專欄文章私信限時Free。本筆記介紹機器學習中常見的損失函數和代價函數,各函數的使用場景。
熱門專欄
機器學習
機器學習筆記合集
深度學習
深度學習筆記合集
文章目錄
- 熱門專欄
- 機器學習
- 深度學習
- 損失函數
- 一、回歸問題中的損失函數
- 1. 均方誤差(Mean Squared Error, MSE)
- 2. 平均絕對誤差(Mean Absolute Error, MAE)
- 3. 對數余弦損失(Log-Cosh Loss)
- 4. Huber 損失(Huber Loss)
- 5. 平均平方對數誤差(Mean Squared Logarithmic Error, MSLE)
- 總結
- 二、分類問題中的損失函數
- 1. 0-1 損失(0-1 Loss)
- 2. 對數損失(Log Loss)或交叉熵損失(Cross-Entropy Loss)
- 二分類問題
- 多分類問題
- 3. Focal 損失(Focal Loss)
- 4. Hinge 損失(合頁損失)
- 5. Kullback-Leibler 散度(KL Divergence)
- 總結
損失函數
一、回歸問題中的損失函數
1. 均方誤差(Mean Squared Error, MSE)
定義:
MSE = 1 n ∑ i = 1 n ( y i ? y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1?i=1∑n?(yi??y^?i?)2
- 描述:MSE 衡量的是預測值和真實值之間的平方誤差的平均值。對較大的誤差會進行更大的懲罰,因此它對異常值(outliers)非常敏感。
- 應用場景:線性回歸、嶺回歸等模型的損失函數。
- 優點:簡單易于理解,容易求導和計算。
- 缺點:對異常值敏感,可能導致模型被少數異常樣本主導。
2. 平均絕對誤差(Mean Absolute Error, MAE)
定義:
MAE = 1 n ∑ i = 1 n ∣ y i ? y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1?i=1∑n?∣yi??y^?i?∣
- 描述:MAE 衡量的是預測值和真實值之間的絕對誤差的平均值。它對每個誤差的懲罰是線性的,因此對異常值的懲罰不如 MSE 嚴重。
- 應用場景:在對異常值不敏感的回歸任務中使用。
- 優點:對異常值不敏感,能夠更加穩定地反映模型性能。
- 缺點:在優化過程中,絕對值函數不可導,求解困難。
3. 對數余弦損失(Log-Cosh Loss)
定義:
Log-Cosh?Loss = 1 n ∑ i = 1 n log ? ( cosh ? ( y i ? y ^ i ) ) \text{Log-Cosh Loss} = \frac{1}{n} \sum_{i=1}^{n} \log\left(\cosh\left(y_i - \hat{y}_i\right)\right) Log-Cosh?Loss=n1?i=1∑n?log(cosh(yi??y^?i?))
說明: cosh ? ( x ) \cosh(x) cosh(x): 雙曲余弦函數,公式為 cosh ? ( x ) = e x + e ? x 2 \cosh(x) = \frac{e^x + e^{-x}}{2} cosh(x)=2ex+e?x?。
- 描述:對數余弦損失是Huber 損失的變體,它的行為類似于 MAE,同時對大誤差有更小的增長率。
- 應用場景:適用于異常值影響較大的回歸任務。
- 優點:具有平滑性,易于求導,對小誤差敏感而對大誤差魯棒。
- 缺點:相比其他損失函數計算復雜度較高。
4. Huber 損失(Huber Loss)
定義:
L ( y i , y ^ i ) = { 1 2 ( y i ? y ^ i ) 2 if? ∣ y i ? y ^ i ∣ ≤ δ , δ ? ∣ y i ? y ^ i ∣ ? 1 2 δ 2 if? ∣ y i ? y ^ i ∣ > δ . L(y_i, \hat{y}_i) = \begin{cases} \frac{1}{2} (y_i - \hat{y}_i)^2 & \text{if } |y_i - \hat{y}_i| \leq \delta, \\ \delta \cdot |y_i - \hat{y}_i| - \frac{1}{2} \delta^2 & \text{if } |y_i - \hat{y}_i| > \delta. \end{cases} L(yi?,y^?i?)={21?(yi??y^?i?)2δ?∣yi??y^?i?∣?21?δ2?if?∣yi??y^?i?∣≤δ,if?∣yi??y^?i?∣>δ.?
- δ \delta δ: 超參數,定義切換 MSE 和 MAE 的閾值。
- ∣ y i ? y ^ i ∣ |y_i - \hat{y}_i| ∣yi??y^?i?∣: 誤差的絕對值。
- 描述:Huber 損失是MSE 和 MAE 的折中。對于小誤差,使用 MSE;對于大誤差,使用 MAE,從而對異常值有一定的魯棒性。
- 應用場景:回歸問題中存在異常值,但又不希望過于忽略異常值的場景。
- 優點:對小誤差敏感,同時對大誤差具有一定的抗干擾性。
- 缺點:參數 ( δ \delta δ) 需要手動調節,不同數據集效果不同。
5. 平均平方對數誤差(Mean Squared Logarithmic Error, MSLE)
定義:
MSLE = 1 n ∑ i = 1 n ( log ? ( 1 + y i ) ? log ? ( 1 + y ^ i ) ) 2 \text{MSLE} = \frac{1}{n} \sum_{i=1}^{n} \left( \log(1 + y_i) - \log(1 + \hat{y}_i) \right)^2 MSLE=n1?i=1∑n?(log(1+yi?)?log(1+y^?i?))2
- n n n: 數據點的總數。
- y i y_i yi?: 第 i i i 個真實值(必須為非負數)。
- y ^ i \hat{y}_i y^?i?: 第 i i i 個預測值(必須為非負數)。
- log ? ( 1 + x ) \log(1 + x) log(1+x): 對 x x x 加 1 后取自然對數,用于平滑較小的值和避免對 0 的對數操作。
- 描述:MSLE 用于處理目標值差異較大且有顯著指數增長趨勢的情況。它更關注相對誤差,而非絕對誤差。
- 應用場景:如人口增長預測、市場銷量預測等場景。
- 優點:對大數值的預測更穩定,對目標值的比例關系有更好的衡量。
- 缺點:當目標值非常小時,懲罰效果不明顯。
總結
損失函數 | 描述 | 應用場景 | 優點 | 缺點 |
---|---|---|---|---|
均方誤差 (MSE) | 衡量預測值和真實值之間平方誤差的平均值,對較大誤差進行更大懲罰。 | 線性回歸、嶺回歸等 | 簡單易于理解,容易求導。 | 對異常值敏感。 |
平均絕對誤差 (MAE) | 衡量預測值和真實值之間絕對誤差的平均值。 | 對異常值不敏感的回歸任務 | 對異常值不敏感,反映模型性能更穩定。 | 優化困難,絕對值函數不可導。 |
對數余弦損失 (Log-Cosh) | Huber 損失的變體,既能捕捉小誤差,也對大誤差有更小的增長率。 | 異常值影響較大的回歸任務 | 平滑性好,易于求導,適應大誤差和小誤差。 | 計算復雜度高。 |
Huber 損失 (Huber Loss) | 結合MSE和MAE,小誤差時使用 MSE,大誤差時使用 MAE,平衡異常值的影響。 | 存在異常值但不希望完全忽略的場景 | 對小誤差敏感,對大誤差有抗干擾性。 | 需調節參數 (delta)。 |
平均平方對數誤差 (MSLE) | 衡量目標值差異大且有指數增長趨勢的情況,關注相對誤差而非絕對誤差。 | 人口增長預測、市場銷量預測等 | 對大數值預測更穩定,適應有比例關系的數據。 | 對極小值目標效果不佳。 |
二、分類問題中的損失函數
1. 0-1 損失(0-1 Loss)
定義:
L ( y , y ^ ) = { 0 , if? y = y ^ , 1 , if? y ≠ y ^ . L_(y, \hat{y}) = \begin{cases} 0, & \text{if } y = \hat{y}, \\ 1, & \text{if } y \neq \hat{y}. \end{cases} L(?y,y^?)={0,1,?if?y=y^?,if?y=y^?.?
- 描述:0-1 損失表示分類是否正確,0 為正確分類,1 為錯誤分類。它無法直接用于模型優化,只能用于評價模型性能。
- 應用場景:模型性能的評估,如準確率(Accuracy)的計算。
- 優點:簡單直觀,能夠清晰判斷分類是否正確。
- 缺點:不可導,無法用于梯度優化。
2. 對數損失(Log Loss)或交叉熵損失(Cross-Entropy Loss)
- 描述:交叉熵損失衡量的是預測分布和真實分布之間的距離。在二分類與 Sigmoid 函數結合;在多分類與 Softmax 函數結合。
- 應用場景:廣泛用于邏輯回歸、神經網絡等分類任務。
- 優點:能夠很好地度量概率分布之間的差異,梯度計算簡單。
- 缺點:對數據不平衡較為敏感。
二分類問題
在二分類問題中,交叉熵損失衡量真實標簽 ( y y y ) 和預測概率 ( y ^ \hat{y} y^? ) 之間的差異。公式為:
L ( y , y ^ ) = ? [ y log ? ( y ^ ) + ( 1 ? y ) log ? ( 1 ? y ^ ) ] L(y, \hat{y}) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] L(y,y^?)=?[ylog(y^?)+(1?y)log(1?y^?)]
符號說明
- y ∈ { 0 , 1 } y \in \{0, 1\} y∈{0,1}:真實標簽(0 表示負類,1 表示正類)。
- y ^ ∈ [ 0 , 1 ] \hat{y} \in [0, 1] y^?∈[0,1]:預測為正類的概率。
多分類問題
對于 k k k 個類別的多分類問題,交叉熵損失擴展為多個輸出類的加權損失,公式為:
L ( y , y ^ ) = ? ∑ i = 1 k y i log ? ( y ^ i ) L(y, \hat{y}) = - \sum_{i=1}^{k} y_i \log(\hat{y}_i) L(y,y^?)=?i=1∑k?yi?log(y^?i?)
符號說明
- k k k:類別數量。
- y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi?∈{0,1}:第 i i i 類的真實標簽,使用獨熱編碼表示(只有一個值為 1,其余為 0)。
- y ^ i ∈ [ 0 , 1 ] \hat{y}_i \in [0, 1] y^?i?∈[0,1]:模型預測的第 i i i 類的概率,通常通過 softmax 函數獲得。
Sigmoid 函數:
- 公式:
σ ( z ) = 1 1 + e ? z \sigma(z)=\frac1{1+e^{-z}} σ(z)=1+e?z1?- 其中, z z z 是模型的線性輸出,即預測值。
- Sigmoid 函數將模型的線性輸出 z z z轉化為一個介于 0 和 1 之間的值,表示屬于類別 1 的概率。
交叉熵損失:
- 在二分類任務中,真實標簽 y y y通常取 0(負類)或1(正類)。
- 交叉熵損失的公式為: L o s s = ? [ y ? log ? ( p ) + ( 1 ? y ) ? log ? ( 1 ? p ) ] \mathrm{Loss}=-\left[y\cdot\log(p)+(1-y)\cdot\log(1-p)\right] Loss=?[y?log(p)+(1?y)?log(1?p)]
- 其中, p = σ ( z ) p=\sigma(z) p=σ(z)是經過 Sigmoid 函數后模型預測屬于類別 1 的概率。
Softmax 函數:
- 公式: S o f t m a x ( z i ) = e z i ∑ j e z j \mathrm{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} Softmax(zi?)=∑j?ezj?ezi??
- 其中, z i z_i zi? 是第 i i i 個類別的得分, ∑ j e z j \sum_j e^{z_j} ∑j?ezj? 是所有類別的得分的指數和。
- Softmax 函數將每個類別的得分 z i z_i zi? 轉化為一個概率 p i p_i pi?,即樣本屬于第 i i i 個類別的概率。
交叉熵損失:
- 在多分類任務中,真實標簽 y y y 是一個 one-hot 編碼向量,即樣本的真實類別的概率是 1,其他類別的概率是 0。
- 交叉熵損失的公式: Loss = ? ∑ i y i ? log ? ( p i ) \text{Loss} = -\sum_i y_i \cdot \log(p_i) Loss=?i∑?yi??log(pi?)
- 其中, p i p_i pi? 是 Softmax 函數輸出的屬于類別 i i i 的概率, y i y_i yi? 是真實的類別標簽,通常為 0 或 1。
3. Focal 損失(Focal Loss)
定義:
Focal?Loss = ? α t ( 1 ? p ^ t ) γ log ? ( p ^ t ) \text{Focal Loss} = -\alpha_t (1 - \hat{p}_t)^\gamma \log(\hat{p}_t) Focal?Loss=?αt?(1?p^?t?)γlog(p^?t?)
- 其中:
- p ^ t \hat{p}_t p^?t? 是模型對正確類別的預測概率。
- α t \alpha_t αt? 是類別平衡權重,用來調整類別不平衡問題, α t ∈ [ 0 , 1 ] \alpha_t \in [0, 1] αt?∈[0,1],通常用于為不同類別分配不同的權重。
- γ \gamma γ 是調節因子,控制模型對難分類樣本的關注程度,常取值為 0 到 5 之間,通常選取 γ = 2 \gamma = 2 γ=2 效果較好。
注:t 是該樣本的真實類別標簽
- p ^ t \hat{p}_{t} p^?t?: 這是模型對樣本真實類別 t t t 的預測概率。假設樣本屬于類別 t t t,則 p ^ t \hat{p}_{t} p^?t? 就是模型對類別 t t t 的預測概率。如果是二分類任務, t t t 為 1 代表正類,為 0 代表負類;如果是多分類任務, t t t 是類別的索引。
- α t \alpha_{t} αt?: 這是類別 t t t 的權重系數。通過 t t t,可以為當前樣本所屬類別 t t t 分配一個權重 α t \alpha_{t} αt?。對于不平衡數據集來說, α t \alpha_{t} αt? 通常設置為少數類的權重大,主要用來調整損失函數對不同類別樣本的關注程度。
- 描述:Focal 損失是對交叉熵損失的改進,用于解決類別不平衡問題。通過調節參數 ( γ \gamma γ ) 和 ( α \alpha α ),它增加了對困難樣本的關注,降低了對易分類樣本的影響。
- 應用場景:目標檢測中的單階段檢測器(如 RetinaNet),以及其他類別不平衡的分類問題。
- 優點:有效解決類別不平衡問題,增強模型對困難樣本的關注。
- 缺點:參數選擇復雜,訓練時間較長。
4. Hinge 損失(合頁損失)
定義:對于二分類問題:
L ( y , y ^ ) = max ? ( 0 , 1 ? y ? y ^ ) L(y, \hat{y}) = \max(0, 1 - y \cdot \hat{y}) L(y,y^?)=max(0,1?y?y^?)
其中, y ∈ { ? 1 , 1 } y \in \{ -1, 1 \} y∈{?1,1}, y ^ \hat{y} y^?是模型的預測輸出。
- 描述:Hinge 損失用于支持向量機(SVM)中。它在樣本被正確分類且間隔大于 1 時,損失為 0;否則損失為 1。旨在最大化樣本的分類間隔。
- 應用場景:線性支持向量機、核支持向量機等。
- 優點:有助于最大化分類間隔,提高模型的泛化能力。
- 缺點:對于誤差大的樣本損失增長過快。
5. Kullback-Leibler 散度(KL Divergence)
定義:
K L ( p ∥ q ) = ∑ i p ( x i ) log ? p ( x i ) q ( x i ) KL(p \parallel q) = \sum_i p(x_i) \log \frac{p(x_i)}{q(x_i)} KL(p∥q)=i∑?p(xi?)logq(xi?)p(xi?)?
- 描述:KL 散度衡量兩個概率分布之間的差異,常用于無監督學習中的聚類分析。
- 應用場景:概率模型的優化,如變分自編碼器(VAE)、生成對抗網絡(GAN)中的判別模型。
- 優點:對概率分布之間的微小差異非常敏感。
- 缺點:對稀疏分布的概率模型不穩定。
總結
損失函數 | 描述 | 應用場景 | 優點 | 缺點 |
---|---|---|---|---|
0-1 損失 (0-1 Loss) | 分類正確為 0,錯誤為 1,用于衡量分類是否正確。 | 準確率等分類性能評估 | 簡單直觀。 | 不可導,無法用于優化。 |
交叉熵損失 (Cross-Entropy) | 衡量預測分布和真實分布之間的距離,二分類結合 Sigmoid,多分類結合 Softmax。 | 邏輯回歸、神經網絡等分類任務 | 很好地衡量概率分布差異,梯度計算簡單。 | 對數據不平衡敏感。 |
Focal 損失 (Focal Loss) | 交叉熵的改進,通過調節 ( gamma ) 和 ( alpha ),增加對困難樣本的關注,減少易分類樣本影響,解決類別不平衡問題。 | 類別不平衡問題,如目標檢測 (RetinaNet) | 增強對困難樣本的關注,解決類別不平衡。 | 參數選擇復雜,訓練時間較長。 |
Hinge 損失 (合頁損失) | 用于 SVM,正確分類且間隔大于 1 時損失為 0,旨在最大化分類間隔。 | 線性 SVM、核 SVM | 提高泛化能力,有助于最大化分類間隔。 | 對誤差大的樣本損失增長快。 |
KL 散度 (KL Divergence) | 衡量兩個概率分布的差異,常用于無監督學習中的聚類分析。 | 概率模型優化,如 VAE、GAN | 對概率分布的差異敏感。 | 對稀疏分布不穩定。 |