深度学习基础:
前言
本文主要总结一下常见目标检测的损失函数以及一些基础的函数,主要损失函数为mask-rcnn涉及到的损失函数包括:
- MSE均方误差损失函数、
- Cross Entropy交叉熵损失函数
- 目标检测中常用的Smooth L1损失函数
- focal loss,log loss
- dice loss ,iou loss
损失函数:
共分为两类,分类问题的损失,和回归问题的损失。
分类损失:
- cross entropy loss
- focal loss
- log loss
回归损失:
- L1 loss
- L2 loss
- smooth L1 loss
均方差损失函数(仅为比较经典)
均方差损失函数常用在最小二乘法中。它的思想是使得各个训练点到最优拟合线的距离最小(平方和最小)。均方差损失函数也是我们最常见的损失函数,定义如下:
其中, a=f(z)=f(w·x+b) :x是输入、w和b是网络的参数、 f(·) 是激活函数。
交叉熵损失函数(分类)
- 熵:是信息论中最基本、最核心的一个概念,它衡量了一个概率分布的随机程度,或者说包含的信息量的大小。
- 交叉熵:的定义与熵类似,不同的是定义在两个概率分布而不是一个概率分布之上。对于离散型随机变量,交叉熵定义为
交叉熵刻画的是两个概率分布之间的距离,或可以说它刻画的是通过概率分布q来表达概率分布p的困难程度,p代表正确答案,q代表的是预测值,交叉熵越小,两个概率的分布约接近。
-
softmax:(指在max的数据经常被取得,而小的数据也能被取得的softmax)计算公式:
softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率的性质),那么我们就可以将它理解成概率,在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标! -
交叉熵损失:计算神经网络gt分数和预测分数之间的差距,交叉熵损失函数公式为:
log loss(二分类)
focal loss(二分类)
focal loss为凯明大神的大作,主要用于解决多分类任务中样本不平衡的现象,可以获得比softmax_cross_entropy更好的分类效果。由log loss改进而来的,为了于log loss进行对比,公式如下:
比log loss多了一个
(
1
−
p
i
)
γ
(1−p i ) γ
(1−pi)γ
Smooth L1损失函数(回归)
Smooth L1损失函数是在Fast R-CNN中被提出,他的bound box的回归方式使用了该损失函数
对于目标检测中的回归问题,最初大多采用均方误差损失 ∣ ∣ y − f ( z ) ∣ ∣ 2 ||y-f(z)||^{2} ∣∣y−f(z)∣∣2 这样反向传播对w或者b求导时仍存在 y − f ( z ) y-f(z) y−f(z) 那么当预测值和目标值相差很大时,就容易造成梯度爆炸。
所以我们将
∣
∣
y
−
f
(
z
)
∣
∣
2
||y-f(z)||^{2}
∣∣y−f(z)∣∣2 这种均方误差形式,转变成
S
m
o
o
t
h
L
1
(
y
−
f
(
z
)
)
Smooth_{L1}(y-f(z))
SmoothL1(y−f(z))这种形式
smoothL1主要公式如下:
- 当预测框与 ground truth 差别过大时,梯度值不至于过大;
- 当预测框与 ground truth 差别很小时,梯度值足够小。
- Smooth L1 Loss结合了L2 Loss收敛更快,且在0点有导数,便于收敛的好处。也在边界区域结合了L1 Loss的好处,让网络对异常值更加robust,能够在偏移值较大时还能拉回来
dice loss
Dice 可以理解为是两个轮廓区域的相似程度,用A、B表示两个轮廓区域所包含的点集,定义为:
或者可表示为: