Python 稀疏多标签最后激活/丢失函数

Python 稀疏多标签最后激活/丢失函数,python,machine-learning,keras,neural-network,multilabel-classification,Python,Machine Learning,Keras,Neural Network,Multilabel Classification,我正在使用keras开发一个多标签分类模型 如果我使用sigmoid作为具有二进制交叉熵损失的最后一个激活函数,我在第一个历元中获得了98%的准确率,但它实际上什么都没有学到。这是因为我有800个类别,平均有2-3个真正的积极因素 所以我改为使用sigmoid和category cross-entropy loss,似乎效果更好,但我认为不推荐使用它 我想要一些关于在这种情况下我应该使用什么激活和丢失的指导。谢谢 我建议您使用softmax激活和分类交叉熵进行多重分类 要了解原因: 使用sof

我正在使用keras开发一个多标签分类模型

如果我使用
sigmoid
作为具有
二进制交叉熵损失的最后一个激活函数,我在第一个历元中获得了98%的准确率,但它实际上什么都没有学到。这是因为我有800个类别,平均有2-3个真正的积极因素

所以我改为使用
sigmoid
category cross-entropy loss
,似乎效果更好,但我认为不推荐使用它


我想要一些关于在这种情况下我应该使用什么激活和丢失的指导。谢谢

我建议您使用
softmax
激活和
分类交叉熵
进行多重分类

要了解原因:

  • 使用
    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
    时会发生这种情况-对于每个类,您都在预测给定类是否属于此类


我建议您使用
softmax
激活和
分类交叉熵
进行多重分类

要了解原因:

  • 使用
    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
    时会发生这种情况-对于每个类,您都在预测给定类是否属于此类


啊,是的,但我的问题是如何处理稀疏多标签而不是多类。啊,是的,但我的问题是如何处理稀疏多标签而不是多类。