目标检测回归损失函数——L1、L2、smooth L1

一、 L1 Loss

1. 函数特性

L1 Loss也称为平均绝对值误差(MAE),是指模型预测值f(x)和真实值y之间绝对差值的平均值,公式如下:

其中

分别表示第
个样本的预测值及相应真实值,
为样本的个数。

曲线分布如下:

目标检测回归损失函数——L1、L2、smooth L1_第1张图片

L1损失函数的导数是常量,有着稳定的梯度,所以不会有梯度爆炸的问题。对于离群点造成的惩罚是固定的,不会被放大。

2. 存在的问题

MAE函数虽然连续,但是在0处不可导。而且MAE的导数为常数,所以在较小的损失值时,得到的梯度也相对较大,可能造成模型震荡不利于收敛。

二、 L2 Loss

1.函数特性

L2 Loss也称为均方误差(MSE),是指模型预测值f(x)和真实值y之间差值平方的平均值,公式如下:

曲线分布如下:

目标检测回归损失函数——L1、L2、smooth L1_第2张图片

函数曲线连续,处处可导,随着误差值的减小,梯度也减小,有利于收敛到最小值。

2. 存在的问题

由于采用平方运算,当预测值和真实值的差值大于1时,会放大误差。尤其当函数的输入值距离中心值较远的时候,使用梯度下降法求解的时候梯度很大,可能造成梯度爆炸。同时当有多个离群点时,这些点可能占据Loss的主要部分,需要牺牲很多有效的样本去补偿它,所以MSE损失函数受离群点的影响较大。

三、Smooth L1 Loss

1. 函数特性

简单的说Smooth L1就是一个平滑版的L1 Loss,其公式如下:

Smooth

该函数实际上是一个分段函数,在[-1,1]之间就是L2损失,解决L1在0处有折点,在[-1, 1]区间以外就是L1损失,解决离群点梯度爆炸问题,所以能从以下两个方面限制梯度:

  • 当预测值与真实值误差过大时,梯度值不至于过大;
  • 当预测值与真实值误差很小时,梯度值足够小。

曲线分布如下:

目标检测回归损失函数——L1、L2、smooth L1_第3张图片

2. 存在的问题

在早期的目标检测网络Fast R-CNN中被提出,用于计算Bounding Box的4个坐标值和GT框之间的误差,然后将这4个loss进行相加构成回归损失,但是这种做法假设Bounding Box的4个点是相互独立的,实际上其有一定相关性。并且检测框的评价指标使用的是IOU,和该损失无法等价。

四、L1、L2、Smooth L1对比

L1 Loss由于不会放大损失,所以对离群点的处理上更加鲁棒;

L2 Loss由于处处可导,在0值周围具有较小的梯度值,波动小更加稳定;

Smooth L1 Loss综合了L1和L2 Loss的优点,总结如下:

L1损失函数 L2损失函数 Smooth L1损失函数
鲁棒 不鲁棒 鲁棒
不稳定解 稳定解 稳定解
可能多解 一个解 一个解

对比三种损失函数方程:

目标检测回归损失函数——L1、L2、smooth L1_第4张图片

对比三种损失函数导数:

目标检测回归损失函数——L1、L2、smooth L1_第5张图片

其中x表示预测值和真实值之间的误差值。

L2损失函数的导数是动态变化的,所以x增加也会使损失增加,尤其在训练早起标签和预测的差异大,会导致梯度较大,训练不稳定。

L1损失函数的导数为常数,在模型训练后期标签和预测的差异较小时,梯度值任然较大导致损失函数在稳定值附近波动难以进一步收敛。

Smooth L1损失函数在x较大时,梯度为常数解决了L2损失中梯度较大破坏训练参数的问题,当x较小时,梯度会动态减小解决了L1损失中难以收敛的问题。

所以在目标检测的Bounding box回归上早期会考虑Smooth L1 Loss:

  • 相比于L1 Loss,可以收敛得更快。
  • 相比于L2 Loss,对离群点、异常值不敏感,梯度变化相对更小,训练时不容易跑飞。

曲线分布如下:

目标检测回归损失函数——L1、L2、smooth L1_第6张图片

五、补充知识

1.什么是梯度爆炸?

在深度神经网络中,一般使用反向传播更新权重,由于链式法则误差梯度会在逐层更新中积累,变成非常大的梯度,然后导致网络的权重大幅更新,在极端情况下会权重溢出导致NAN值。

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