损失函数L1Loss/L2Loss/SmoothL1Loss

本文参考:

PyTorch中的损失函数--L1Loss /L2Loss/SmoothL1Loss - 知乎

 【Smooth L1 Loss】Smooth L1损失函数理解_寻找永不遗憾的博客-CSDN博客_smoothl1loss

为什么使用smooth L1 loss - 知乎

1、L1 Loss

公式:

假设x为预测框和真实框之间的数值差异时,公式为:

导数为:

特点为:

  • L1 loss在零点处不平滑,学习慢
  • L1 损失函数对x的导数是常数,训练后期,x很小时,如果学习率不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。

2、L2 Loss

公式:

假设x为预测框和真实框之间的数值差异时,公式变为:

导数:

 

特点:

  • L2 loss由于是平方增长,因此学习快
  • 导数为2x,当x很大时,导数也很大,训练初期不稳定

 3、Smooth L1 Loss

公式:

导数:

特点:

  • smoothL1 Loss相比L1改进了零点不平滑问题
  • 相比于L2 loss,在x较大的时候不像L2对异常值敏感,是一个缓慢变化的loss

 x啥时较大:比如预测值和GT差比较大的时候。

在图像中,当预测框与GT差别很大时,梯度值不至于过大。当预测框和GT差别很小时,梯度值又足够小。

4、3个loss的比较

共同点:

它们都适用于回归任务

差异点:

L1 Loss适用于简单的模型

L2 Loss适用于特征数值不大

Smooth L1 Loss适用于当特征中有较大的数值

损失函数L1Loss/L2Loss/SmoothL1Loss_第1张图片

你可能感兴趣的:(神经网络,深度学习,人工智能)