损失函数(均方损失L2 Loss,L1 Loss,鲁棒损失)

损失函数:衡量预测值y’ 和真实值y 之间的区别。

L2 Loss(均方损失)

定义:
在这里插入图片描述
蓝色:y=0,y’变化。代表了y’对y的偏离程度。
绿色:e^(-L) ,损失函数的似然函数,似然函数:用样本求模型的参数以获取总体分布。代表y’在哪里取值时,这个y’对应的参数概率是最大的。
橙色:损失函数的梯度
梯度下降中,我们是根据它的负梯度方向来更新参数,所以其导数决定了如何更新我们的参数,即决定了每次更新的step,梯度越大参数更新的力度越大,反正亦然。但是有时我们并不像梯度较大时,step较大,此时可以用L1 Loss。
在这里插入图片描述

L1 Loss

定义:
在这里插入图片描述
绝对值函数在零点处不可导。特点:更新参数力度大小相同。
在这里插入图片描述

Huber’s Robust Loss(鲁棒损失)

结合了L1和L2的优点,避免了劣势。
定义:

<think>好的,用户让我介绍一下smooth L1损失函数的公式。首先,我需要回忆一下这个损失函数的基本概念和应用场景。记得smooth L1损失通常用于回归任务,比如目标检测中的边界框回归,比如Faster R-CNN中就有用到。 用户可能已经知道L1和L2损失,但想了解两者的结合。我应该先回顾L1和L2的公式,然后指出它们各自的缺点,比如L2对异常值敏感,因为平会放大大的误差,而L1在零点处不可导,收敛可能较慢。 接下来,解释smooth L1如何结合两者的优点。当误差较小时,使用类似L2的平项,使得梯度变化平缓,容易收敛;当误差较大时,转为L1的线性项,减少异常值的影响,使训练更稳定。 然后需要给出数学公式,分情况讨论。公式应该是两部分:当绝对误差小于1时,用0.5x&sup2;;否则用|x| - 0.5。这里要注意变量是否带绝对值符号,参数是否有beta,比如有些版本可能有beta参数来控制分界点,但常见的是beta=1的情况,所以可能不需要深入讨论参数的影响,除非用户提到。 另外,要说明导数的部分,因为这对理解优化过程有帮助。在|x| <1时,导数是x,即梯度会随着误差减小而减小,有助于精细调整;当|x| >=1时,导数为±1,避免梯度爆炸。 还要举例应用场景,比如目标检测中的边界框回归,比较与L1、L2的优劣,比如性和收敛速度。 需要确认是否有常见的变体或相关的工作,比如Huber损失是否类似,但可能用户只需要核心的smooth L1,不需要扩展太多,除非提问。但可以稍微提一下Huber作为对比,但重点放在smooth L1本身。 用户可能的疑问点包括:为什么分界点选在1?其实这可能取决于具体实现,有些框架可能允许调整这个阈值,但通常设为1。需要说明这样设计的原因是为了平衡L1和L2的特性。 另外,是否需要给出PyTorch或TensorFlow中的实现示例?如果用户是实践者,可能希望看到代码,但问题只是要求公式和介绍,所以可能不需要,但可以提到在框架中的使用情况。 总结结构应该是:问题背景,L1和L2的不足,smooth L1的提出,公式分解,导数分析,优点总结,应用实例。保持简明,避免冗长,但确保覆盖关键点。</think>Smooth L1 损失函数是一种结合了 L1 和 L2 损失的回归任务损失函数,常用于目标检测(如 Faster R-CNN)等场景。它在处理较大误差时更,同时在较小误差时保持平滑优化特性。 --- ### **公式定义** Smooth L1 损失的数学表达式为: \[ \text{Smooth}_{L1}(x) = \begin{cases} 0.5x^2 & \text{if } |x| < 1 \\ |x| - 0.5 & \text{otherwise} \end{cases} \] 其中 \( x \) 是预测值与真实值的差值(即 \( x = y_{\text{pred}} - y_{\text{true}} \))。 --- ### **核心思想** 1. **小误差时(|x| < 1)**: 使用类似 L2 损失的平项(\( 0.5x^2 \)),梯度随误差减小而减小,优化更稳定,适合精细调整。 2. **大误差时(|x| ≥ 1)**: 退化为 L1 损失的线性项(\( |x| - 0.5 \)),梯度固定为 ±1,避免 L2 损失因平放大异常值的影响。 --- ### **导数特性** - **当 |x| < 1 时**:导数 \( \frac{d}{dx} = x \),梯度随误差减小线性下降。 - **当 |x| ≥ 1 时**:导数 \( \frac{d}{dx} = \pm 1 \),梯度恒定,避免梯度爆炸。 --- ### **优点** - **性**:对异常值的敏感度低于纯 L2 损失(如误差)。 - **收敛性**:比纯 L1 损失在零点处更平滑,优化更高效。 - **平衡性**:综合了 L1 和 L2 的优势,适合需要兼顾精度和稳定性的任务。 --- ### **应用场景** - **目标检测**:用于边界框坐标回归(如 Faster R-CNN)。 - **关键点检测**:预测连续值且需平衡离群点影响的任务。 --- ### **对比 L1/L2 损失** | 损失函数 | 公式 | 特点 | |----------|--------------------|-----------------------------| | L1 | \( |x| \) | 对异常值,但零点不可导。 | | L2 | \( 0.5x^2 \) | 对小误差敏感,易受大误差干扰。 | | Smooth L1| 上述分段函数 | 平衡性与收敛速度。 | --- ### **代码示例(PyTorch)** ```python import torch.nn as nn loss_fn = nn.SmoothL1Loss() # 默认参数 beta=1.0 loss = loss_fn(predictions, targets) ``` 通过这种设计,Smooth L1 在训练中能更高效地处理不同尺度的误差,是回归任务中的常用选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是小蔡呀~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值