Answers:
在骰子系数或类似IoU度量上使用交叉熵的一个令人信服的原因是,梯度更好。
对数的交叉熵梯度类似于,其中p是softmax输出,t是目标。同时,如果我们尝试以不同的形式写骰子系数:2 p t或2pt,则所得的梯度wrtp更加丑陋:2t2和2t(t2-p2)。容易想象p和t都很小,并且梯度急剧上升到某个巨大值的情况。通常,培训似乎会变得更加不稳定。
人们尝试直接使用骰子系数或IoU的主要原因是,实际目标是最大化这些指标,而交叉熵只是一个代理,使用反向传播更容易最大化。此外,通过设计,Dice系数在类不平衡问题上的表现更好:
但是,通常仅通过为每个类别分配损耗乘数来解决类别不平衡问题,从而极大地抑制了网络的积极性,以简单地忽略不经常出现的类别,因此尚不清楚在这些情况下Dice系数是否确实必要。
我将从交叉熵损失开始,这似乎是训练分割网络的标准损失,除非有确实令人信服的理由使用Dice系数。
正如@shimao和@cherub总结的那样,不能说apriori哪种方法在特定数据集上会更好。正确的方法是尝试两者并比较结果。另外,请注意,在进行细分时,“比较结果”并不是那么容易:基于IoU的度量(例如骰子系数)仅涵盖细分质量的某些方面;在某些应用中,需要使用不同的度量,例如平均表面距离或Hausdorff表面距离。如您所见,即使选择正确的质量指标也不是一件容易的事,更不用说选择最佳成本函数了。
我个人对骰子系数有很好的经验。当涉及类不平衡时(某些段比其他段占用更少的像素/体素),它确实的确令人惊讶。另一方面,训练误差曲线变得一团糟:它绝对没有提供关于收敛的信息,因此在这方面,交叉熵获胜。当然,可以/应该通过检查验证错误来绕过此操作。