深度学习分类中如何处理类之间的相关性?
Posted
技术标签:
【中文标题】深度学习分类中如何处理类之间的相关性?【英文标题】:How to deal with correlation between classes in deep learning classification? 【发布时间】:2020-02-25 22:37:27 【问题描述】:我不确定如何处理深度学习分类网络中的某些类相互关联的情况。
例如,在对图像进行分类时,如果输入是狗的照片,输出标签是猫,那么损失应该低于输出标签是飞机或桥梁的情况。我想知道 cs 人之前是如何处理这个问题的,如果有任何论文我可以参考。谢谢!
【问题讨论】:
这可能是Data Science 更合适的问题 【参考方案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 看看它们是如何实现的。以上是关于深度学习分类中如何处理类之间的相关性?的主要内容,如果未能解决你的问题,请参考以下文章