【问题标题】:sparse mutilabel last activation/ loss function稀疏多标签最后激活/损失函数
【发布时间】:2020-08-31 05:16:22
【问题描述】:

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

如果我使用sigmoid 作为binary cross-entropy loss 的最后一个激活函数,我在第一个epoch 中获得了98% 的准确率,但它实际上并没有学到任何东西。这是因为我有 800 个类别,平均有 2-3 个真阳性。

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

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

【问题讨论】:

    标签: python machine-learning keras neural-network multilabel-classification


    【解决方案1】:

    我建议你使用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% 的准确率进行此预测 - 因为您正确预测这不是 03、...、100 类。请记住,当您使用 sigmoid 时会发生这种情况 - 对于每个类,您都在预测给定类是否属于该类。

    【讨论】:

    • 是的,但我的问题是如何处理稀疏多标签而不是多类。
    猜你喜欢
    • 2021-10-04
    • 2020-04-28
    • 2020-10-12
    • 2020-04-01
    • 2019-01-03
    • 2018-10-27
    • 2020-09-14
    • 2023-04-03
    • 2021-11-04
    相关资源
    最近更新 更多