Бинарная кроссентропия для наказания всех компонентов одного горячего вектора

Я понимаю, что двоичная кросс-энтропия - это то же самое, что категориальная кросс-энтропия в случае двух классов.

Кроме того, мне ясно, что такое 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]

В итоге: почему мы просто вычисляем / суммируем отрицательную логарифмическую вероятность для прогнозируемого класса. Почему бы нам не наказать другие классы ДОЛЖЕН БЫТЬ НУЛЕВЫМ / НЕ ЭТОМ КЛАССОМ?

В случае, если используется двоичная кросс-энтропия с одним горячим вектором. Вероятность ожидаемого нуля меток также будет наказана.




Ответы (1)


См. мой ответ на аналогичный вопрос. Короче говоря, двоичная формула кросс-энтропии не имеет смысла для горячего вектора. Можно либо применить перекрестную энтропию softmax для двух или более классов, либо использовать вектор (независимых) вероятностей в label, в зависимости от задачи.

Но почему, не могу или не должен использовать бинарную кроссэнтропию на одном горячем векторе?

Вы вычисляете двоичную кросс-энтропию 4 независимых функций:

pred   = [0.1 0.3 0.2 0.4]
label  = [0   1   0   0]

Вывод модели предсказал, что первая функция будет активирована с вероятностью 10%, вторая функция - с вероятностью 30% и так далее. Целевая метка интерпретируется так: все функции отключены, кроме второй. Обратите внимание, что [1, 1, 1, 1] также является совершенно допустимой меткой, то есть это не один горячий вектор, а pred=[0.5, 0.8, 0.7, 0.1] - действительный прогноз, т.е. сумма не должна равняться единице.

Другими словами, ваши вычисления действительны, но для совершенно другой проблемы: неисключительной двоичной классификации с несколькими метками.

См. Также разницу между softmax и сигмоидной функцией кросс-энтропии потерь в тензорном потоке.

person Maxim    schedule 13.11.2017