Keras中损失函数和指标的区别是什么?

89

我不清楚在Keras中损失函数(loss function)和指标(metrics)之间的区别。文档对我没有帮助。


2
你读过这个答案了吗? - Marcin Możejko
这些答案(免责声明:我的)可能也会有用:1)Keras如何评估准确性? 2)损失和准确性 - 这些是合理的学习曲线吗? - desertnaut
在回归任务中,通常需要使用相同的值来计算指标(例如 MAE),而在分类任务中,需要使用一些交叉熵损失函数(与典型的“准确性”不同,它会平滑地变化),并且对于度量指标,您需要使用典型的准确性,以便结果易于解释。 - Alaa M.
3个回答

123

损失函数被用来优化您的模型。这个函数将被优化器最小化。

度量指标用于评估您的模型性能。这仅供您参考,与优化过程无关。


48
值得一提的是,这些通常不一样(有人可能会问:为什么?),因为我们需要某种代理函数(损失函数),以在低误差度量方面产生某种影响,因为有些指标不平滑,算法无法进行优化。 - sascha
3
@sascha 将损失视为评估指标的优化友好代理是观察两者关系的好方法。说得非常好! - Shan Dou
为什么我们不把交叉熵也用作指标呢? - skan
@skan 如果你对猫的图片进行分类,当你的算法准确率达到90%时,这意味着10张照片中有9张被正确检测出来了。普通人需要这些指标来理解世界。就我个人而言,我更喜欢直接在寄存器中读取由交叉熵子程序计算得出的二进制浮点数。 - Florian Fasmeyer

32

损失函数是传递给Keras model.compile的一个参数,它在训练模型时进行优化。模型通常会最小化这个损失函数。

与损失函数不同,指标(metric)是另一个参数列表,也是传递给Keras model.compile的,用于评估模型的性能。

例如:在分类问题中,我们希望最小化交叉熵损失(cross-entropy loss),同时使用AUC来评估模型的性能。在这种情况下,交叉熵是损失函数,而AUC是指标(metric)。指标(metric)是一种可以看到模型在验证集上每个训练时期(judging itself on the validation set after each epoch of training)的性能参数。需要注意的是,当想要停止训练模型时,指标(metric)对于一些Keras回调函数(如EarlyStopping)非常重要,以防止在某个特定的训练时期内,该指标(metric)未得到改善。


1
均方误差适用于回归问题,而AUC仅适用于分类问题,因此该示例不好(尽管基本原理是正确的)- 编辑以更正(用交叉熵替换MSE)。 - desertnaut
我们可以使用损失函数来调整超参数吗?还是需要使用性能指标,比如ROC AUC? - undefined

8

我心中有一个牵强的例子:让我们考虑在二维平面上进行线性回归。在这种情况下,损失函数将是均方误差,拟合的直线将使此误差最小化。

然而,出于某种原因,我们非常关注从0到1的曲线下面积,因此这可以成为其中一个指标。在模型最小化均方误差损失函数的同时,我们监测这个指标。


2
一个损失函数需要是可微的才能执行梯度下降,而并非所有的度量函数都是可微的。 - Khelina Fedorchuk
AUC不是用于分类问题吗? - Codearts
你正在思考ROC-AUC。这里的“曲线下面积”是指函数积分。 - Sida Zhou
对于连续结果,我们可以同时将均方根误差(RMSE)用作损失函数和性能指标吗? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接