Anatomía del sobreajuste — overfitting

Source: Deep Learning on Medium


Go to the profile of Actumlogos

Aquí vamos a recordar y parafrasear, lo que escribí en este post,

“el sobreajuste es la optimización de un objetivo a costa de otros objetivos que también son importantes”

Ejemplos de la vida común:

  • Quienes hemos trabajado en empresas grandes conocemos el caso de compañeros (o nosotros mismos) que privilegian en exceso ganar los incentivos económicos por productividad a costa de, brindar una buena atención a los clientes, entregar trabajos de calidad o llevar relaciones “tóxicas” con sus compañeros.
  • El caso de las personas que sobresalen en una actividad humana como el deporte, la música o la ciencia, pero que han descuidado las otras áreas de su vida al grado de sufrir depresión y suicidarse.
  • El caso de personas que maximizan sus ingresos económicos a costa de generar grave daño al ambiente y a la gente que le rodea.

Estos tres ejemplos nos muestran que la interacción de un ser humano con el mundo es un problema de optimización multi-objetivo (parcialmente observable, dinámico y estocástico, o sea muy difícil).

En el caso extremo, de privilegiar un solo objetivo sobre el resto, puede hacer más daño que beneficio. Esto debido una visión estrecha de lo que hay que optimizar.

El sobreajuste en aprendizaje automático

En Machine Learning (aprendizaje automático), cuando ustedes estén entrenando un modelo, buscan optimizar dos objetivos a la vez.

  1. Ajustar el modelo lo mejor posible a los ejemplos de entrenamiento.
  2. Predecir correctamente nuevos ejemplos diferentes a los del entrenamiento.

Es totalmente inútil un modelo cuyo desempeño es muy alto en entrenamiento, pero bajo durante su puesta en operación con nuevos ejemplos. Por ejemplo, tener un detector de personas en imágenes que alcanza un F1-score igual a 0.9970 (casi el 100%) en las imágenes de entrenamiento, pero al momento de ponerlo en operación (o validarlo) resulta un F1-score de 0.4560 de detección, indicando que tiene muchas falsas detecciones y/o no detecta cuando debería hacerlo. Esto evidencia de que lo que aprendió no es general, solo se ajusto agresivamente a detectar las imágenes de entrenamiento.

¿Puede el caso contrario ocurrir? Es decir, tener un mayor desempeño en la validación que en el entrenamiento. Sí, sí puede, pero ese es otro indicador de que el modelo entrenado no tiene aprendizaje general porque solo con los ejemplos de validación se desempeña mejor (por pura causalidad fortuita, no es debido al aprendizaje). Y seguramente, esto ocurre porque hay un número reducido de ejemplos para validación con poca diversidad entre ellos. Así que te recomiendo aumentar el numero de ejemplos y aumentar la diversidad para evitar esta aberración.

Ejemplos simples

Imagina que queremos entrenar un modelo para predecir el precio de las casas en función de su tamaño. Usaremos un polinomio de grado n para ajustar y predecir los precios. La pregunta es ¿Qué tan grande debe ser el grado del polinomio? = ¿Qué tan complejo debe ser el modelo? Examina los tres casos propuestos en la siguiente figura.

Figura 1

En el primer caso, con un polinomio de grado 1 (una linea recta), es claro que este modelo no tiene la capacidad para ajustarse bien a los datos de entrenamiento (y en consecuencia, tendrá muy poca capacidad de predicción). Se dice que el modelo tiene subajuste. En el segundo caso, con un polinomio de grado 2 (una parábola), el ajuste del modelo es mejor que el anterior y si pasamos al modelo del ultimo caso (polinomio de grado 4) es el que se ajusta mejor a los datos. Sin embargo, este último presenta sobreajuste porque al predecir nuevos precios dice que el precio baja conforme aumenta el tamaño de la casa. Si esto fuera cierto, yo ya me hubiera comprado una casa en las Lomas de Chapultepec en la CDMX. Totalmente irreal la predicción. Por tanto, el mejor modelo entrenado es nuestro polinomio de grado 2 porque equilibra entre ajustarse a los ejemplos de entrenamiento y predecir la tendencia de los precios conforme aumenta el tamaño de las casas.

El ejemplo anterior fue en el contexto de predicción (regresión de precios). Pero ¿Cómo se ve el sobreajuste y subajuste en el contexto de clasificación?. Examine la siguiente figura ¿Cuál tiene subjuste y cuál tiene sobreajuste?

