【问题标题】:What are validation loss units Keras/Tensorflow?什么是验证损失单位 Keras/Tensorflow?
【发布时间】:2020-10-02 19:20:28
【问题描述】:

简介 - 这个问题很简单,我是该领域的新手,在 StackOverFlow 上找不到令人满意的答案。

问题本身—— 准确率单位显然是百分比 (%),但损失和验证损失单位是什么?它们与准确性有何关系?我该如何使用它们?他们的基准目标通常是什么? 问题是 HTR/OCR 字符分类。

例如,这是第 16 个模型损失 0.07 和 val 损失 0.09,它们的真正含义是什么?

【问题讨论】:

  • 损失一般没有单位,只有部分损失有,但一般不会传达任何信息。
  • 是的,而且不同的损失结构/公式也非常不同,以至于它们的损失值范围可能彼此之间存在巨大差异。例如:一个给定的模型/架构在 100 个 epoch 后可能具有 0.15 的平均损失,而 IoU 损失(与联合的交集)公式化,而诸如 Focal Loss 或 L2 损失之类的损失可能在同一阶段的平均损失为 0.01训练。使用其他一些损失公式,损失可能高于 0.5 或 1。因此,没有标准单位来衡量各种损失公式的损失。
  • 我认为它们确实传达了一些信息,即使它们没有单位,就像说数字不传达信息但实际上数字是发明的,因为它们有助于提炼一些有关计数的信息

标签: tensorflow machine-learning keras


【解决方案1】:

主要区别在于,由于您有不同的损失函数,如@Matias Valdenegro 所说,它们没有单位,除了不同损失函数的相同值会产生更好/更差的模型/结果这一事实与其他相比(由于损失函数的构造,binary-crossentropy 的 0.15 损失与 FocalLoss 的 0.15 损失不同)。

但是,我想在这里指出一个不同之处,这在上面的答案中没有提到。

原则上,损失函数的值越低,准确率越高。

并非总是如此。

在上图中,您可以看到 100% 的准确度与 2.0794 的损失有关,而 66.67% 的准确度与 1.8220 的损失有关。

哪个模型更好?

不那么明显(尤其是对于初学者)的答案是:显然是第一个模型。事实是,如果您查看预测,如果第二个模型的所有预测的 pApple 为 0.49,那么您的准确率将是 0%(在大多数情况下已确定阈值为 0.5)。


另一个例子(与上图无关)更加明显:

假设您有两个模型,在测试集上产生 100% 的准确度。

现在假设,如上例所示,所有测试图像都是苹果。

但是,当您查看预测时,第一个模型预测所有苹果的置信度为 0.6,而第二个模型预测所有苹果的置信度为 0.96。如果您从阈值角度考虑,如果预测 > 0.5 为您提供特定类别,那么这两个模型的准确度都是 100%。

但是,如果您查看损失函数值图,您会发现第二个模型的损失要低得多。

始终根据验证集上的最佳损失值保存/检查模型。

【讨论】:

  • 如何准确计算置信度值?
  • 这取决于您所指的内容:有人会说,在二元分类的情况下,如果您的模型预测苹果为 0.9,橙色为 0.1,那么该模型有 90% / 0.9 的信心认为您的水果是橙子。如果我们稍有分歧,预测置信度的想法可能会将我们带到概率模型 --- 贝叶斯网络。
  • 我修改了答案的文字以便更清楚:D
  • 现在好了,我做了一点编辑,更清楚一点,好像我错过了-也许我的坏-,初学者未来的读者也可以。
  • 交叉熵和损失不能互换。交叉熵是一个损失函数。还有许多其他损失函数。
猜你喜欢
  • 2020-05-21
  • 2018-07-08
  • 2019-04-02
  • 2022-08-04
  • 1970-01-01
  • 2021-09-06
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多