多类多目标分类问题的最佳损失函数

时间:2020-11-01 17:38:31

标签: pytorch classification multilabel-classification multiclass-classification

我有一个分类问题,我不知道如何对这个分类问题进行分类。根据我的理解,

多类分类问题是您具有多个互斥类,并且数据集中的每个数据点只能由一个类标记。例如,在水果的图像分类任务中,标记为苹果的水果数据点不能是橙色,而橙色不能是香蕉,依此类推。在这种情况下,每个数据点只能是Fruits类中的任何一个水果,因此会相应地进行标记。

...为...

多标签分类是一个问题,其中有多组互斥的类可以同时标记数据点。例如,在“汽车的图像分类”任务中,对于汽车类型,标记为轿车的汽车数据点不能是掀背车,掀背车不能是SUV等。同时,与汽车制造商一样,来自大众,福特,梅赛德斯等的汽车数据点也可以标记为一个。因此,在这种情况下,汽车数据点是从两组互斥类的不同集合中标记的。

如果我在这里以错误的方式思考,请纠正我的理解。

现在由于我的问题,我的多个类别的分类问题,让我们说A,B,C,D和E。在这里,每个数据点可以从集合中获得一个或多个类别,如下左所示:< / p>

|-------------|----------|              |-------------|-----------------|
|      X      |     y    |              |      X      |    One-Hot-Y    |
|-------------|----------|              |-------------|-----------------|
|     DP1     |   A, B   |              |     DP1     | [1, 1, 0, 0, 0] |
|-------------|----------|              |-------------|-----------------|
|     DP2     |   C      |              |     DP2     | [0, 0, 1, 0, 0] |
|-------------|----------|              |-------------|-----------------|
|     DP3     |   B, E   |              |     DP3     | [0, 1, 0, 0, 1] |
|-------------|----------|              |-------------|-----------------|
|     DP4     |   A, C   |              |     DP4     | [1, 0, 1, 0, 0] |
|-------------|----------|              |-------------|-----------------|
|     DP5     |   D      |              |     DP5     | [0, 0, 0, 1, 0] |
|-------------|----------|              |-------------|-----------------|

I One-Hot对标签进行编码,如右上方所示。我的问题是:

  1. 我可以使用什么损失函数(最好是在PyTorch中)来训练模型以优化一键编码输出
  2. 我们怎么称呼这种分类问题?多标签还是多类?

谢谢您的回答!

1 个答案:

答案 0 :(得分:0)

我可以使用什么损失函数(最好在PyTorch中)来训练 模型来优化一键编码输出

您可以使用torch.nn.BCEWithLogitsLoss(或MultiLabelSoftMarginLoss,因为它们等效),然后看看这是如何工作的。这是标准方法,其他可能性可能是MultilabelMarginLoss

我们怎么称呼这种分类问题?多标签还是多类?

它是多标签的(因为可以同时存在多个标签)。在一键编码中:

[1, 1, 0, 0, 0], [0, 1, 0, 0, 1] - multilabel
[0, 0, 1, 0, 0] - multiclass
[1], [0] - binary (special case of multiclass)

multiclass不能有多个1,因为所有其他标签都是互斥的。