¿Por qué el sobreajuste no devasta las redes neuronales para la clasificación MNIST?


8

Tengo una red neuronal simple (NN) para la clasificación MNIST. Incluye 2 capas ocultas, cada una con 500 neuronas. Por lo tanto, las dimensiones de la NN son: 784-500-500-10. ReLU se usa en todas las neuronas, softmax se usa en la salida y la función de pérdida es la entropía cruzada.

Lo que me desconcierta es por qué el sobreajuste no parece devastar a la NN.

Considere el número de parámetros (pesos) de la NN. Es aproximadamente Sin embargo, en mi experimento, utilicé solo ejemplos (una décima parte del conjunto de entrenamiento MNIST) para entrenar al NN. (Esto es solo para mantener el tiempo de ejecución corto. El error de entrenamiento y prueba disminuiría considerablemente si usara más ejemplos de entrenamiento). Repetí el experimento 10 veces. Se utiliza el descenso de gradiente estocástico simple (sin soporte RMS ni impulso); no se usó regularización / abandono / parada temprana. El error de entrenamiento y el error de prueba reportados fueron:

784×500+500×500+500×10=647000.
6000

No.1234 45 56 67 789 910mitrunayonorte(%)7.810,39.111,08.79.29.38.310,38.6mitmist(%)11,713,913,214.112,113,213,311,913,412,7

Tenga en cuenta que en los 10 experimentos (cada uno con una inicialización de parámetros aleatorios independiente), el error de prueba difirió del error de entrenamiento solo en aprox. 4%, aunque utilicé ejemplos de 6K para entrenar parámetros de 647K. La dimensión VC de la red neuronal está en el orden de al menos, dondees el número de aristas (pesos). Entonces, ¿por qué el error de prueba no fue miserablemente mayor (por ejemplo, 30% o 50%) que el error de entrenamiento? Le agradecería mucho si alguien puede señalar dónde me perdí. ¡Muchas gracias!O(El |miEl |losol(El |miEl |))El |miEl |

[EDICIONES 2017/6/30]

Para aclarar los efectos de la detención temprana, volví a hacer los 10 experimentos, cada uno con 20 épocas de entrenamiento. Las tasas de error se muestran en la siguiente figura:

ingrese la descripción de la imagen aquí

La brecha entre la prueba y el error de entrenamiento aumentó a medida que se utilizaron más épocas en el entrenamiento. Sin embargo, la cola del error de prueba se mantuvo casi plana después de que el error de entrenamiento se llevara a cero. Además, vi tendencias similares para otros tamaños del conjunto de entrenamiento. La tasa de error promedio al final de 20 épocas de entrenamiento se representa en función del tamaño del conjunto de entrenamiento a continuación:

ingrese la descripción de la imagen aquí

Por lo tanto, se produce un sobreajuste, pero no parece devastar a la NN. Teniendo en cuenta la cantidad de parámetros (647K) que necesitamos para el entrenamiento y la cantidad de ejemplos de entrenamiento que tenemos (<60K), la pregunta sigue siendo: ¿por qué el sobreajuste fácilmente hace que el NN sea inútil? Además, ¿es esto cierto para el ReLU NN para todas las tareas de clasificación con salida softmax y función objetivo de entropía cruzada? ¿Alguien ha visto un contraejemplo?


No puedo ver ningún comentario sobre el número de épocas utilizadas. ¿Has intentado correr durante más / menos épocas para ver el efecto que tiene? ¿Mencionó que no usa la detención temprana, pero presumiblemente está decidiendo detenerse de alguna manera? ¿Está ejecutando una gran cantidad de épocas, de modo que la red parece haber convergido?
Neil Slater

@NeilSlater Usé solo 1 época en el experimento, y terminé el SGD después de eso. (Esto es para mantener el tiempo de ejecución corto, ya que lo estoy haciendo en Matlab para una mejor capacidad de control y visibilidad). Mirando el valor de la función de pérdida en SGD (tamaño de lote mini = 1), sin embargo, parecía convergente, es decir, la salida máxima de softmax rondaba cerca de 1. También probé 60K ejemplos (1 época) y vi una tendencia similar, es decir, error de entrenamiento ~ 3% y error de prueba ~ 4%.
syeh_106

