44 votos

Buena precisión a pesar del alto valor de las pérdidas

Durante el entrenamiento de un clasificador binario de red neuronal simple obtengo un valor de pérdida elevado, utilizando la entropía cruzada. A pesar de ello, el valor de la precisión en el conjunto de validación es bastante bueno. ¿Tiene algún significado? ¿No hay una correlación estricta entre la pérdida y la precisión?

Tengo en formación y validación estos valores: 0,4011 - acc: 0,8224 - val_loss: 0,4577 - val_acc: 0,7826 . Este es mi primer intento de implementar una NN, y acabo de acercarme al aprendizaje automático, por lo que no soy capaz de evaluar adecuadamente estos resultados.

45voto

mike931 Puntos 16

He experimentado un problema similar.

He entrenado mi red neuronal clasificadora binaria con una pérdida de entropía cruzada. Aquí el resultado de la entropía cruzada en función de la época. El rojo es para el conjunto de entrenamiento y el azul es para el conjunto de prueba.

Cross entropy as a function of epoch.

Al mostrar la precisión, tuve la sorpresa de obtener una mejor precisión para el epoch 1000 en comparación con el epoch 50, ¡incluso para el conjunto de pruebas!

Accuracy as a function of epoch

Para entender las relaciones entre la entropía cruzada y la exactitud, he escarbado en un modelo más sencillo, la regresión logística (con una entrada y una salida). A continuación, me limito a ilustrar esta relación en 3 casos especiales.

En general, el parámetro donde la entropía cruzada es mínima no es el parámetro donde la precisión es máxima. Sin embargo, cabe esperar que exista alguna relación entre la entropía cruzada y la precisión.

[En lo que sigue, asumo que usted sabe qué es la entropía cruzada, por qué la usamos en lugar de la precisión para entrenar el modelo, etc. Si no es así, por favor, lee esto primero: ¿Cómo interpretar una puntuación de entropía cruzada? ]

Ilustración 1 Se trata de demostrar que el parámetro en el que la entropía cruzada es mínima no es el parámetro en el que la precisión es máxima, y entender por qué.

Aquí están mis datos de muestra. Tengo 5 puntos, y por ejemplo la entrada -1 ha llevado a la salida 0. Sample of 5 points

Entropía cruzada. Tras minimizar la entropía cruzada, obtengo una precisión de 0,6. El corte entre 0 y 1 se realiza en x=0,52. Para los 5 valores, obtengo respectivamente una entropía cruzada de: 0.14, 0.30, 1.07, 0.97, 0.43.

Precisión. Después de maximizar la precisión en una cuadrícula, obtengo muchos parámetros diferentes que conducen a 0,8. Esto se puede mostrar directamente, seleccionando el corte x=-0,1. Bueno, también se puede seleccionar x=0,95 para cortar los conjuntos.

En el primer caso, la entropía cruzada es grande. En efecto, el cuarto punto está alejado del corte, por lo que tiene una gran entropía cruzada. En concreto, obtengo respectivamente una entropía cruzada de 0.01, 0.31, 0.47, 5.01, 0.004.

En el segundo caso, la entropía cruzada también es grande. En ese caso, el tercer punto está lejos del corte, por lo que tiene una entropía cruzada grande. Obtengo respectivamente una entropía cruzada de 5e-5, 2e-3, 4,81, 0,6, 0,6.

El $a$ minimizando la entropía cruzada es 1,27. Para este $a$ podemos mostrar la evolución de la entropía cruzada y la precisión cuando $b$ varía (en el mismo gráfico). Small data example

Ilustración 2 Aquí tomo $n=100$ . Tomé los datos como una muestra bajo el modelo logit con una pendiente $a=0.3$ y una intercepción $b=0.5$ . He seleccionado una semilla para que tenga un gran efecto, pero muchas semillas conducen a un comportamiento relacionado.

Aquí, sólo trazo el gráfico más interesante. El $b$ minimizando la entropía cruzada es de 0,42. Para este $b$ podemos mostrar la evolución de la entropía cruzada y la precisión cuando $a$ varía (en el mismo gráfico). Medium set

Aquí hay algo interesante: la trama se parece a mi problema inicial. La entropía cruzada está aumentando, el seleccionado $a$ se hace tan grande, sin embargo la precisión sigue aumentando (y luego deja de aumentar).

No pudimos seleccionar el modelo con esta mayor precisión (primero porque aquí sabemos que el modelo subyacente es con $a=0.3$ !).

Ilustración 3 Aquí tomo $n=10000$ con $a=1$ y $b=0$ . Ahora, podemos observar una fuerte relación entre la precisión y la entropía cruzada.

Quite large data

Creo que si el modelo tiene suficiente capacidad (suficiente para contener el modelo verdadero), y si los datos son grandes (es decir, el tamaño de la muestra llega al infinito), entonces la entropía cruzada puede ser mínima cuando la precisión es máxima, al menos para el modelo logístico. No tengo ninguna prueba de esto, si alguien tiene una referencia, por favor, compártala.

Bibliografía: El tema que relaciona la entropía cruzada y la precisión es interesante y complejo, pero no encuentro artículos que lo traten... Estudiar la precisión es interesante porque a pesar de ser una regla de puntuación impropia, todo el mundo puede entender su significado.

