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

一、 L1 Loss

1. 函数特性

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

MAE=\frac{\sum_{i=1}^{n}{|f(x_{i})-y_{i}|}}{n}

其中

f(x_{i})
y_{i} 分别表示第
i 个样本的预测值及相应真实值,
n 为样本的个数。

曲线分布如下:

v2-b2c860c4dac12cf8177a4321f72a722c_b.jpg

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

2. 存在的问题

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

二、 L2 Loss

1.函数特性

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

MSE=\frac{\sum_{i=1}^{n}{(f(x_{i})-y_{i})^{2}}}{n}

曲线分布如下:

v2-41f35e12a4d87000f46e7c0d528bd4a3_b.jpg

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

2. 存在的问题

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

三、Smooth L1 Loss

1. 函数特性

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

Smooth

L_{1} = _{0.5x^{2}, |x| < 1}^{|x| - 0.5, |x| > 1}

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

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

曲线分布如下:

v2-d94c30e41bfb27552f246458d2a8c719_b.jpg

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损失函数
鲁棒不鲁棒鲁棒
不稳定解稳定解稳定解
可能多解一个解一个解

对比三种损失函数方程:

v2-595a30e0757b7b50500ad214da3bc72b_b.jpg

对比三种损失函数导数:

v2-1ef1e839073fda525875a4d265c221ff_b.jpg

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

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

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

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

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

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

曲线分布如下:

v2-952fd1b994254f55a09ec45b25aa0432_b.jpg

五、补充知识

1.什么是梯度爆炸?

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

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值