【问题标题】:Confusion between Binary_crossentropy and Categorical_crossentropyBinary_crossentropy 和 Categorical_crossentropy 之间的混淆
【发布时间】:2016-09-22 12:35:18
【问题描述】:

我正在使用深度神经网络进行二元类分类。每当我使用 binary_crossentropy 时,我的模型都没有给出很好的准确性(它更接近随机预测)。但是,如果我通过将输出层的大小设置为 2 来使用分类交叉熵,那么我仅在 1 个时期内就获得了良好的准确度,接近 0.90。谁能解释一下这里发生了什么?

【问题讨论】:

  • 有趣的现象。您能否向我们提供有关您使用的数据集和/或代码的更多详细信息?
  • 我同意 Marcin 的观点,更多信息会很有帮助。使用 binary_corssentropy 和使用 categorical_crossentropy 时,输出层的激活函数是什么?另外,训练集中的类平衡是10比1吗?
  • 我在这两种情况下使用的激活函数都是 softmax。对于这两种情况,模型保持不变。只有在二元交叉熵的情况下,最后一层的大小为 1,而分类的大小为 2。如果需要任何其他信息,请告诉我。

标签: machine-learning computer-vision deep-learning keras


【解决方案1】:

我在尝试在输出层中使用带有softmax 激活的 binary_crossentropy 时也遇到了这个问题。据我所知,softmax 给出了每个类的概率,所以如果你的输出层有 2 个节点,它将类似于p(x1)p(x2)x1 + x2 = X。因此,如果您只有 1 个输出节点,它将始终等于 1.0 (100%),这就是您接近随机预测的原因(老实说,它将接近您在评估集中的类别分布)。

尝试将其更改为另一种激活方法,例如sigmoidrelu

【讨论】:

  • 所以这可能不再相关,但只是出于遗留和清晰的原因:Softmax 不返回概率,尽管 softmax 确实确保输出层中所有节点的输出加到 1(所以在这样它就像一个概率)。
  • 感谢@TheLaurens 的澄清!
猜你喜欢
  • 2018-06-01
  • 1970-01-01
  • 2015-06-01
  • 2020-01-08
  • 2012-10-21
  • 2011-09-22
  • 2013-01-03
  • 2012-06-23
  • 1970-01-01
相关资源
最近更新 更多