Cross-Entropy

La desventura de entropía cruzada, o desventura de registro, mide la presentación de un modelo de orden cuyo rendimiento es la estimación de la probabilidad en algún punto del rango de 0 y 1. La desventura de entropía cruzada aumenta a medida que la probabilidad anticipada se aleja de la marca real. Así que prever una probabilidad de 0,012 cuando el nombre de la percepción genuina es 1 sería terrible y provocaría una alta estima de la desgracia. Un modelo ideal tendría una pérdida de logaritmo de 0.

El diagrama de arriba muestra el alcance de las estimaciones de desgracia concebibles dada una percepción genuina (isDog = 1). A medida que la probabilidad anticipada se acerca a 1, la desgracia del registro disminuye gradualmente. A medida que la probabilidad anticipada disminuye, sea como fuere, la desgracia del registro aumenta rápidamente. El infortunio del tronco castiga los dos tipos de errores, sin embargo particularmente las expectativas que son ciertas y equivocadas!

La entropía cruzada y el infortunio de los registros son algo único que depende de la configuración, pero en la IA mientras se calculan las tasas de error en algún punto del rango de 0 y 1 se resuelven en algo muy similar.

Código

def CrossEntropy(yHat, y):

    si y == 1:

      volver -log(yHat)

    …sino..:

      return -log(1 – yHat)

Matemáticas

En la clasificación binaria, donde el número de clases M es igual a 2, la entropía cruzada puede ser calculada como:

-(ylog(p)+(1-y)log(1-p))

Si M>2 (es decir, la clasificación multiclase), calculamos una pérdida separada para cada etiqueta de clase por observación y sumamos el resultado.

-∑c=1Myo,clog(po,c)

Nota

M – número de clases (perro, gato, pez)

tronco – el tronco natural

y – indicador binario (0 o 1) si la etiqueta de clase c es la clasificación correcta para la observación o

p – observación de probabilidad prevista o es de clase c

Hinge

Se utiliza para la clasificación.

Código

def Hinge(yHat, y):

    return np.max(0, 1 – yHat * y)

Huber

Típicamente se usa para la regresión. Es menos sensible a los valores atípicos que el MSE ya que trata el error como cuadrado sólo dentro de un intervalo.

Lδ={12(y-y^)2δ((y-y^)-12δ)if|(y-y^)|<δotherwise

Código

def Huber(yHat, y, delta=1.):

    retorno np.where(np.abs(y-yHat) < delta,.5*(y-yHat)**2 , delta*(np.abs(y-yHat)-0.5*delta))

Puede encontrar más información en Huber Loss en Wikipedia.

Kullback-Leibler

Código

def KLDivergence(yHat, y):

    “””

    :param yHat:

    :paramy:

    :volver: KLDiv(yHat || y)

    “””

    devuelve np.sum(yHat * np.log((yHat / y)))

MAE (L1)

Error absoluto medio, o pérdida L1. Excelente visión general debajo de [6] y [10].

Código

def L1(yHat, y):

    devuelve np.suma(np.absoluto(yHat – y))

MSE (L2)

Error de media cuadra, o pérdida de L2. Excelente visión general debajo de [6] y [10].

def MSE(yHat, y):

    return np.sum((yHat – y)**2) / y.size

def MSE_prime(yHat, y):

    Devuelve yHat – y