多标签或多类......或两者兼而有之?

机器算法验证 分类 深度学习 多级 多标签
2022-03-22 02:22:58

我很难区分 CNN 的多类和多标签分类。

我的理解是,如果我想

  • 对不同品种的狗进行分类,这是一个多标签分类,因为我有相同类别的图像和不同的标签

  • 分类狗和猫,这是一个多标签分类,因为我有不同的图像要识别

现在,如果我的图像包含黑色/白色狗/猫怎么办?在这种情况下,有两个类别(动物、颜色)和每个类别的两个标签。如何为此构建分类器?我想输出两个类的预测(因为我假设任何图像都可以在这些类中标记)。

我正在考虑训练两个分类器,每个类一个,但这样我会失去类之间的联系(这可能很重要)。第二个想法是使用包含标签所有可能排列的单个类。然而,这个解决方案并不能完全说服我,因为这些标签的数量会随着我添加更多的单个标签(即动物和颜色)而迅速增加。

我的直觉正确吗?解决此类问题的正确方法是什么?谢谢

1个回答

定义

在分类任务中,您的目标是学习映射(使用您最喜欢的 ML 算法,例如 CNN)。我们做了两个常见的区别:h:XY

  • 二元与多类:在二元分类中,(例如,一个正类别和一个负类别)。在多类分类中,对于一些换句话说,这只是“有多少可能的答案”的问题。|Y|=2|Y|=kkN
  • 单标签与多标签有多少可能的结果这是指您选择的类别是否相互排斥。例如,如果你试图预测一个物体的颜色,那么你可能在做单标签分类:一个红色物体不能同时是一个黑色物体。另一方面,如果您在图像中进行对象检测,那么由于一个图像中可以包含多个对象,因此您正在进行多标签分类。xX

对网络架构的影响。第一个区别决定了输出单元的数量(即最后一层的神经元数量)。第二个区别决定了您应该为最后一层 + 损失函数选择哪种激活函数。对于单标签,标准选择是具有分类交叉熵的 softmax;对于多标签,切换到具有二元交叉熵的 sigmoid 激活。有关此问题的更详细讨论,请参见此处

创建“混合”组合我将描述一个类似于您问题中的示例。假设我正在尝试对动物进行分类,并且我有兴趣识别以下内容:

  • 颜色(黑色、白色、橙色)
  • 尺寸(小、中、大)
  • 类型(猫、狗、黑猩猩)

这看起来令人困惑:一些标签是互斥的(动物不能同时是黑色和橙色),而另一些则不是(它可以是黑狗)。执行多类分类(或者通常,类别数乘以最大类别的大小;在这种情况下,所有类别的长度相同,为 3)。您只需要仔细定义损失函数:您将为每组 3 个(每个类别)应用一个 softmax 激活,并将其与真实标签进行比较。我创建了一个小草图,我认为它很清楚:k=33=9

在此处输入图像描述

所以最终的损失是这里的整个想法是我们利用关于标签结构的信息(它们是互斥的,哪些不是)以显着减少输出的数量(从指数数 - 所有组合,在这种情况下为 -到一个乘数, )。L(y^,y)=CEcolor+CEsize3333