【问题标题】:Is there a way to do a "neutral" class in a multi-classification problem?有没有办法在多分类问题中做一个“中性”类?
【发布时间】:2019-12-04 07:41:52
【问题描述】:

如果我在做一个多分类问题,有没有办法让一个类本质上成为一个“不确定”类?例如,如果我的模型没有很强的预测,它应该默认为这个类。就像你参加考试一样,有些考试会因错误答案而惩罚你,有些则不会。我想做一个自定义损失函数,它不会因为我的模型猜测中性类而受到惩罚,但如果模型做出错误的预测会受到惩罚。有没有办法做我想做的事?

【问题讨论】:

    标签: machine-learning keras loss-function multiclass-classification


    【解决方案1】:

    对于使用 one-hot 编码的 softmax 输出层的分类器,输出可以解释为输入属于每个类别的概率。例如如果您的模型有输出(猫、狗、青蛙),那么输出为 (0.6, 0.2, 0.2) 意味着输入(根据分类器)有 60% 的机会是猫,每个有 20% 的机会成为一只狗或青蛙。

    在这种情况下,当模型不确定时,它可以(并且将)有一个输出,其中没有一个类特别可能,例如(0.33, 0.33, 0.33)。无需添加单独的“其他”类别。


    除此之外,可能很难训练“不确定”类别,除非您有特定的输入示例要训练模型将其分类为“不确定”。

    【讨论】:

    • 我确实理解这一点,但我想要一种离散的方式来确定预测是否不够强大。我宁愿不必随意决定预测何时足够强的截止值,而只让我的模型仅在具有某种优势时进行预测。
    • 归根结底,预测是否“足够强大”是任意的,至少据我所知
    • 我在答案中添加了更多关于轻松创建“不确定”类别所需的内容
    • 我正在考虑创建自定义损失函数的思路,当我的模型猜测不确定类别时,它会增加一半的平均损失。我的想法是,正确的猜测仍然比猜测不确定要好,但猜测不确定不会像猜测错误那样消极。
    • 这可行。如果您发现它运作良好,请通过发布答案告诉我们
    【解决方案2】:

    我遇到了同样的问题。 我尝试使用中性类,但神经网络要么什么都不放,要么什么都放,这取决于减少的损失。 经过一番搜索,看起来我们正在尝试实现“神经网络不确定性估计”。实现这一目标的方法之一是在您的神经网络中运行您的图像 100 次,并随机退出,然后查看它有多少次命中同一类。

    这篇博文解释得很好:https://www.inovex.de/blog/uncertainty-quantification-deep-learning/

    这个视频还有:https://medium.com/deeplearningmadeeasy/how-to-add-uncertainty-to-your-neural-network-afb5f855e66a

    如果我对此有一些结果,我会通知您并在此处发布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-22
      相关资源
      最近更新 更多