我正在训练一个多标签分类模型来检测衣服的属性。我在 Keras 中使用迁移学习,重新训练 vgg-19 模型的最后几层。
属性总数为 1000 个,其中约 99% 为 0。准确性、精确度、召回率等指标都失败了,因为模型可以预测全零,但仍然获得非常高的分数。二元交叉熵、汉明损失等,在损失函数的情况下都不起作用。
我正在使用深度时尚数据集。
那么,我可以使用哪些指标和损失函数来正确衡量我的模型?
最佳答案
哈桑的建议是不正确的 - 分类交叉熵损失或 Softmax 损失是 Softmax 激活加上交叉熵损失。如果我们使用此损失,我们将训练 CNN 输出每个图像的 C 类的概率。它用于多类分类。
您想要的是多标签分类,因此您将使用二元交叉熵损失或Sigmoid交叉熵损失。它是 Sigmoid 激活加上交叉熵损失。与 Softmax 损失不同,它对于每个向量分量(类)都是独立的,这意味着为每个 CNN 输出向量分量计算的损失不受其他分量值的影响。这就是为什么它被用于多标签分类,其中属于某个类的元素的洞察不应该影响另一个类的决策。
现在,为了处理类别不平衡,您可以使用加权 Sigmoid 交叉熵损失。因此,您将根据正例的数量/比例来惩罚错误的预测。
关于python - 对于负数与正数比率非常高的多标签分类,应使用哪些损失函数和指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59336899/