首先,我很困惑为什么我们使用损失来更新模型,而使用指标来选择我们需要的模型。
也许不是所有的代码,但我见过的大部分代码都是这样,他们使用 EarlyStopping 来监控验证数据的指标以找到最佳时期(损失和指标不同)。
既然选择了使用损失来更新模型,为什么不使用损失来选择模型呢?毕竟,损失和指标并不完全相同。它给我的印象是你这样做是为了这个目的,然后你用另一个指标来评估它,这让我感到很奇怪。以回归问题为例,当有人使用'mse'作为他们的损失时,为什么他们定义
metrics=['mae']
并监控它以提前停止或降低学习率,我只是无法理解,我想知道这样做有什么好处?其次,当你的训练数据是不平衡数据并且问题是分类问题时,一些教程会告诉你使用 F1 或 AUC 作为你的指标,他们说这会改善由不平衡数据引起的问题。我不'不知道为什么这些指标可以改善数据不平衡带来的问题。
metrics
第三,当有人向函数中的参数发送多个指标时,我感到困惑compile
。我不明白为什么是多个,为什么不是一个。定义多个指标而不是一个指标有什么好处?我似乎有太多的问题,他们已经困扰了我很长时间。
谢谢你的好意回答。
上面的内容是我之前编辑的。有些人认为我的问题太宽泛,所以我想重新组织我的语言。
现在假设有一个二分类问题,数据不平衡。正负类的比例为 500:1。
我选择DNN
作为我的分类模型。我选择了cross entropy
作为我的loss
. 现在的问题是我应该选择cross entropy
作为 my metric
,还是应该选择其他东西,为什么?
我想说说我从其他人的回答中得到的信息,就是当问题是回归问题时,一般的metric和loss是可区分的,所以其实选择相同的metrice和loss,或者不同的,完全取决于根据你自己对问题的理解。但是如果问题是分类,我们想要的度量是不可微的,所以我们会选择不同的损失和度量,比如F1
和AUC
,它们是不可微的。我们为什么不cross entropy
直接选择作为衡量标准呢?