哪些损失函数和度量可用于具有非常高的负数与正数比率的多标签分类?

Mri*_*ain 10 python machine-learning multilabel-classification keras vgg-net

我正在训练一个多标签分类模型来检测衣服的属性。我在 Keras 中使用迁移学习,重新训练 vgg-19 模型的最后几层。

属性总数为 1000,其中约 99% 为 0。准确率、准确率、召回率等指标都失败了,因为该模型可以预测全为零并且仍然获得非常高的分数。二元交叉熵、汉明损失等在损失函数的情况下不起作用。

我正在使用深度时尚数据集。

那么,我可以使用哪些指标和损失函数来正确衡量我的模型?

小智 16

哈桑的建议是不正确的 - 分类交叉熵损失或 Softmax 损失是Softmax 激活加上交叉熵损失。如果我们使用这个损失,我们将训练一个 CNN 为每个图像输出 C 类的概率。它用于多类分类

您想要的是多标签分类,因此您将使用Binary Cross-Entropy Loss或 Sigmoid Cross-Entropy loss。它是Sigmoid 激活加上交叉熵损失。与 Softmax 损失不同,它对于每个向量分量(类)都是独立的,这意味着为每个 CNN 输出向量分量计算的损失不受其他分量值的影响。这就是它用于多标签分类的原因,其中属于某个类的元素的洞察力不应影响另一个类的决策。

现在为了处理类不平衡,您可以使用加权 Sigmoid 交叉熵损失。因此,您将根据正例的数量/比率对错误预测进行惩罚。


zha*_*fei 9

实际上你应该使用tf.nn.weighted_cross_entropy_with_logits. 它不仅适用于多标签分类,而且还可以pos_weight像您所期望的那样关注正类。