我正在训练一个用于检测服装属性的多标签分类模型。我使用Keras进行迁移学习,重训了vgg-19模型的最后几层。
属性总数为1000个,其中约99%是0。像准确率、精确度、召回率等指标全部失效,因为模型可以预测所有都是0,仍能获得很高的分数。诸如二元交叉熵、汉明损失等损失函数在这种情况下也未能奏效。
我使用的是深度时尚数据集。
那么,我应该使用哪些指标和损失函数来正确评估我的模型呢?
回答:
分类交叉熵损失或Softmax损失是由Softmax激活函数和交叉熵损失组成。如果我们使用这种损失函数,我们将训练一个CNN来输出每张图像在C个类别上的概率分布。它用于多类分类。
你需要的是多标签分类,因此你应该使用二元交叉熵损失或Sigmoid交叉熵损失。它是由Sigmoid激活函数和交叉熵损失组成。与Softmax损失不同,它对每个向量分量(类别)是独立的,这意味着为每个CNN输出向量分量计算的损失不受其他分量值的影响。这就是为什么它被用于多标签分类,其中一个元素属于某个类别的判断不应影响对另一个类别的决策。
现在,为了处理类别不平衡,你可以使用加权的Sigmoid交叉熵损失。这样,你将根据正样本的数量/比例来惩罚错误的预测。