Figura 2

Lo que ven las tres gráficas son los datos de entrenamiento de dos clases (cruces rojas y bolas azules) junto con tres fronteras de decisión que clasifican los datos. Cada frontera es generada por un modelo cada vez más complejo (polinomio de mayor grado) de izquierda a derecha. De aquí, vemos que el primer modelo (la frontera más simple) presenta subajuste a los datos, no los separa bien, tiene varios errores. El tercer modelo (las frontera más compleja) aunque los separa perfectamente, no capta la tendencia general. Sin embargo, dicha tendencia general sí es aprendida por el segundo modelo, a costa de permitir dos errores de clasificación en el entrenamiento.

Diagnosticando al enemigo

OK, los dibujitos anteriores sirven para entender qué es sobreajuste y subajuste cuando los problemas tienen un espacio de una o dos dimensiones, pero ¿Cómo vemos el sobreajuste y el subjuste cuando el problema tiene cientos o miles de dimensiones como es el caso de reconocer imágenes? En la figura siguiente se muestran las curvas de aprendizaje para un modelo neuronal que está aprendiendo a reconocer gatos y perros en imágenes. Las curvas indican como evoluciona la exactitud de clasificación (porcentaje de aciertos) conforme avanzan las iteraciones del entrenamiento (en este caso, épocas).

Figura 3. Perros y Gatos con Sobreajuste

Gracias a estas curvas es muy fácil diagnosticar cuando un modelo se ha sobreajustado. En la gráfica, observamos como la exactitud de entrenamiento se aproxima mucho al 100% de aciertos, pero a costa de tener una baja exactitud en el conjunto de validación (~70%) ¿Conclusión? El aprendizaje captado por este modelo es poco general, memoriza patrones particulares de los ejemplos de entrenamiento, en lugar de aprender patrones más generales.

Defendiéndose del enemigo

La pregunta que sigue después de diagnosticar es ¿Qué hacer cuando tenemos sobreajuste? Una respuesta a esta pregunta es: “limitar la complejidad del modelo”. Al reducir la complejidad del modelo, se reduce su capacidad para ajustarse a los datos de entrenamiento, forzándolo a hallar los patrones más generales.

Hay varías formas de hacer esto en el caso de redes neuronales:

  • Promover que pesos sinápticos tomen valores cercanos a cero (L1 and L2 regularization). Esto equivale a desconectar neuronas gradualmente.
  • Apagar neuronas durante el entrenamiento de manera aleatoria (Dropout). Solo durante el entrenamiento, no en la inferencia.
  • Conectar y desconectar sinápsis de manera aleatoria (DropConnect).
  • Normalizar las activaciones, de tal manera que se pueda controlar la desviación estándar (rango) y la media de las activaciones de una capa neuronal para un lote de ejemplos (BatchNormalization).
  • Reducir el número de capas neuronales
  • Reducir el número de neuronas

Pero limitar la complejidad del modelo no es la única solución. Otra forma de limitar la capacidad del modelo para ajustarse a los ejemplos de entrenamiento es: “Aumentar la diversidad de los ejemplos”. Al tener un conjunto de ejemplos más diverso, aumentamos la dificultad que debe afrontar el modelo para ajustarse a ellos, forzándolo a hallar los patrones más generales.

Otra vez, hay varías formas de hacer esto:

  • Recolectar más ejemplos y etiquetarlos
  • Generar ejemplos artificiales mediante transformaciones aleatorias aplicadas a los ejemplos que ya tenemos recolectados (Data Augmentation).
  • Reducir la dimensionalidad de los ejemplos, evitando incluir rasgos repetitivos (poco informativos para clasificar). En el caso de imágenes, esto se traduce a recortar la imagen tal que el objeto a clasificar quede bien centrado.

Si aplicamos esta estrategia, generando más imágenes artificiales de perros y gatos (problema de la Figura 3) mediante rotaciones, traslaciones, zooms y distorsiones aplicadas a las imágenes originales, obtenemos el siguiente resultado.

Vemos con claridad en estas curvas de aprendizaje que al aumentar la diversidad de los ejemplos de perros y gatos, el modelo ya no puede sobreajustarse. En consecuencia, aunque aumenta la dificultad de aprendizaje (por eso requiere más épocas, de 30 a 100 épocas), mejora la generalidad del aprendizaje.

