常见回归损失函数详解:L1 Loss, L2 Loss, Huber Loss

误差损失函数比较

L1 损失函数

L1 损失函数又称为绝对误差损失,其形式为 loss(x) = |x|,即预测值与真实值之间差值的绝对值。该函数对异常值具有鲁棒性,梯度恒定不易爆炸,但由于不可导点和不连续导数,可能导致优化过程中收敛速度变慢。
在这里插入图片描述

L2 损失函数

L2 损失函数也被称为均方误差损失,其形式为 loss(x) = x²。L2 损失对小误差敏感,能有效惩罚较大的偏差,是神经网络中常用的回归损失函数。然而,L2 损失对异常值非常敏感,可能使得模型偏向这些异常样本。
在这里插入图片描述

Huber 损失函数

Huber 损失结合了 L1 和 L2 的优点。其形式为:

  • |x| ≤ δ 时,loss(x) = 0.5 * x²
  • |x| > δ 时,loss(x) = δ * (|x| - 0.5 * δ)

Huber 损失在误差小的情况下与 L2 相同,对结果平滑;在误差大的情况下表现为 L1,提升了对异常值的鲁棒性。
在这里插入图片描述

可视化对比

下图展示了 L1 损失、L2 损失以及 Huber 损失三者在误差不同取值下的对比情况:

L1 损失(绝对误差):对异常值鲁棒,梯度恒定,可能导致模型收敛较慢。

L2 损失(平方误差):对小误差敏感,有助于平滑优化,但容易受异常值影响。

Huber 损失:结合了 L1 和 L2 的优点,小误差时像 L2,大误差时像 L1,更平稳且对异常值鲁棒。
在这里插入图片描述

### L1损失概述 L1损失,也称为绝对误差损失(Absolute Error Loss),衡量的是预测值与真实值之间差别的绝对值总和。这种类型的损失函数对于异常值具有较强的鲁棒性,在某些特定情况下优于平方误差损失。 #### 定义 L1损失定义为预测值 \( \hat{y} \) 和目标值 \( y \) 差距的绝对值平均数[^1]: \[ L_1(y, \hat{y}) = \frac{1}{N}\sum_{i=1}^{N}|y_i - \hat{y}_i| \] 其中 \( N \) 表示样本数量。 #### 计算方法 为了计算L1损失,需遍历所有数据点并累加它们之间的绝对差异,最后取均值得到整体的损失数值。具体实现如下所示: ```python def l1_loss(y_true, y_pred): """ Calculate the mean absolute error (MAE), also known as L1 loss. Parameters: y_true : array-like of shape (n_samples,) Ground truth (correct) target values. y_pred : array-like of shape (n_samples,) Estimated targets as returned by a classifier. Returns: float: The Mean Absolute Error value. """ import numpy as np return np.mean(np.abs(y_true - y_pred)) ``` #### 应用场景 在机器学习和深度学习中,当面对含有较多噪声的数据集或者希望构建稀疏解决方案时,倾向于采用L1正则化项配合其他形式的目标函数一起使用。此外,在图像处理等领域,由于其对离群点不敏感的特点,也被广泛应用。 - **对抗过拟合**:通过引入L1范数惩罚因子至成本函数内部,促使权重矩阵变得稀疏从而简化模型结构。 - **特征选择**:利用Lasso回归中的L1正则化机制自动筛选重要变量。 - **计算机视觉任务**:比如边缘检测、去噪等操作中经常运用此概念来保持边界清晰度的同时减少不必要的细节干扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值