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

新手上路,请多包涵

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

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

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

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

原文由 Mrinal Jain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 377
2 个回答

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

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

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

原文由 Solaiman Salvi 发布,翻译遵循 CC BY-SA 4.0 许可协议

实际上你应该使用 tf.nn.weighted_cross_entropy_with_logits 。它不仅用于多标签分类,还有一个 pos_weight 可以像你预期的那样在积极的类别上得到很多关注。

原文由 zhao yufei 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