为什么我们使用损失来更新我们的模型,但使用指标来选择我们需要的模型?

日航

首先,我对为什么我们使用损失来更新模型而使用度量来选择我们需要的模型感到困惑。

也许不是所有的代码,但我见过的大部分代码都是这样,他们使用 EarlyStopping 来监视验证数据上的指标以找到最佳时期(损失和指标不同)。

既然选择了用loss来更新模型,那为什么不用loss来选择模型呢?毕竟,损失和指标并不完全相同。给我的感觉是你是带着这个目的做某事的,然后你用另一个指标来评价,这让我觉得很奇怪。以回归问题为例,当有人用'mse'作为他们的损失时,为什么他们定义metrics=['mae']和监控它以提前停止或降低学习率,我只是不明白,我想知道这样做的好处是什么?

其次,当你的训练数据是不平衡数据并且问题是分类问题时,有些教程会告诉你使用 F1 或 AUC 作为你的指标,他们说这会改善由不平衡数据引起的问题。我不'不知道为什么这些指标可以改善由不平衡数据引起的问题。

第三,我对何时有人向metrics函数中的参数发送多个指标感到困惑compile我不明白为什么是多个,为什么不是一个。定义多个指标相对于一个指标的优势是什么?

我的问题似乎太多了,它们一直困扰着我很长时间。

感谢您的友好回答。


上面的内容是我之前编辑的。有些人认为我的问题太广泛了,所以我想重新组织我的语言。

现在假设存在一个二元分类问题,并且数据不平衡。正类和负类的比例为500:1

我选择DNN作为我的分类模型。我选择cross entropy作为我的loss. 现在的问题是我应该选择cross entropy作为我的metric,还是应该选择其他的,为什么?

我想谈谈我从其他人的答案中得到的信息,即当问题是回归问题时,一般度量和损失是可微的,所以实际上,选择相同的度量和损失,或不同的,完全取决于根据你自己对问题的理解。但是如果是分类问题,我们想要的metric是不可微的,所以我们会选择不同的loss和metric,比如F1andAUC是不可微的。我们为什么不cross entropy直接选择作为度量?

沙漠之舟

问题对于 SO 来说可以说是太宽泛了;尽管如此,这里有几件事希望您会发现有用...

既然选择了用loss来更新模型,那为什么不用loss来选择模型呢?

因为,从数学角度来看,损失是我们必须优化的数量,而从业务角度来看,感兴趣的数量是指标;换句话说,归根结底,作为模型的用户,我们对度量感兴趣,而不是损失(至少对于这两个数量默认不同的设置,例如分类问题)。

也就是说,基于损失选择模型也是一种完全有效的策略;一如既往,有一些主观性,这取决于具体问题。

以回归问题为例,当有人使用'mse'作为他们的损失时,他们为什么定义 metrics=['mae']

这不是常态,也远非标准;通常,对于回归问题,使用损失作为度量也是完全自然的。我同意你的看法,你提到的那种选择似乎不自然,而且一般来说似乎没有多大意义。请记住,因为有人在博客或其他东西中使用它并不一定使它“正确”(或一个好主意),但是如果不考虑特定案例的可能论据,则很难进行一般性论证。

不知道为什么这些指标【F1 or AUC】可以改善数据不平衡导致的问题。

它们不会“改进”任何东西——它们只是更合适而不是准确性,其中在严重不平衡的数据集(考虑 99% 多数类)中的幼稚方法将简单地将所有内容归类为多数类,这将给出99% 的准确率,模型没有学到任何东西。

我对何时有人向函数中的参数指标发送多个指标感到困惑compile我不明白为什么是多个,为什么不是一个。定义多个指标相对于一个指标的优势是什么?

同样,一般来说,没有优势,这也不是常态;但一切都取决于可能的细节。


更新(评论后):将讨论限制在分类设置上(因为在回归中,损失和指标可能是同一件事),类似的问题经常出现,我猜是因为损失和各种可用指标之间的细微差别(准确度、精确度、召回率、F1 分数等)不太了解;考虑例如你的问题的反面:

在 Keras 模型中优化准确性而不是损失

以及其中的链接。引用我自己的链接答案之一

损失和准确性是不同的东西;粗略地说,准确度是我们从业务角度实际感兴趣的,而损失是学习算法(优化器)从数学角度试图最小化的目标函数更粗略地说,您可以将损失视为业务目标(准确性)到数学领域的“转换”,这是分类问题中必不可少的转换(在回归问题中,通常损失和业务目标是相同,或至少原则上可以相同,例如 RMSE)...

您可能还会发现成本函数训练目标与准确度期望目标中的讨论很有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章