鲁棒损失函数(Robust Loss Function)是在机器学习和统计模型中用于评估预测与实际观测之间差异的函数,它们的设计目的是为了减少异常值或噪声对模型性能的影响
。
传统损失函数,如均方误差(MSE)或平方损失,在存在异常值时容易使模型性能下降,而鲁棒损失函数通过降低异常值的影响力来提高模型的稳定性和泛化能力。
常见的鲁棒损失函数
-
绝对值损失(L1损失)
L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y, f(x)) = |y - f(x)| L(y,f(x))=∣y−f(x)∣- y y y : 实际值
-
f
(
x
)
f(x)
f(x) : 预测值
绝对值损失对误差的大小不敏感,对异常值的惩罚力度相对均匀。
-
Huber损失
L δ ( y , f ( x ) ) = { 1 2 ( y − f ( x ) ) 2 if ∣ y − f ( x ) ∣ ≤ δ δ ( ∣ y − f ( x ) ∣ − 1 2 δ ) otherwise L_\delta(y, f(x)) = \begin{cases} \frac{1}{2}(y - f(x))^2 & \text{if } |y - f(x)| \leq \delta \\ \delta(|y - f(x)| - \frac{1}{2}\delta) & \text{otherwise} \end{cases} Lδ(y,f(x))={21(y−f(x))2δ(∣y−f(x)∣−21δ)if ∣y−f(x)∣≤δotherwise-
δ
\delta
δ :
阈值
,决定损失函数何时从二次损失转换为线性损失。
Huber损失在误差较小时
表现为二次损失,在误差较大时转换为线性损失,这样可以减小异常值的影响。
-
δ
\delta
δ :
-
Charbonnier损失(也称为Pseudo-Huber损失)
L ( y , f ( x ) ) = ( y − f ( x ) ) 2 + ϵ 2 − ϵ L(y, f(x)) = \sqrt{(y - f(x))^2 + \epsilon^2} - \epsilon L(y,f(x))=(y−f(x))2+ϵ2−ϵ-
ϵ
\epsilon
ϵ :
小正数,防止分母为零。
Charbonnier损失在误差接近零时类似于平方损失,在误差增大时类似于绝对值损失,因此也具有一定的鲁棒性。
-
ϵ
\epsilon
ϵ :
-
Cauchy损失(也称为Lorentzian损失)
L ( y , f ( x ) ) = log ( 1 + ( y − f ( x ) σ ) 2 ) L(y, f(x)) = \log(1 + (\frac{y - f(x)}{\sigma})^2) L(y,f(x))=log(1+(σy−f(x))2)-
σ
\sigma
σ :
尺度参数。
Cauchy损失函数具有无限的渐变
,这意味着它对大误差的影响较小,从而提供了较强的鲁棒性。
-
σ
\sigma
σ :
-
Geman-McClure损失
L ( y , f ( x ) ) = ( y − f ( x ) ) 2 ( y − f ( x ) ) 2 + δ 2 L(y, f(x)) = \frac{(y - f(x))^2}{(y - f(x))^2 + \delta^2} L(y,f(x))=(y−f(x))2+δ2(y−f(x))2-
δ
\delta
δ :
控制损失函数曲线的平滑度
。
Geman-McClure损失在误差较小时表现为二次损失,在误差较大时趋于饱和,减少异常值的影响。
-
δ
\delta
δ :
-
Tukey损失
L ( y , f ( x ) ) = { c 2 ( 1 − [ 1 − ( y − f ( x ) c ) 2 ] 3 ) if ∣ y − f ( x ) ∣ ≤ c c 2 otherwise L(y, f(x)) = \begin{cases} c^2(1 - [1 - (\frac{y - f(x)}{c})^2]^3) & \text{if } |y - f(x)| \leq c \\ c^2 & \text{otherwise} \end{cases} L(y,f(x))={c2(1−[1−(cy−f(x))2]3)c2if ∣y−f(x)∣≤cotherwise-
c
c
c :
截断点,决定损失函数何时达到最大值。
Tukey损失在误差小于某个阈值时
是四次多项式损失,在误差大于阈值时损失达到最大值并保持不变,这有助于抑制异常值的影响。
-
c
c
c :
鲁棒损失函数的共同点
- 它们通常
在误差较小时表现得更平滑,类似平方损失。
- 在误差较大时,它们的
斜率减缓或变得线性
,这减少了异常值对模型的影响。 - 通过引入阈值或尺度参数,
可以调整损失函数对异常值的敏感度。
鲁棒损失函数的应用广泛,不仅限于回归问题,在分类问题
中也有使用,如通过构造适当的损失函数来提高模型对不平衡数据集的鲁棒性。