Explicación de la pérdida de entropía cruzada


35

Supongamos que construyo un NN para la clasificación. La última capa es una capa densa con activación softmax. Tengo cinco clases diferentes para clasificar. Supongamos que para un solo ejemplo de entrenamiento, el true labeles [1 0 0 0 0]mientras las predicciones sean [0.1 0.5 0.1 0.1 0.2]. ¿Cómo calcularía la pérdida de entropía cruzada para este ejemplo?

Respuestas:


50

La fórmula de entropía cruzada toma dos distribuciones, p(x) , la distribución verdadera, y q(x) , la distribución estimada, definida sobre la variable discreta x y está dada por

H(p,q)=xp(x)log(q(x))

Para una red neuronal, el cálculo es independiente de lo siguiente:

  • Qué tipo de capa se usó.

  • Qué tipo de activación se usó, aunque muchas activaciones no serán compatibles con el cálculo porque sus resultados no son interpretables como probabilidades (es decir, sus resultados son negativos, mayores que 1 o no suman 1). Softmax se usa a menudo para la clasificación multiclase porque garantiza una función de distribución de probabilidad con buen comportamiento.

Para una red neuronal, lo normal es ver la ecuación escrita en una forma donde y es el vector realidad del terreno y la y^ algún otro valor tomado directamente de la última capa de salida) es la estimación. Para un solo ejemplo, se vería así:

L=ylog(y^)

donde es el producto punto vectorial.

Su ejemplo realidad del terreno y da toda probabilidad al primer valor, y los otros valores son cero, por lo que podemos ignorarlos, y sólo tiene que utilizar el término correspondiente de su estimación yy^

L=(1×log(0.1)+0×log(0.5)+...)

L=log(0.1)2.303

Un punto importante de los comentarios.

¿Eso significa que la pérdida sería la misma sin importar si las predicciones son [0.1,0.5,0.1,0.1,0.2] o [0.1,0.6,0.1,0.1,0.1] ?

Sí, esta es una característica clave del logloss multiclase, recompensa / penaliza las probabilidades de las clases correctas solamente. El valor es independiente de cómo se divide la probabilidad restante entre clases incorrectas.

A menudo verá esta ecuación promediada en todos los ejemplos como una función de costo . No siempre se cumple estrictamente en las descripciones, pero generalmente una función de pérdida es de nivel inferior y describe cómo una sola instancia o componente determina un valor de error, mientras que una función de costo es de nivel superior y describe cómo se evalúa la optimización de un sistema completo. Una función de costo basada en la pérdida de registro multiclase para un conjunto de datos de tamaño N podría verse así:

J=1N(i=1Nyilog(y^i))

Muchas implementaciones requerirán que sus valores de verdad básicos estén codificados en caliente (con una sola clase verdadera), porque eso permite una optimización adicional. Sin embargo, en principio, la pérdida de entropía cruzada puede calcularse, y optimizarse, cuando este no es el caso.


1
Bueno. Eso significa que la pérdida sería la misma sin importar si las predicciones son [0.1 0.5 0.1 0.1 0.2] o [0.1 0.6 0.1 0.1 0.1].
Nain

@Nain: Eso es correcto para tu ejemplo. La pérdida de entropía cruzada no depende de cuáles son los valores de las probabilidades de clase incorrectas.
Neil Slater

8

La respuesta de Neil es correcta. Sin embargo, creo que es importante señalar que, si bien la pérdida no depende de la distribución entre las clases incorrectas (solo la distribución entre la clase correcta y el resto), el gradiente de esta función de pérdida sí afecta las clases incorrectas dependiendo de cómo están equivocados Por lo tanto, cuando usa cross-ent en el aprendizaje automático, cambiará los pesos de manera diferente para [0.1 0.5 0.1 0.1 0.2] y [0.1 0.6 0.1 0.1 0.1]. Esto se debe a que el puntaje de la clase correcta está normalizado por los puntajes de todas las otras clases para convertirlo en una probabilidad.


3
¿Puedes elaborarlo con un buen ejemplo?
Nain

@Lucas Adams, ¿puedes dar un ejemplo por favor?
koryakinp

La derivada de CADA y_i (salida softmax) wrt CADA logit z (o el parámetro w mismo) depende de CADA y_i. medium.com/@aerinykim/…
Aaron

2

Veamos cómo se comporta el gradiente de la pérdida ... Tenemos la entropía cruzada como una función de pérdida, que viene dada por

H(p,q)=i=1np(xi)log(q(xi))=(p(x1)log(q(x1))++p(xn)log(q(xn))

xi

xiH(p,q)=xip(xi)log(q(xi)).
xiH(p,q)=p(xi)1q(xi)q(xi)xi.

p(xi)

Me pregunto cómo los paquetes de software manejan un valor predicho de 0, mientras que el valor verdadero era mayor que cero ... Ya que estamos dividiendo por cero en ese caso.


Creo que lo que quieres es tomar derivada wrt el parámetro, no wrt x_i.
Aaron

1

Comencemos por comprender la entropía en la teoría de la información: supongamos que desea comunicar una cadena de alfabetos "aaaaaaaa". Podrías hacer eso fácilmente como 8 * "a". Ahora tome otra cadena "jteikfqa". ¿Hay alguna forma comprimida de comunicar esta cadena? No hay, hay. Podemos decir que la entropía de la segunda cadena es más, ya que, para comunicarla, necesitamos más "bits" de información.

log2(n)log2(1/8)

i=1818log2(18)=3

En la entropía "cruzada", como su nombre lo indica, nos centramos en el número de bits necesarios para explicar la diferencia en dos distribuciones de probabilidad diferentes. El mejor de los casos es que ambas distribuciones son idénticas, en cuyo caso se requiere la menor cantidad de bits, es decir, entropía simple. En términos matemáticos,

H(y,y^)=iyiloge(y^i)

y^y

En pocas palabras: en términos simples, uno podría pensar en la entropía cruzada como la distancia entre dos distribuciones de probabilidad en términos de la cantidad de información (bits) necesaria para explicar esa distancia. Es una forma clara de definir una pérdida que disminuye a medida que los vectores de probabilidad se acercan entre sí.


0

No estoy de acuerdo con Lucas. Los valores anteriores ya son probabilidades. Tenga en cuenta que la publicación original indicó que los valores tenían una activación softmax.

El error solo se propaga a la clase "activa" y la probabilidad Q (i) no cambia si las probabilidades dentro de las otras clases cambian entre sí.


2
Lucas tiene razón. Con la arquitectura descrita por el OP, el gradiente en todos los logits (en oposición a las salidas) no es cero, porque la función softmax los conecta a todos. Entonces el error [gradiente del] en la clase "caliente" se propaga a todas las neuronas de salida.
Neil Slater

+1 para Neil y Lucas
Aaron

-1

El problema es que las probabilidades provienen de una función 'complicada' que incorpora las otras salidas en el valor dado. Los resultados están interconectados, por lo que de esta manera no estamos derivando con respecto al resultado real, sino por todas las entradas de la última función de activación (softmax), para cada uno de los resultados.

piyi

Otra descripción ordenada en gombru.github.io/2018/05/23/cross_entropy_loss .

Creo que usar un sigmoide simple como última capa de activación conduciría a la respuesta aprobada, pero usar softmax indica una respuesta diferente.


1
Bienvenido a Stack Exchange. Sin embargo, lo que escribió no parece ser una respuesta a la pregunta del OP sobre el cálculo de la pérdida de entropía cruzada.
user12075
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.