Creo que la respuesta después de sus experimentos extendidos es una combinación entre la respuesta de mi y Bashar. Puede ser útil si piensa en términos de prueba de relación de error: entrenar: un error de entrenamiento del 0% con un error de prueba del 7% no es un buen rendimiento; esto es un ajuste excesivo importante. Incluso su tasa de error del 2.5% en ejemplos de capacitación de 60k es 10 veces peor que las tasas de error de última generación en este problema. Sin embargo, supongo que su pregunta es "¿por qué la red no ha retrocedido a tasas de error del 50% o incluso del 90%"? Lo que está cubierto es la respuesta de Bashar, aunque todavía me pregunto si los errores de prueba aumentarían con más épocas
Neil Slater

1
@NeilSlater Claro, tamaño de paso SGD = 0.001. Los pesos se inicializan de manera aleatoria y uniforme en [-0.2, +0.2] en las primeras 2 capas, [-1, + 1] en la capa de salida.
syeh_106

1
Actualicé mi respuesta con alguna investigación adicional. Básicamente está de acuerdo con sus hallazgos y ofrece un contexto y una explicación de agitar las manos
Neil Slater

Respuestas:


7

He replicado sus resultados usando Keras, y obtuve números muy similares, así que no creo que esté haciendo nada mal.

Por interés, corrí por muchas más épocas para ver qué pasaría. La precisión de la prueba y los resultados del tren se mantuvo bastante estable. Sin embargo, los valores de pérdida se separaron aún más con el tiempo. Después de 10 épocas más o menos, estaba obteniendo un 100% de precisión del tren, un 94,3% de precisión de prueba, con valores de pérdida de alrededor de 0,01 y 0,22 respectivamente. Después de 20,000 épocas, las precisiones apenas habían cambiado, pero tuve una pérdida de entrenamiento de 0.000005 y una pérdida de prueba de 0.36. Las pérdidas también seguían divergiendo, aunque muy lentamente. En mi opinión, la red es claramente demasiado adecuada.

Entonces, la pregunta podría reformularse: ¿Por qué, a pesar de un ajuste excesivo, una red neuronal capacitada para el conjunto de datos MNIST todavía se generaliza aparentemente razonablemente bien en términos de precisión?

Vale la pena comparar este 94.3% de precisión con lo que es posible usando enfoques más ingenuos.

Por ejemplo, una simple regresión lineal de softmax (esencialmente la misma red neuronal sin las capas ocultas), proporciona una precisión estable rápida de 95.1% de tren y 90.7% de prueba. Esto muestra que muchos de los datos se separan linealmente: puede dibujar hiperplanos en las dimensiones 784 y el 90% de las imágenes de dígitos se ubicarán dentro del "cuadro" correcto sin necesidad de refinamiento adicional. A partir de esto, puede esperar que una solución no lineal sobreajustada obtenga un resultado peor que el 90%, pero tal vez no peor que el 80% porque forma intuitivamente un límite demasiado complejo alrededor, por ejemplo, un "5" que se encuentra dentro de la caja para "3" solo asignará incorrectamente una pequeña cantidad de este ingenuo múltiple 3. Pero somos mejores que esta estimación aproximada del 80% del modelo lineal.

Otro posible modelo ingenuo es la coincidencia de plantillas, o el vecino más cercano. Esta es una analogía razonable de lo que está haciendo el sobreajuste: crea un área local cerca de cada ejemplo de entrenamiento donde predecirá la misma clase. Los problemas de sobreajuste ocurren en el espacio intermedio donde los valores de activación seguirán lo que haga la red "naturalmente". Tenga en cuenta que el peor de los casos, y lo que a menudo se ve en los diagramas explicativos, sería una superficie casi caótica muy curva que viaja a través de otras clasificaciones. Pero en realidad puede ser más natural que la red neuronal se interpole de manera más fluida entre los puntos; lo que realmente hace depende de la naturaleza de las curvas de orden superior que la red combina en aproximaciones, y qué tan bien se ajustan a los datos.

