0

首先,我很困惑为什么我们使用损失来更新模型,而使用指标来选择我们需要的模型。

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

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

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

metrics第三,当有人向函数中的参数发送多个指标时,我感到困惑compile。我不明白为什么是多个,为什么不是一个。定义多个指标而不是一个指标有什么好处?

我似乎有太多的问题,他们已经困扰了我很长时间。

谢谢你的好意回答。


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

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

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

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

4

1 回答 1

0

对于 SO 来说,问题可以说太宽泛了;不过,这里有几件事希望对您有所帮助...

既然选择了使用损失来更新模型,为什么不使用损失来选择模型呢?

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

也就是说,基于损失选择模型也是一个完全有效的策略。与往常一样,存在一些主观性,这取决于具体问题。

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

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

我不知道为什么这些指标 [F1 或 AUC] 可以改善由不平衡数据引起的问题。

它们没有“改进”任何东西——它们只是更合适而不是准确性,在严重不平衡的数据集(想想 99% 的多数类)中,一种天真的方法将简单地将所有内容归类为多数类,这将给出一个在模型没有学到任何东西的情况下,准确率达到 99%。

当有人向函数中的参数指标发送多个指标时,我感到困惑compile。我不明白为什么是多个,为什么不是一个。定义多个指标而不是一个指标有什么好处?

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


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

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

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

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

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

于 2019-09-02T12:15:59.497 回答