神经网络-损耗和精度相关


11

我对神经网络中的“损失”和“准确性”指标并存感到困惑。双方都应该呈现的比较“精确” yŸ,不是吗?那么这两个冗余在训练时期中的应用不是吗?而且,为什么它们不相关?y^

Answers:


9

日志丢失具有很好的特性,它是一个微分函数。精度可能更重要,并且绝对可以解释,但由于反向传播算法要求损失函数是可微的,因此精度不能直接用于网络的训练。如果您无法直接优化首选损失(如准确性),则可以使用行为类似于代理真实度量的损失函数。如果是二进制分类,则应在最后使用S形和对数损失来近似精度。它们是高度相关的。


6

损失比准确性更普遍。在分类中,您可以达到100%的准确性,其中所有标签都可以正确预测。但是回归或预测呢?没有定义0%和100%

|yhaty|


0

是的,它们都测量y和y_hat的准确性,是的,它们通常是相关的。有时,损失函数可能不是精度,但您仍对测量精度感兴趣,即使您没有直接对其进行优化。Google的TensorFlow MNIST示例最大程度地减少/优化了交叉熵损失,但在报告结果时向用户显示了准确性,这是完全可以的。

有时您不想直接优化准确性。例如,如果您存在严重的班级失衡,则您的模型将始终通过选择最常见的班级来最大程度地提高准确性,但这并不是有用的模型。在这种情况下,熵/对数损失将是更好的损失函数。


7
更重要的是,精度不是微分函数,因此您无法通过它进行反向传播。
Jan van der Vegt,2013年

@JanvanderVegt是的,这很重要
Ryan Zotti

我了解到,在Keras中,我可以在编译功能中放置一个“自定义”评估指标(在这种情况下,通过自定义,我的意思是Keras中没有内置实现,如AUC或F1-Score)。我假设在这种情况下,将在show_accuracy参数设置为True的所有位置使用/显示“自定义”指标,而不是使用“准确性”(例如拟合或评估中)。那是对的吗?
Hendrik

1
@Hendrik是的,您可以,只需创建一个def your_own_metric(y_true, y_pred)函数并将其传递给model.compile(..., metrics=[your_own_metric])
rilut,2016年
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.