4 votos

Pérdida de validación constante y aumento de la precisión de la validación

Estoy entrenando una red totalmente convolucional. La pérdida está disminuyendo mientras que la pérdida de validación se mantiene en su mayor parte. Hay cierta variación en la pérdida de validación.

Pensé que podría sobreajustarse, pero la precisión de la validación está aumentando con cada época. ¿Es esto legítimo? ¿Cómo puede ocurrir algo así? La introducción de la regularización L2 ayudó al principio. La pérdida de validación está en un nivel más bajo pero se mantiene más o menos constante. Los valores grandes de L2 empeoraron la pérdida, la pérdida de validación y la precisión de la validación. Así que me mantuve en torno a 1e-5.

Mi función de pérdida es una entropía cruzada categórica para una etiqueta codificada con un solo disparo. La precisión es simplemente la métrica de "precisión" estándar de Keras.

6voto

Anime_Watcher2 Puntos 1

Respondiendo a la pregunta de si es legítimo: Yo diría que Sí, esto es completamente viable para que la precisión varíe mientras la entropía cruzada permanece igual :

Entropía cruzada (binaria) es: $ - \sum y_{true} \cdot ln(y_{predicted}) + (1 - y_{true}) \cdot ln(1 - y_{predicted}))$

Para los multicomponentes es un poco más complicado pero sigue siendo similar a eso, para el caso multiclase normalmente me lo imagino como un multiplicación por elementos de una matriz con etiquetas verdaderas, por ejemplo

[1 0 0]
[0 1 0]
[0 1 0]

Con una matriz de predicciones (el logaritmo se aplica a la matriz de abajo - al igual que en la ecuación anterior para $y_{predicted}$ ), por ejemplo

[0.5 0.1 0.2]
[0.1 0.7 0.3]
[0.2 0.7 0.2]

Y luego se suman todas las cosas y se dividen por el número de elementos.

En el caso perfecto estaremos tomando el logaritmo de 1, lo que nos dará un valor de 0. En otras palabras, en el caso multiclase la entropía cruzada sólo suma los valores de la etiqueta real. En las dos matrices anteriores la entropía cruzada sería:

$$ - ln(0.5 * 0.7 * 0.7) / 3 = 0.47 $$

La precisión de Keras se mide como K.mean(K.equal(y_true, K.round(y_pred))) o utilizando K.argmax en el caso de la multiclase que funciona más o menos igual que la redonda, pero la redonda es más fácil de entender.

En el caso multiclase Keras utiliza argmax que se puede decir que redondea el mayor valor y considera que es la clase predicha. Ver la descripción completa de la precisión de Keras en la respuesta como Ciencia de los datos

Problema en cuestión

Su pérdida de entropía cruzada es superior a 1, por lo que la mayoría de las predicciones son inferiores a 0,368 (es decir $1/e$ ) que es bastante baja. Y además no necesita el mayor valor previsto para la clase, es decir, imagina el siguiente caso:

Etiquetas verdaderas:

[1 0 0]
[0 0 1]
[0 1 0]

Etiquetas previstas:

[0.3 0.5 0.1]
[0.2 0.5 0.4]
[0.3 0.5 0.2]

La precisión es:

$$ \frac{[1,0,0] \cdot [0,1,0] + [0,0,1] \cdot [0,1,0] + [0,1,0] \cdot [0,1,0]}{3} = \frac{0 + 0 + 1}{3} = 33.3333\% $$

Y la entropía cruzada es:

$$ - ln(0.3 * 0.4 * 0.5) = 2.81 $$


Ahora afinamos el modelo y obtuvimos las siguientes predicciones en su lugar (cambié el valor central - 2ª fila y 2ª columna - de 0,5 a 0,3):

[0.3 0.5 0.1]
[0.2 0.3 0.4]
[0.3 0.5 0.2]

La precisión es:

$$ \frac{[1,0,0] \cdot [0,0,1] + [0,0,1] \cdot [0,1,0] + [0,1,0] \cdot [0,1,0]}{3} = \frac{0 + 1 + 1}{3} = 66.6666\% $$

Y la entropía cruzada es todavía :

$$ - ln(0.3 * 0.4 * 0.5) = 2.81 $$


En resumen es completamente posible que la entropía cruzada permanezca igual y que la precisión varíe de forma salvaje .

Esto también explica hasta cierto punto (pero probablemente no todo) su intento con la regularización: una regularización pequeña reducirá la varianza dentro de los números predichos, posiblemente reduciendo los valores extraños que hacían que la precisión obtuviera la clase incorrecta, pero sin afectar a los valores utilizados por la entropía cruzada. Por otro lado, una fuerte regularización hará que todos los valores vayan hacia la media, reduciendo todos los valores de la matriz de predicción, incluyendo los utilizados por la entropía cruzada.

P.D. Lo anterior sólo ocurre porque tenemos puntuaciones bastante bajas (bajas para la precisión y altas para la entropía cruzada, es decir) y es probable que la clase verdadera en una predicción tenga un valor muy cercano a todas las demás clases predichas para esa muestra, es decir, las predicciones probablemente se vean como $[0.3, 0.31, 0.29]$ en lugar de $[0.2, 0.6, .1]$ .

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