通俗来说,损失函数就是用来表现预测与实际数据的差距程度,衡量模型预测的好坏。 损失函数越小,模型的鲁棒性就越好。
1、均方误差MSE(mean squareerror) MSE表示预测值与目标值之间差值的平方和然后求平均: 优点:各点都连续光滑,方便求导,具有较为稳定的解 缺点:不是特别的稳健。当函数的输入值距离中心值较远的时候,使用梯度下降法求解的时候梯度很大,可能导致梯度爆炸(当权值过大,前面层比后面层梯度变化更快,会引起梯度爆炸问题,而梯度消失是指前面的层比后面的层梯度变化更小,故变化更慢,从而引起梯度消失问题。)。
2、L2 Loss: L2范数损失函数,也被称为最小平方误差(LSE),它是把目标值(Yi)与估计值(f(xi))的差值的平方和(S)最小化: 3、平均绝对误差MAE(Mean Absolute Error Loss) MAE是目标值与预测值之差绝对值的和,表示预测值的平均误差幅度,而不需要考虑误差的方向,范围是0到∞,其公式如下所示: 优点:无论对于什么样的输入值,都有着稳定的梯度,不会导致梯度爆炸问题,具有较为稳健性的解。 缺点:在中心点是折点,不能求导,不方便求解。
4、L1 Loss: L1范数损失函数,也被称为最小绝对值偏差(LAD),最小绝对值误差(LAE)。它是把目标值(Yi)与估计值(f(xi))的绝对差值的总和(S)最小化: MSE和MAE的选择 从梯度的求解以及收敛上,MSE是优于MAE的。MSE处处可导,而且梯度值也是动态变化的,能够快速的收敛;而MAE在0点处不可导,且其梯度保持不变。对于很小的损失值其梯度也很大,在深度学习中,就需要使用变化的学习率,在损失值很小时降低学习率。
对离群(异常)值得处理上,MAE要明显好于MSE。如果离群点(异常值)需要被检测出来,则可以选择MSE作为损失函数;如果离群点只是当做受损的数据处理,则可以选择MAE作为损失函数。
5、smooth L1损失函数 smooth L1是一种将 MSE 与 MAE 结合起来,取两者优点的损失函数,其原理很简单,就是在误差接近 0 时使用 MSE,误差较大时使用 MAE 相比于L2损失函数,其对离群点(指的是距离中心较远的点)、异常值(outlier)不敏感,可控制梯度的量级使训练时不容易跑飞。
总结 存在的问题:
三种Loss用于计算目标检测的Bounding Box Loss时,独立的求出4个点的Loss,然后进行相加得到最终的Bounding Box Loss,这种做法的假设是4个点是相互独立的,实际是有一定相关性的 实际评价框检测的指标是使用IoU,而IoU和Smooth L1是不等价的,多个检测框可能有相同大小的Smooth L1 Loss,但IoU可能差异很大,为了解决这个问题就引入了IoU Loss。
IoU Loss 图中第一行,所有目标的L1 Loss都一样,但是第三个的IoU显然是要大于第一个,并且第3个的检测结果似乎也是好于第一个的。 基于此IoU Loss被提出,其将4个点构成的box看成一个整体进行回归。如图: IoU loss的定义如上,先求出2个框的IoU,然后再求个-ln(IoU),在实际使用中,实际很多IoU常常被定义为IoU Loss = 1-IoU。 其中IoU是真实框和预测框的交集和并集之比,当它们完全重合时,IoU就是1,那么对于Loss来说,Loss是越小越好,说明他们重合度高,所以IoU Loss就可以简单表示为 1- IoU。 显然IoU Loss比 L2 Loss更胜一筹,随着迭代次数的增加具有更低的loss,预测框的更准。