Por ultimo, y no menos importante, hay una simple estrategia para evitar el sobreajuste: “detener el entrenamiento antes de que el modelo se sobreajuste” (Early Stopping). De hecho, a veces, puedes aumentar la complejidad del modelo y parar el entrenamiento antes del sobreajuste, obteniendo un mejor modelo que usando las otras estrategias. Esto parece algo contradictorio porque aumentamos la complejidad del modelo; pero puede funcionar en algunos casos.

El enigma de la sobreparametrización de las redes neuronales

En general, hay una máxima en la comunidad de Machine Learning: entre más complejo sea el modelo más proclive es al sobreajuste. Y aquí viene lo extraño, resulta que las redes neuronales con muchas capas y millones de pesos sinápticos y polarizaciones, mucho más que números de ejemplos, son modelos muy complejos y obtienen aprendizajes muy generales aun sin requerir usar métodos para limitar su complejidad. Si quieres saber más acerca de esto, lee “Understanding deep learning requires rethinking generalization”.

Una explicación tentativa a este aparente conflicto (modelos de alta complejidad presentando alta generalidad) es que el ajuste del modelo a los datos es algo que depende tanto de la complejidad del modelo como de la complejidad (diversidad) de los ejemplos de entrenamiento. Quizá porque los conjuntos de ejemplos son muy “complejos”, es que aun con modelos neuronales muy complejos, no hay tanta probabilidad de sobreajustarse. No lo sé, esto es una especulación de mi parte. En los años por venir, seguro alguien hallará una explicación convincente y validada por evidencia científica.

Regresando al campo filosófico … alejándonos de Machine Learning

¿El sobreajuste siempre es perjudicial? No, no siempre, depende de nuestros fines particulares. Por ejemplo ¿Para qué quiero reconocer automáticamente a todos los posibles vehículos automotrices que hay en el mundo y en todas las posibles circunstancias? Si me basta con reconocer los coches tipo Sedan para una aplicación especifica. Evidentemente, aquí no busco generalidad total, solo generalidad parcial para las imágenes con coches Sedan. En consecuencia, el modelo tendrá sobreajuste para imágenes con vehículos Sedan.

Por otro lado, en la vida, es imposible que un ser humano sea bueno para todas las actividades posibles (tener el máximo desempeño en todos los objetivos). De hecho, buscar esta meta nos llevaría a ser mediocres en todo. Para sobresalir en la sociedad humana, basta con ser realmente bueno en una sola cosa. Demostrar refinamiento y haber logrado cosas que muy pocos pueden alcanzar. Es decir, tener sobreajuste a un objetivo (o a unos pocos objetivos valiosos), a costa de ser malo para muchas otras cosas.

En dirección de otra arista; me gustaría mencionar que el proceso científico está en batalla constante contra ese enemigo llamado el sobreajuste. La historia del conocimiento científico está llena de sobreajustes que fueron vencidos y otros que aun no. Por ejemplo, la teoría mecánica de Newton es un modelo que no predice correctamente lo que sucede con partículas en movimiento a nivel muy pequeño (como los electrones, fotones, etc) ni tampoco predice correctamente cuando un planeta órbita muy cerca de un objeto altamente masivo como el sol, ni tampoco si algún objeto se mueve a velocidades cercanas a la velocidad de la luz en el vació. El modelo de Newton está sobreajustado a los movimientos de los cuerpos no relativistas no cuánticos.

Finalmente, estimado lector considera que este texto es un modelo cuyo fin es aprehender las características generales del fenómeno sobreajuste (por eso tuvo el pretencioso titulo de “anatomía del sobreajuste”). Quizá este texto (modelo) sea demasiado complejo para recordarlo, y lo que usted solo necesita recordar, es lo siguiente, expresado en sus propias palabras:

“el sobreajuste es la optimización de un objetivo a costa de otros objetivos que también son importantes”

Aprendamos principios generales, y no memoricemos solo anécdotas.

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — –

Dr. Erik Zamora

Cofundador de Actumlogos, profesor-investigador del Instituto Politécnico Nacional, miembro del Sistema Nacional de Investigadores de México, miembro de la Sociedad de Inteligencia Computacional y de la Sociedad de Automatización y Robótica del IEEE. Mis intereses son la navegación autónoma de robots móviles y el aprendizaje automático.