仅对两个 类 使用 categorical_crossentropy

Using categorical_crossentropy for only two classes

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

  • categorical_crossentropy:
    • 每个样本只接受一个正确的 class
    • 将采用 "only" 真正的神经元并使用该神经元进行交叉熵计算
  • binary_crossentropy:
    • 每个样本接受许多正确的 classes
    • 将对"all neurons"进行交叉熵计算,考虑到每个神经元可以是两个class,0和1。

一个 2-class 问题可以建模为:

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

说明

请注意在分类交叉熵(第一个方程)中,y_true 项对于真实神经元仅为 1,使所有其他神经元等于零。

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

现在注意二元交叉熵(图中第二个方程)有两项,一项用于将 1 视为正确的 class,另一项用于将 0 视为正确的 class。