我正在尝试使用神经网络预测概率,但无法确定哪个损失函数最好。交叉熵是我的第一个想法,但其他资源总是在标签所在的二进制分类问题的背景下谈论它,但在我的情况下,我有一个实际概率作为目标。这些选项之一显然是最好的,还是它们都有效,在极端 0/1 区域周围只有微小的差异?
假设 是我的模型最后一层的输出。
交叉熵:
Sigmoid 的均方误差:
钳位均方误差:
当我使用输出时,我将值限制在 .
我正在尝试使用神经网络预测概率,但无法确定哪个损失函数最好。交叉熵是我的第一个想法,但其他资源总是在标签所在的二进制分类问题的背景下谈论它,但在我的情况下,我有一个实际概率作为目标。这些选项之一显然是最好的,还是它们都有效,在极端 0/1 区域周围只有微小的差异?
假设 是我的模型最后一层的输出。
交叉熵:
Sigmoid 的均方误差:
钳位均方误差:
当我使用输出时,我将值限制在 .
如果目标是概率/比率(仅限于开区间 (0, 1) 的观察值),则 beta 回归是一个有用的模型。
Ferrari 和 Cribari-Neto 在他们的论文“建模率和比例的 Beta 回归”(2004 年)中对此进行了介绍。
鉴于您正在尝试预测标量概率值,您在问题中列出的交叉熵公式仅在目标变量是离散的情况下才有效。因此,如果您的问题是“预测从一副牌中抽出匹配牌的几率”,那就没问题了。
交叉熵和 MSE 之间的主要区别在于它们如何惩罚错误的预测。假设给定目标为 1,但预测为 0。在这种情况下,交叉熵实际上是未定义的,但随着预测接近 0,交叉熵损失呈指数级增长。另一方面,您的 MSE 只有 1。哪个更好,这取决于您的应用程序,如果您想避免较大的误差,似乎交叉熵更合适,反之亦然。
第二种和第三种方法的区别仅在于它们如何确保预测在 [0, 1] 范围内,一种使用 sigmoid 函数,另一种使用钳位。鉴于您使用的是神经网络,您应该避免使用钳位函数。钳位函数在钳位范围内与恒等函数相同,但在钳位范围外完全平坦。因此,该函数的梯度在钳位范围内为 1,但在钳位范围外为 0。正因为如此,当人们谈论“dead relu”时,你更有可能遇到同样的死神经问题。