python - 哪些损失函数和指标用于具有非常高的负数与正数比率的多标签分类?
问题描述
我正在训练一个用于检测衣服属性的多标签分类模型。我在 Keras 中使用迁移学习,重新训练 vgg-19 模型的最后几层。
属性总数为 1000,其中约 99% 为 0。准确度、精确度、召回率等指标都失败了,因为模型可以预测全零并且仍然获得非常高的分数。二元交叉熵、汉明损失等在损失函数的情况下不起作用。
我正在使用深度时尚数据集。
那么,我可以使用哪些指标和损失函数来正确测量我的模型?
解决方案
哈桑的建议是不正确的——分类交叉熵损失或 Softmax 损失是一个Softmax 激活加上一个交叉熵损失。如果我们使用这种损失,我们将训练一个 CNN 来输出每个图像的 C 类的概率。它用于多类分类。
您想要的是多标签分类,因此您将使用Binary Cross-Entropy Loss或 Sigmoid Cross-Entropy loss。它是Sigmoid 激活加上交叉熵损失。与 Softmax 损失不同,它对于每个向量分量(类)都是独立的,这意味着为每个 CNN 输出向量分量计算的损失不受其他分量值的影响。这就是为什么它被用于多标签分类,其中属于某个类的元素的洞察力不应影响另一个类的决策。
现在为了处理类不平衡,您可以使用加权 Sigmoid 交叉熵损失。因此,您将根据正例的数量/比率来惩罚错误的预测。
推荐阅读
- node.js - MongoParseError: URI 没有主机名、域名和 tld
- sql-server - 列出未连接到的实例下的数据库
- python-3.x - 如何使用 IPOPT 在 Pyomo 中指定渐变
- python - 哈希方法在 python 2 中默认,而不是 python 3
- python - PySpark Foreach
- vb.net - 打开远程桌面并连接到计算机
- curl - 使用 J 从安全链接中读取 CSV 文件
- debugging - ELI5:帮助我了解移动应用(iOS 或 Android)上的功能测试失败时的补救/调试
- struts2 - 如何使用 Struts2 Jquery Grid (sjg:grid) 插件在同一级别上创建具有单个父网格和 2 个子网格的网格
- ios - 如何在 containerView 中重新加载 tableView?