En MNIST For ML Beginners definen la entropía cruzada como
es el valor de probabilidad pronosticado para la clase e es la probabilidad real para esa clase.y ′ i
Pregunta 1
¿No es un problema que (en ) podría ser 0? Esto significaría que tenemos un clasificador realmente malo, por supuesto. Pero piense en un error en nuestro conjunto de datos, por ejemplo, un "obvio" etiquetado como . ¿Simplemente se estrellaría? ¿El modelo que elegimos (activación de softmax al final) básicamente nunca da la probabilidad 0 para la clase correcta? inicio sesión ( y i )1
3
Pregunta 2
He aprendido que la entropía cruzada se define como
¿Que es correcto? ¿Tiene referencias de libros de texto para cualquiera de las versiones? ¿Cómo difieren esas funciones en sus propiedades (como funciones de error para redes neuronales)?
fuente
Respuestas:
Una forma de interpretar la entropía cruzada es verla como una probabilidad de registro (menos) para los datos , bajo un modelo .y′i yi
Es decir, suponga que tiene algún modelo fijo (también conocido como "hipótesis"), que predice para clases sus probabilidades de ocurrencia hipotéticas . Suponga que ahora observa (en realidad) instancias de la clase , instancias de la clase , instancias de la clase , etc. Según su modelo, la probabilidad de que esto ocurra es: Tomando el logaritmo y cambiando el signo:n {1,2,…,n} y1,y2,…,yn k1 1 k2 2 kn n P[data|model]:=yk11yk22…yknn. −logP[data|model]=−k1logy1−k2logy2−⋯−knlogyn=−∑ikilogyi
Si ahora divide la suma de la derecha por el número de observaciones , y denota las probabilidades empíricas como , obtendrá la entropía cruzada:
N=k1+k2+⋯+kn y′i=ki/N −1NlogP[data|model]=−1N∑ikilogyi=−∑iy′ilogyi=:H(y′,y)
Además, la probabilidad logarítmica de un conjunto de datos dado un modelo puede interpretarse como una medida de la "longitud de codificación": el número de bits que espera gastar para codificar esta información si su esquema de codificación se basa en su hipótesis.
Esto se desprende de la observación de que un evento independiente con probabilidad requiere al menos bits para codificarlo (suponiendo una codificación eficiente), y en consecuencia la expresión es literalmente la longitud esperada de la codificación , donde las longitudes de codificación para los eventos se calculan utilizando la distribución "hipotética", mientras que la expectativa se toma sobre la real.yi −log2yi −∑iy′ilog2yi,
Finalmente, en lugar de decir "medida de la longitud de codificación esperada", me gusta mucho usar el término informal "medida de sorpresa". Si necesita muchos bits para codificar un evento esperado de una distribución, la distribución es "realmente sorprendente" para usted.
Con esas intuiciones en mente, las respuestas a sus preguntas se pueden ver de la siguiente manera:
Pregunta 1 . Si. Es un problema cuando el correspondiente no es cero al mismo tiempoy′i . Corresponde a la situación en la que su modelo cree que alguna clase tiene cero probabilidad de ocurrencia y, sin embargo, la clase aparece en realidad. Como resultado, la "sorpresa" de su modelo es infinitamente grande: su modelo no tuvo en cuenta ese evento y ahora necesita infinitos bits para codificarlo. Es por eso que obtienes el infinito como tu entropía cruzada.
Para evitar este problema, debe asegurarse de que su modelo no haga suposiciones precipitadas acerca de que algo es imposible mientras puede suceder. En realidad, las personas tienden a usar funciones sigmoideas o "softmax" como modelos de hipótesis, que son lo suficientemente conservadoras como para dejar al menos alguna posibilidad para cada opción.
Si usa algún otro modelo de hipótesis, depende de usted regularizarlo (también conocido como "suave") para que no plantee hipótesis de ceros donde no debería.
Pregunta 2 . En esta fórmula, generalmente se supone que es o , mientras que es la hipótesis de probabilidad del modelo para la entrada correspondiente. Si observa detenidamente, verá que es simplemente un para datos binarios, un equivalente de la segunda ecuación en esta respuesta.y′i 0 1 yi −logP[data|model]
Por lo tanto, estrictamente hablando, aunque todavía es una probabilidad logarítmica, esto no es sintácticamente equivalente a la entropía cruzada. Lo que algunas personas quieren decir cuando se refieren a una expresión como entropía cruzada es que, de hecho, es una suma sobre entropías cruzadas binarias para puntos individuales en el conjunto de datos: donde y debe interpretarse como las distribuciones binarias correspondientes y .∑iH(y′i,yi), y′i yi (y′i,1−y′i) (yi,1−yi)
fuente
La primera fórmula de logloss que está utilizando es para la pérdida de registro multiclase, donde el subíndice enumera las diferentes clases en un ejemplo. La fórmula supone que un solo en cada ejemplo es 1, y el resto son todos 0.i y′i
Eso significa que la fórmula solo captura el error en la clase de destino. Descarta cualquier noción de errores que pueda considerar "falso positivo" y no le importa cómo se distribuyen las probabilidades predichas además de la probabilidad predicha de la clase verdadera.
Otra suposición es que para las predicciones de cada ejemplo. Una capa softmax hace esto automáticamente: si usa algo diferente, necesitará escalar las salidas para cumplir con esa restricción.∑iyi=1
Pregunta 1
Sí, eso puede ser un problema, pero generalmente no es práctico. Una capa softmax inicializada al azar es extremadamente improbable que produzca un resultado exactolog(yi) y′i=0
0
en cualquier clase. Pero es posible, así que vale la pena permitirlo. Primero, no evalúe para ningún , porque las clases negativas siempre contribuyen con 0 al error. En segundo lugar, en el código práctico puede limitar el valor a algo parecido a la estabilidad numérica; en muchos casos no es obligatorio, pero se trata de una programación defensiva sensata.log( max( y_predict, 1e-15 ) )
Pregunta 2
Esta formulación se usa a menudo para una red con una salida que predice dos clases (generalmente membresía de clase positiva para 1 y negativa para salida 0). En ese caso, posible que solo tenga un valor: puede perder la suma sobre .i i
Si modifica una red de este tipo para tener dos salidas opuestas y usa softmax más la primera definición de logloss, entonces puede ver que, de hecho, es la misma medición de error pero doblando la métrica de error para dos clases en una sola salida.
Si hay más de una clase para predecir la membresía y las clases no son exclusivas, es decir, un ejemplo podría ser cualquiera o todas las clases al mismo tiempo, entonces deberá usar esta segunda formulación. Para el reconocimiento de dígitos, ese no es el caso (un dígito escrito solo debe tener una clase "verdadera")
fuente
Dado , desea optimizar su método de aprendizaje automático para obtener más cerca posible de .ytrue ypredict ytrue
Primera pregunta:
La respuesta anterior ha explicado los antecedentes de su primera fórmula, la entropía cruzada definida en la teoría de la información.
Desde una opinión distinta de la teoría de la información:
puede examinarse a sí mismo que la primera fórmula no tiene penalización por falso positivo (la verdad es falsa pero su modelo predice que es correcta), mientras que la segunda tiene penalización por falso positivo. Por lo tanto, la elección de la primera fórmula o la segunda afectará sus métricas (también conocida como la cantidad estadística que le gustaría usar para evaluar su modelo).
En palabras simples:
Si quiere aceptar que casi todas las personas buenas sean su amigo, pero dispuesto a aceptar que algunas personas malas se conviertan en su amigo, utilice la primera fórmula para el criterio.
Si quieres castigarte a ti mismo aceptando que algunas personas malas sean tu amigo, pero al mismo tiempo tu tasa de aceptación de personas buenas podría ser menor que la primera condición, entonces usa la segunda fórmula.
Mientras, supongo que la mayoría de nosotros somos críticos y nos gustaría elegir el segundo (por lo que muchos paquetes de ML asumen lo que es entropía cruzada).
Segunda pregunta:
Entropía cruzada por muestra por clase:
Entropía cruzada para conjuntos de datos completos clases enteras:
Por lo tanto, cuando solo hay dos clases (K = 2), tendrá la segunda fórmula.
fuente
Esos problemas son manejados por el uso del tutorial de softmax.
Para 1) tienes razón en que softmax garantiza una salida distinta de cero porque expone su entrada. Para las activaciones que no brindan esta garantía (como relu), es simple agregar un término positivo muy pequeño a cada salida para evitar ese problema.
En cuanto a 2), obviamente no son lo mismo, pero la formulación de softmax que dieron se ocupa del problema. Si no usó softmax, esto le haría aprender términos de sesgo enormes que suponen 1 para cada clase para cualquier entrada. Pero dado que normalizan el softmax en todas las clases, la única forma de maximizar la salida de la clase correcta es que sea grande en relación con las clases incorrectas.
fuente
Sí, porque no está definido, pero este problema se evita utilizando en la práctica.log(0) log(yi+ϵ)
(a) es correcto para la predicción de múltiples clases (en realidad es una suma doble), (b) es lo mismo que (a) para la predicción de dos clases. Ambas son entropía cruzada.
Ejemplo:
Suponga que cada dato de entrenamiento tiene la etiqueta , y el modelo predice .xi c′i∈{0,1} ci∈[0,1]
Para 5 puntos de datos, la etiqueta verdadera y la predicción del modelo son:c′i ci
Defina los vectores y comoy′i yi
El ejemplo (1) en convierte en:(y′i,yi)
Tanto (a) como (b) se calculan como:
Derivación:
Supongamos que hay múltiples clases de a . Para el punto de entrenamiento , es equivalente a que es 1 en la posición y 0 en otra parte. Cuando , queremos que la salida del modelo esté cerca de 1. Por lo tanto, la pérdida de se puede definir como , que proporciona . La pérdida sobre todas las clases se puede combinar como:1 K
(xi,c′i) c′i=k y′i=[0,..,1,0,..] kth y′ik=1 yik=p(k|xi) (xi,k) −log(yik) yik→1⇒−log(yik)→0
Cuando , la pérdida de todas las otras clases se deshabilita como , entonces, por ejemplo, cuando la etiqueta verdadera es , la pérdida sería ser:y′ik=1 k′≠k 0log(yik′)=0 y′im=1
La fórmula final sobre todos los puntos de entrenamiento es:
Para la clasificación binaria, tenemos (etiquetas verdaderas) y (predicciones del modelo), por lo tanto (a) puede reescribirse como:y′i0=1−y′i1 yi0=1−yi1
que es lo mismo que (b).
Entropía cruzada (a) sobre clases (una suma)
La entropía cruzada (a) sobre clases es:
Esta versión no se puede usar para la tarea de clasificación. Reutilicemos los datos del ejemplo anterior:
Las probabilidades de clase empírica son: , y ,y′0=3/5=0.6 y′1=0.4
Las probabilidades de clase estimadas por modelo son: , yy0=3/5=0.6 y1=0.4
(a) se calcula como: .−y′0logy0−y′1logy1=−0.6log(0.6)−0.4log(0.4)=0.292
Dos puntos de datos y están clasificados pero y se estiman correctamente.(0,0.8) (1,0.2) y′0 y′1
Si los 5 puntos se clasificaron correctamente como: ,
(c′i,ci)={(0,0.1),(0,0.4),(0,0.2),(1,0.8),(1,0.8)}
(a) sigue siendo el mismo, ya que nuevamente se estima como .y′0 y0=3/5
fuente