仅对两个类别使用categorical_crossentropy

时间:2019-12-06 15:30:37

标签: keras deep-learning neural-network cross-entropy

计算机视觉和深度学习文献通常说,对于二元(两类)问题,应使用binary_crossentropy,对于两类以上的问题,应使用categorical_crossentropy。现在我想知道:是否有任何理由不将后者用于两类问题?

1 个答案:

答案 0 :(得分:0)

  • categorical_crossentropy
    • 每个样本仅接受一个正确的类别
    • 将“仅”获取真实的神经元,并与该神经元进行交叉熵计算
  • binary_crossentropy
    • 每个样本接受许多正确的类别
    • 将对“所有神经元”进行交叉熵计算,考虑到每个神经元可以是0和1两类。

两类问题可以建模为:

  • 2-神经元输出只有一个正确的类别:softmax + categorical_crossentropy
  • 1-neuron输出,一类为0,另一类为1:sigmoid + binary_crossentropy

说明

enter image description here

请注意,在分类交叉熵(第一个方程式)中,y_true对于真正的神经元而言仅是1,从而使所有其他神经元等于零。

等式可以简化为:ln(y_pred[correct_label])

现在请注意二进制交叉熵(图片中的第二个方程)如何具有两个术语,一个用于将1视为正确的类别,另一个用于将0视为正确的类别。