Tomé prestado el código para una solución KNN de este blog en MNIST con K vecinos más cercanos . El uso de k = 1, es decir, elegir la etiqueta más cercana de los 6000 ejemplos de entrenamiento simplemente haciendo coincidir los valores de píxeles, proporciona una precisión del 91%. El 3% extra que logra la red neuronal sobreentrenada no parece tan impresionante dada la simplicidad del recuento de coincidencias de píxeles que está haciendo KNN con k = 1.

Probé algunas variaciones de la arquitectura de red, diferentes funciones de activación, diferentes números y tamaños de capas, ninguna con regularización. Sin embargo, con 6000 ejemplos de entrenamiento, no pude lograr que ninguno de ellos se sobreajustara de una manera en que la precisión de la prueba disminuyó drásticamente. Incluso reducir a solo 600 ejemplos de entrenamiento solo hizo que la meseta fuera más baja, con una precisión de ~ 86%.

Mi conclusión básica es que los ejemplos de MNIST tienen transiciones relativamente suaves entre clases en el espacio de características, y que las redes neuronales pueden ajustarse a estas e interpolarse entre las clases de una manera "natural" dados los bloques de construcción NN para la aproximación de funciones, sin agregar componentes de alta frecuencia a la aproximación que podría causar problemas en un escenario de sobreajuste.

Podría ser un experimento interesante probar con un conjunto "MNIST ruidoso" donde se agrega una cantidad de ruido aleatorio o distorsión a los ejemplos de entrenamiento y prueba. Se esperaría que los modelos regularizados funcionen bien en este conjunto de datos, pero tal vez en ese escenario el ajuste excesivo causaría problemas más obvios con la precisión.


Esto es anterior a la actualización con más pruebas por parte de OP.

A partir de sus comentarios, usted dice que todos los resultados de su prueba se toman después de ejecutar una sola época. Esencialmente, ha utilizado la detención temprana, a pesar de haber escrito que no lo ha hecho, porque ha detenido el entrenamiento lo antes posible dados sus datos de entrenamiento.

Sugeriría que se ejecute durante muchas más épocas si desea ver cómo la red realmente está convergiendo. Comience con 10 épocas, considere subir a 100. Una época no es mucha para este problema, especialmente en 6000 muestras.

Aunque no se garantiza que un número creciente de iteraciones empeore su sobreajuste de red de lo que ya lo ha hecho, realmente no le ha dado muchas oportunidades, y sus resultados experimentales hasta ahora no son concluyentes.

De hecho, casi esperaría que los resultados de sus datos de prueba mejoren después de una segunda, tercera época, antes de comenzar a alejarse de las métricas de entrenamiento a medida que aumentan los números de la época. También esperaría que su error de entrenamiento se acerque al 0% a medida que la red se acerca a la convergencia.


Tienes razón. Al ejecutar solo 1 época, implementé implícitamente la detención temprana, sin querer. Probaré su sugerencia y posiblemente actualice mi pregunta si es necesario.
syeh_106

Su respuesta actualizada y los resultados de la investigación son muy útiles, arrojando más luz sobre esta pregunta. Lo aprecio mucho Las redes neuronales artificiales me parecen hermosas y fascinantes. Es solo eso, cuando intenté precisar por qué / cómo / cuándo funcionó, el análisis / teoría cuantitativa y rigurosa no parecía abundar.
syeh_106

3

En general, las personas piensan en el sobreajuste en función de la complejidad del modelo. Lo cual es genial, porque la complejidad del modelo es una de las cosas que puedes controlar. En realidad, hay muchos otros factores que están relacionados con el problema del sobreajuste: - número de muestras de entrenamiento - número de iteraciones - la dimensión de la entrada (en su caso, creo que esta es la razón por la que no está sobreajustando) - el dificultad del problema: si tiene un problema simple, linealmente separable, entonces no debe preocuparse demasiado por el sobreajuste.

Hay una demostración visual proporcionada por google tensorflow que le permite cambiar todos estos parámetros. http://playground.tensorflow.org Puede cambiar su problema de entrada, la cantidad de muestras, la dimensión de su entrada, la red, la cantidad de iteraciones.

Me gusta pensar en el sobreajuste como sobreajuste = modelos grandes + características no relacionadas

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.