二进制交叉熵和分类交叉熵的混淆

12

我正在使用深度神经网络进行二元分类。每当我使用binary_crossentropy时,我的模型准确性不佳(接近随机预测)。但是,如果我通过将输出层的大小设置为2来使用categorical_crossentropy,则只需1个时期即可获得接近0.90的良好准确性。有人能解释一下这里发生了什么吗?


有趣的现象。您能否给我们提供一些关于您使用的数据集和/或代码的更多细节? - Marcin Możejko
我同意Marcin的观点,更多的信息会非常有帮助。当你使用binary_corssentropy时,输出层的激活函数是什么?当你使用categorical_crossentropy时,输出层的激活函数又是什么?此外,训练集中的类别平衡比例是10比1吗? - Dimosthenis
我在两种情况下使用的激活函数都是softmax。模型在两种情况下都保持不变。只有在二元交叉熵的情况下,最后一层的大小为1,而在分类情况下为2。如果需要其他信息,请告诉我。 - Avijit Dasgupta
1个回答

14

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

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


5
可能已经不再相关了,但出于遗留和清晰度考虑:Softmax 不会返回概率,尽管softmax确保输出层中所有节点的输出之和为1(因此在某种程度上类似于概率)。 - TheLaurens
感谢您的澄清 @TheLaurens! - Nova

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接