定义。
在分类任务中,您的目标是学习映射(使用您最喜欢的 ML 算法,例如 CNN)。我们做了两个常见的区别:h:X→Y
- 二元与多类:在二元分类中,(例如,一个正类别和一个负类别)。在多类分类中,对于一些。换句话说,这只是“有多少可能的答案”的问题。|Y|=2|Y|=kk∈N
- 单标签与多标签有多少可能的结果。这是指您选择的类别是否相互排斥。例如,如果你试图预测一个物体的颜色,那么你可能在做单标签分类:一个红色物体不能同时是一个黑色物体。另一方面,如果您在图像中进行对象检测,那么由于一个图像中可以包含多个对象,因此您正在进行多标签分类。x∈X
对网络架构的影响。第一个区别决定了输出单元的数量(即最后一层的神经元数量)。第二个区别决定了您应该为最后一层 + 损失函数选择哪种激活函数。对于单标签,标准选择是具有分类交叉熵的 softmax;对于多标签,切换到具有二元交叉熵的 sigmoid 激活。有关此问题的更详细讨论,请参见此处。
创建“混合”组合。我将描述一个类似于您问题中的示例。假设我正在尝试对动物进行分类,并且我有兴趣识别以下内容:
- 颜色(黑色、白色、橙色)
- 尺寸(小、中、大)
- 类型(猫、狗、黑猩猩)
这看起来令人困惑:一些标签是互斥的(动物不能同时是黑色和橙色),而另一些则不是(它可以是黑狗)。执行多类分类(或者通常,类别数乘以最大类别的大小;在这种情况下,所有类别的长度相同,为 3)。您只需要仔细定义损失函数:您将为每组 3 个(每个类别)应用一个 softmax 激活,并将其与真实标签进行比较。我创建了一个小草图,我认为它很清楚:k=3⋅3=9

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