骰子系数损失函数与交叉熵


27

在训练像素分割神经网络(例如全卷积网络)时,您如何决定使用交叉熵损失函数还是Dice系数损失函数?

我意识到这是一个简短的问题,但不确定要提供什么其他信息。我看了一堆有关这两个损失函数的文档,但是无法直观地了解何时使用它们。


为什么不使用动手方法同时使用两者并比较结果。从许多不同的应用领域来看,损失函数的讨论是其扩展研究的主题。由于卷积网络仍然是一个“热门话题”,我猜想大多数论文仍会在将来发表。
天使

Answers:


27

在骰子系数或类似IoU度量上使用交叉熵的一个令人信服的原因是,梯度更好。

对数的交叉熵梯度类似于,其中p是softmax输出,t是目标。同时,如果我们尝试以不同的形式写骰子系数:2 p tptpt2pt2ptp2+t2,则所得的梯度wrtp更加丑陋:2t22ptp+tp2tt2-p22t2(p+t)2。容易想象pt都很小,并且梯度急剧上升到某个巨大值的情况。通常,培训似乎会变得更加不稳定。2t(t2p2)(p2+t2)2pt


人们尝试直接使用骰子系数或IoU的主要原因是,实际目标是最大化这些指标,而交叉熵只是一个代理,使用反向传播更容易最大化。此外,通过设计,Dice系数在类不平衡问题上的表现更好:

但是,通常仅通过为每个类别分配损耗乘数来解决类别不平衡问题,从而极大地抑制了网络的积极性,以简单地忽略不经常出现的类别,因此尚不清楚在这些情况下Dice系数是否确实必要。


我将从交叉熵损失开始,这似乎是训练分割网络的标准损失,除非有确实令人信服的理由使用Dice系数。


pt

3
什么时候将“最大目标”最大化骰子损失?我检查了原始论文,他们都说:“我们获得的实验结果要比通过训练样本重加权优化多项式逻辑损失的同一个网络所计算出的结果要好得多。”这并不是很令人信服。
尼尔·G

@shimao用“丑陋”来表示梯度会爆炸,是正确的吗?
flawr

17

正如@shimao和@cherub总结的那样,不能说apriori哪种方法在特定数据集上会更好。正确的方法是尝试两者并比较结果。另外,请注意,在进行细分时,“比较结果”并不是那么容易:基于IoU的度量(例如骰子系数)仅涵盖细分质量的某些方面;在某些应用中,需要使用不同的度量,例如平均表面距离或Hausdorff表面距离。如您所见,即使选择正确的质量指标也不是一件容易的事,更不用说选择最佳成本函数了。

我个人对骰子系数有很好的经验。当涉及类不平衡时(某些段比其他段占用更少的像素/体素),它确实的确令人惊讶。另一方面,训练误差曲线变得一团糟:它绝对没有提供关于收敛的信息,因此在这方面,交叉熵获胜。当然,可以/应该通过检查验证错误来绕过此操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.