Я понимаю, что двоичная кросс-энтропия - это то же самое, что категориальная кросс-энтропия в случае двух классов.
Кроме того, мне ясно, что такое softmax.
Таким образом, я вижу, что категориальная кросс-энтропия просто наказывает один компонент (вероятность), который должен быть равен 1.
Но почему, не могу или не должен использовать двоичную кросс-энтропию на одном горячем векторе?
Normal Case for 1-Label-Multiclass-Mutual-exclusivity-classification:
################
pred = [0.1 0.3 0.2 0.4]
label (one hot) = [0 1 0 0]
costfunction: categorical crossentropy
= sum(label * -log(pred)) //just consider the 1-label
= 0.523
Why not that?
################
pred = [0.1 0.3 0.2 0.4]
label (one hot) = [0 1 0 0]
costfunction: binary crossentropy
= sum(- label * log(pred) - (1 - label) * log(1 - pred))
= 1*-log(0.3)-log(1-0.1)-log(1-0.2)-log(1-0.4)
= 0.887
Я вижу, что в двоичной кросс-энтропии ноль является целевым классом и соответствует следующей горячей кодировке:
target class zero 0 -> [1 0]
target class one 1 -> [0 1]
В итоге: почему мы просто вычисляем / суммируем отрицательную логарифмическую вероятность для прогнозируемого класса. Почему бы нам не наказать другие классы ДОЛЖЕН БЫТЬ НУЛЕВЫМ / НЕ ЭТОМ КЛАССОМ?
В случае, если используется двоичная кросс-энтропия с одним горячим вектором. Вероятность ожидаемого нуля меток также будет наказана.