我正在使用keras开发一个多标签分类模型。
如果我使用sigmoid作为binary cross-entropy loss的最后一个激活函数,我在我的第一个纪元中获得了98%的准确率,但它实际上没有学到任何东西。这是因为我有800个类别,平均有2-3个真阳性。
所以我改为在categorical cross-entropy loss中使用sigmoid,看起来效果更好,但我认为不推荐这样做?
我想要一些关于在这种情况下我应该使用什么激活和损失的指导。谢谢!
发布于 2020-05-15 01:56:20
我建议您使用softmax激活和categorical cross-entropy进行多分类。
要了解原因:
softmax - softmax输出总和为1.0,这使我们能够将其解释为概率。当您想要选择一个可能的选项时-您希望将模型的结果解释为获得给定类的机会。在sigmoid的情况下-你没有这样的解释。但这只是冰山一角。在多分类的情况下-由于给定的接近1.0的概率自动使所有其他概率接近0.0,如果您的激活函数可以捕获这种依赖关系,这是可以的- softmax做到了。在sigmoid的情况下-这样的依赖关系不能直接建模-是什么使得所有的概率都接近0.0,例如,categorical loss而不是binary -想象一下以下情况。您有一个属于类2的示例(可能是0,1,2,...,100 )。如果你预测这个例子属于类1--你仍然有98%的准确率--因为你正确地预测了这不是一个0,3,...,100类。请记住,这就是使用sigmoid时会发生的情况-对于每个类,您都在预测给定的类是否属于这个类。https://stackoverflow.com/questions/61801289
复制相似问题