Keras 中的损失函数和度量有啥区别? [复制]
Posted
技术标签:
【中文标题】Keras 中的损失函数和度量有啥区别? [复制]【英文标题】:What is the difference between loss function and metric in Keras? [duplicate]Keras 中的损失函数和度量有什么区别? [复制] 【发布时间】:2018-06-25 03:21:00 【问题描述】:我不清楚 Keras 中损失函数和指标之间的区别。文档对我没有帮助。
【问题讨论】:
你读过this的答案吗? 这些答案(免责声明:我的)也可能有用:1)How does Keras evaluate the accuracy? 2)Loss & accuracy - Are these reasonable learning curves? 在我看来,通常你希望在回归任务中对它们使用相同的值(例如MAE
),而在分类任务中你会使用一些交叉熵损失函数( ,不像典型的“准确度”,它在跳跃中变化,平滑地变化),并且对于您使用典型准确度的指标,结果很容易解释。
【参考方案1】:
损失函数用于优化您的模型。这是将被优化器最小化的函数。
指标用于判断模型的性能。仅供大家查看,与优化过程无关。
【讨论】:
值得补充的是,这些通常不一样(有人可能会问:为什么?)因为我们需要某种代理功能(损失会在低误差指标中产生一定的影响)因为某些指标并不平滑,无法通过正在运行的算法进行优化。 @sascha 将损失视为评估指标的优化友好代理是查看两者之间关系的好方法。说的很好!【参考方案2】:损失函数是传递给 Keras model.compile 的参数,它实际上是在训练模型时优化的。该损失函数通常被模型最小化。
与损失函数不同,度量是传递给 Keras model.compile 的另一个参数列表,它实际上用于判断模型的性能。
例如:在分类问题中,我们希望最小化交叉熵损失,同时还希望使用 AUC 评估模型性能。在这种情况下,交叉熵是损失函数,AUC 是度量。 Metric 是模型在每个训练阶段后在验证集上判断自己时可以看到的模型性能参数。重要的是要注意,该指标对于少数 Keras 回调(例如 EarlyStopping)很重要,当人们想要停止训练模型时,以防指标没有改善以确定否。纪元。
【讨论】:
嗯,MSE 适用于回归问题,而 AUC 仅适用于分类问题,所以这个例子不好(尽管理由是) - 编辑纠正(用交叉熵代替 MSE)。跨度> 【参考方案3】:我想到了一个人为的例子:让我们考虑一下 2D 平面上的线性回归。在这种情况下,损失函数将是均方误差,拟合线将最小化该误差。
但是,出于某种原因,我们对拟合线从 0 到 1 的曲线下面积非常感兴趣,因此这可能是指标之一。我们在模型最小化均方误差损失函数的同时监控这个指标。
【讨论】:
损失函数需要可微才能执行梯度下降,并不是每个度量函数都是可微的。 曲线下面积(AUC)不是用于分类问题吗? 您正在考虑 ROC-AUC。这里的“曲线下面积”是指函数的积分以上是关于Keras 中的损失函数和度量有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Keras 和 TensorFlow 中所有这些交叉熵损失之间有啥区别?
当度量为 SparseTopKCategoricalAccuracy/TopKCategoricalAccuracy 时,在 Keras 中使用啥损失函数?