Разница между Logisti c Loss и Cross Entropy Loss - PullRequest
0 голосов
/ 03 марта 2020

Я запутался в потерях логистики c и перекрестной энтропии в сценарии двоичной классификации Согласно Википедии (https://en.wikipedia.org/wiki/Loss_functions_for_classification), logisti c убыток определяется как:

enter image description here

где v=y*y_hat

кросс-энтропийная потеря определяется как:

enter image description here

Из Википедии (https://en.wikipedia.org/wiki/Loss_functions_for_classification):

Легко проверить, что потери * logisti c и двоичная кросс-энтропия (логарифмические потери) на самом деле одинаковы (до мультипликативная константа 1 / log (2))

Однако, когда я протестировал его с некоторым кодом, я обнаружил, что они не совпадают. Вот код python:

from numpy import exp
from math import log

def cross_entropy_loss(y, yp):
    return -log(1-yp) if y==0 else -log(yp)

def logistic_loss(y, yp):
    return log(1+exp(-y*yp))/log(2)

y, yp = 0, 0.3  # y= {0, 1} for cross_entropy_loss
l1 = cross_entropy_loss(y, yp)
y, yp = -1, 0.3  # y = {-1, 1} for logistic loss
l2 = logistic_loss(y, yp)
print(l1, l2, l1/l2)

y, yp = 1, 0.9
l1 = cross_entropy_loss(y, yp)
l2 = logistic_loss(y, yp)
print(l1, l2, l1/l2)

Вывод показывает, что ни значения потерь не являются одинаковыми, а соотношение между ними не меняется:

0.35667494393873245 1.2325740743522222 0.2893740436056004
0.10536051565782628 0.49218100325603786 0.21406863523949665

Может кто-нибудь объяснить, почему они "на самом деле то же самое"?

...