【问题标题】:How to deal with correlation between classes in deep learning classification?深度学习分类中如何处理类之间的相关性?
【发布时间】:2020-02-25 22:37:27
【问题描述】:

我不确定如何处理深度学习分类网络中的某些类相互关联的情况。

例如,在对图像进行分类时,如果输入是狗的照片,输出标签是猫,那么损失应该低于输出标签是飞机或桥梁的情况。我想知道 cs 人之前是如何处理这个问题的,如果有任何论文我可以参考。谢谢!

【问题讨论】:

标签: tensorflow keras deep-learning classification


【解决方案1】:

tl;博士:
你不能/不应该

加长版:
如果,对于您的具体情况,您可以找到一个度量来确定类之间的距离,如下所示:

d[i,j] = f(L[i], L[j])

(其中d[i,j] 是标签为L[i]L[j] 的类之间的距离,f 是这两个类/标签的函数)然后您可以将其合并到您的损失函数中,这样如果d 大,损失会更大,如果d 小,损失会更小。

但是,在您的猫/狗/飞机/桥梁/...的示例中,我无法相信有一种正确的方法可以确定狗/猫或狗/桥梁等之间的距离。如果您真的想要,您当然可以手动确定,例如,如果您的图像包含猫,则预测桥梁比预测狗差 3 倍:

d[cat,dog]=1
d[cat,bridge]=3

但我根本不推荐这个。

我什么时候推荐这个?如果您有许多类和一个正确量化所有类之间相关性的相关矩阵

【讨论】:

  • 对不起猫和狗不是一个很好的例子。我确实有这个相关矩阵。
  • 在这种情况下,您可以创建一个自定义损失函数,将这个距离考虑在内
  • 这就是我要找的。如何创建这个损失函数?谢谢!
  • 或者我应该查找哪些术语?
  • 您可以通过继承keras.losses.Loss来创建自定义损失函数。看看the implementation of built-in loss functions 看看它们是如何实现的。
猜你喜欢
  • 2017-05-20
  • 2021-03-31
  • 2021-06-17
  • 2016-08-21
  • 2014-12-11
  • 2019-06-30
  • 1970-01-01
  • 2020-07-02
  • 1970-01-01
相关资源
最近更新 更多