Nota: En primer lugar, me gustaría encontrar una respuesta en este sitio web, los posts que tratan de la relación entre la precisión y la entropía cruzada son numerosos pero con pocas respuestas, véase: Las entropías cruzadas de entrenamiento y de prueba comparables dan lugar a precisiones muy diferentes ; La pérdida de validación disminuye, pero la precisión de la validación empeora ; Duda sobre la función de pérdida de entropía cruzada categórica ; Interpretación de la pérdida de registros como porcentaje ...

19voto

cvheifner Puntos 11

Una cosa importante a tener en cuenta también es que la entropía cruzada no es una acotado pérdida. Lo que significa que una sola predicción muy errónea puede hacer que su pérdida "explote". En ese sentido, es posible que haya uno o unos pocos valores atípicos que se clasifiquen extremadamente mal y que hagan explotar la pérdida, pero al mismo tiempo su modelo sigue aprendiendo en el resto del conjunto de datos.

En el siguiente ejemplo utilizo un conjunto de datos muy sencillo en el que hay un valor atípico en los datos de prueba. Hay 2 clases "cero" y "uno".

Este es el aspecto del conjunto de datos:

enter image description here

Como puede ver, las dos clases son extremadamente fáciles de separar: por encima de 0,5 es la clase "cero". También hay un único valor atípico de la clase "uno" en medio de la clase "cero" sólo en el conjunto de prueba. Este valor atípico es importante, ya que afectará a la función de pérdida.

Entreno una red neuronal de 1 oculta en este conjunto de datos, puedes ver los resultados:

enter image description here

La pérdida empieza a aumentar, pero la precisión sigue aumentando sin embargo.

El histograma de la función de pérdida por muestras muestra claramente el problema: la pérdida es realmente muy baja para la mayoría de las muestras (la barra grande en 0) y hay un valor atípico con una pérdida enorme (barra pequeña en 17). Dado que la pérdida total es la media, se obtiene una pérdida elevada en ese conjunto, a pesar de que el rendimiento es muy bueno en todos los puntos menos en uno.

enter image description here

Bonus: Código para los datos y el modelo

import tensorflow.keras as keras
import numpy as np

np.random.seed(0)
x_train_2 = np.hstack([1/2+1/2*np.random.uniform(size=10), 1/2-1.5*np.random.uniform(size=10)])
y_train_2 = np.array([0,0,0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1])
x_test_2 = np.hstack([1/2+1/2*np.random.uniform(size=10), 1/2-1.5*np.random.uniform(size=10)])
y_test_2 = np.array([0,0,0,1,0,0,0,0,0,0, 1,1,1,1,1,1,1,1,1,1])

keras.backend.clear_session()
m = keras.models.Sequential([
    keras.layers.Input((1,)),
    keras.layers.Dense(3, activation="relu"),
    keras.layers.Dense(1, activation="sigmoid")
])
m.compile(
    optimizer=keras.optimizers.Adam(lr=0.05), loss="binary_crossentropy", metrics=["accuracy"])
history = m.fit(x_train_2, y_train_2, validation_data=(x_test_2, y_test_2), batch_size=20, epochs=300, verbose=0)

TL;DR

Su pérdida podría estar secuestrada por algunos valores atípicos, compruebe la distribución de su función de pérdida en muestras individuales de su conjunto de validación. Si hay un grupo de valores alrededor de la media, entonces está sobreajustando. Si sólo hay unos pocos valores muy altos por encima de un grupo mayoritario bajo, entonces su pérdida está siendo afectada por los valores atípicos :)

0voto

cikgureza Puntos 31

Ahstat ofrece muy buenas ilustraciones.

Inspirado por estas ilustraciones, concluyo a 2 posibles razones. 1. El modelo es demasiado simple para extraer las características necesarias para la predicción. En su ilustración 1, se trata de un problema múltiple y se necesita una capa más para obtener una precisión del 100%. 2. 2. Los datos tienen demasiadas etiquetas ruidosas (compare las ilustraciones 1 y 3).

En cuanto a la Ilustración 2, explica por qué no podemos añadir demasiada regularización L1/L2 en el modelo.

0voto

En el caso de la entropía cruzada categórica, la exactitud mide los verdaderos positivos, es decir, la exactitud es un valor discreto, mientras que el logloss de la pérdida softmax, por así decirlo, es una variable continua que mide el rendimiento de los modelos frente a los falsos negativos. Una predicción errónea afecta ligeramente a la precisión, pero penaliza la pérdida de forma desproporcionada. Suponiendo que se tiene un conjunto de datos equilibrado.

¿Cuál es la causa de la discrepancia entre pérdidas y precisión?

  • cuando las predicciones del modelo son más audaces la pérdida disminuye y la precisión se mantiene constante. Lo que implica que el modelo tiene un buen rendimiento con respecto a sus clases

  • una sola predicción errónea con confianza reducirá ligeramente la precisión, pero la pérdida aumentará, es decir, un modelo sobreajustado puede tener una buena precisión pero una mala pérdida

Para la pérdida de entropía cruzada categórica, un modelo tonto que sólo adivina debería tener una pérdida de y=-ln(1/n) donde n es el número de clases que están equilibradas. Aplique además la probabilidad con desequilibrio entre sus clases para calcular primero la pérdida logarítmica esperada como línea de base. Una vez que sepas esto, puedes evaluar lo bien que está entrenado el modelo y utilizar la pérdida como un proxy de la precisión para inferir el rendimiento del modelo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X