dice系数 交叉熵_语义分割中的损失函数

1 交叉熵

信息量:当一个事件发生的概率为

,那么该事件对应的概率的信息量是

信息量的熵:信息量的期望,假设 事件

共有n种可能,发生

的概率为

,那么该事件的熵

为:

相对熵,又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 在机器学习中,P往往用来表示样本的真实分布,Q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是Loss损失值。

从KL散度公式中可以看到Q的分布越接近P(Q分布越拟合P),那么散度值越小,即损失值越小。

因为对数函数是凸函数,所以KL散度的值为非负数。有时会将KL散度称为KL距离,但它并不满足距离的性质:KL散度不是对称的;

KL散度不满足三角不等式。

我们将KL散度公式进行变形:

等式的前一部分恰巧就是p的熵,等式的后一部分,就是交叉熵:

在机器学习中,我们需要评估label和predicts之间的差距,使用KL散度刚刚好,即

,由于KL散度中的前一部分−H(y)不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。

2 为解决样本不平衡的改进

Ohem Cross Entropy Loss

Ohem:Online Hard Example Mining,选择一些hard example作为训练的样本从而改善网络参数效果,hard example指的是有多样性和高损失的样本

Focal Loss

对于二分类的交叉熵损失如下:

一个解决类别不均衡的方法是对类别+1引入权重参数

,则类别-1的权重为

是可以被设置类频数的倒数,或者通过交叉验证设置。以

为平衡参数的交叉熵损失如下:

在训练过程中,容易分类的负样本将占据损失的主要部分,影响梯度的回传。然而

平衡了正样本和负样本的重要性,但是无法区分容易区分的样本和不容易区分的样本。Focal loss则动态调整损失函数,以降低容易区分样本的权重并聚焦不易区分的样本,Focal loss的交叉熵损失定义如下:

为平衡参数的Focal loss的变种如下:

3 Dice Loss

Dice系数,是一种集合相似度度量函数,通常用于计算两个样本的相似度(范围为[0, 1])。

在语义分割中,X是Ground Truth分割图像 ,Y是预测的分割图像。

Dice系数差异函数(Dice loss):

Dice系数是分割效果的一个评判指标,其公式相当于预测结果区域和ground truth区域的交并比,所以它是把一个类别的所有像素作为一个整体去计算Loss的。因为Dice Loss直接把分割效果评估指标作为Loss去监督网络,而且计算交并比时还忽略了大量背景像素,解决了正负样本不均衡的问题,所以收敛速度很快。

Dice Loss和交叉熵函数的比较:

交叉熵损失函数中交叉熵值梯度计算形式类似于

,其中,

输出,

而关于 dice-coefficient 的可微形式,loss 值为

,其关于 p 的梯度形式是比较复杂的:

。极端场景下,当 p 和 t 的值都非常小时,计算得到的梯度值可能会非常大. 通常情况下,可能导致训练更加不稳定。

直接采用 dice-coefficient 或者 IoU 作为损失函数的原因,是因为分割的真实目标就是最大化 dice-coefficient 和 IoU 度量。而交叉熵仅是一种代理形式,利用其在 BP 中易于最大化优化的特点。

另外,Dice-coefficient 对于类别不均衡问题,效果可能更优。然而,类别不均衡往往可以通过简单的对于每一个类别赋予不同的 loss 因子,以使得网络能够针对性的处理某个类别出现比较频繁的情况。因此,对于 Dice-coefficient 是否真的适用于类别不均衡场景,还有待探讨。

4 Lovasz Loss

你可能感兴趣的:(dice系数,交叉熵)