El sobreajuste puede ser el problema más frustrante del aprendizaje automático. En este artículo, veremos qué es , cómo detectarlo y , lo que es más importante, cómo evitar que suceda .
La palabra sobreajuste se refiere a un modelo que modela demasiado bien los datos de entrenamiento. En lugar de aprender la distribución general de los datos, el modelo aprende el resultado esperado para cada punto de datos.
Esto es lo mismo que memorizar las respuestas a un examen de matemáticas en lugar de saber las fórmulas . Debido a esto, el modelo no puede generalizarse . Todo está bien mientras estés en un territorio familiar , pero tan pronto como salgas, estás perdido.
Parece que este pequeño no sabe cómo hacer una multiplicación. Solo recuerda las respuestas a las preguntas que ya ha visto.
La parte complicada es que, a primera vista, puede parecer que su modelo funciona bien porque tiene un error muy pequeño en los datos de entrenamiento . Sin embargo, tan pronto como le pida que prediga nuevos puntos de datos, fallará .
Como se indicó anteriormente, el sobreajuste se caracteriza por la incapacidad del modelo para generalizar . Para probar esta capacidad, un método simple consiste en dividir el conjunto de datos en dos partes: el conjunto de entrenamiento y el conjunto de prueba . Al seleccionar modelos, es posible que desee dividir el conjunto de datos en tres, explico por qué aquí .
Con esta división, podemos verificar el rendimiento del modelo en cada conjunto para obtener información sobre cómo va el proceso de entrenamiento y detectar el sobreajuste cuando ocurre. Esta tabla muestra los diferentes casos.
El sobreajuste puede verse como la diferencia entre el error de entrenamiento y el de prueba .
Nota: para que esta técnica funcione, debe asegurarse de que ambas partes sean representativas de sus datos. Una buena práctica es mezclar el orden del conjunto de datos antes de dividirlo .
El sobreajuste puede ser bastante desalentador porque aumenta tus esperanzas justo antes de aplastarlas brutalmente . Afortunadamente, existen algunos trucos para evitar que suceda.
Primero , podemos intentar observar los componentes de nuestro sistema para encontrar soluciones. Esto significa cambiar los datos que estamos usando, o qué modelo .
Tu modelo solo puede almacenar cierta información. Esto significa que cuantos más datos de entrenamiento le proporciones, es menos probable que se sobreajuste . La razón es que, a medida que agrega más datos , el modelo no puede sobreajustar todas las muestras y se ve obligado a generalizar para progresar.
La recopilación de más ejemplos debe ser el primer paso en cada tarea de ciencia de datos, ya que más datos darán como resultado una mayor precisión del modelo, al tiempo que se reduce la posibilidad de sobreajuste .
Cuantos más datos obtenga, menos probable es que el modelo se sobreajuste.
Recopilar más datos es un proceso tedioso y costoso . Si no puede hacerlo, debe intentar que sus datos aparezcan como si fueran más diversos . Para hacer eso, use técnicas de aumento de datos para que cada vez que el modelo procese una muestra, sea ligeramente diferente de la vez anterior. Esto hará que sea más difícil para el modelo aprender los parámetros de cada muestra.
Cada iteración ve como una variación diferente de la muestra original.
Otra buena práctica es agregar ruido:
Nota: En ambos casos, debe asegurarse de que la magnitud del ruido no sea demasiado grande . De lo contrario, podría terminar ahogando respectivamente la información de la entrada en el ruido_, o_ hacer que la salida sea incorrecta. Ambos dificultarán el proceso de formación.
Si, incluso con todos los datos que tiene ahora, su modelo aún logra sobreajustar su conjunto de datos de entrenamiento, es posible que el modelo sea demasiado poderoso . A continuación, podría intentar reducir la complejidad del modelo.
Como se indicó anteriormente, un modelo solo puede sobreajustar esa cantidad de datos. Al reducir progresivamente su complejidad (cantidad de estimadores en un bosque aleatorio , cantidad de parámetros en una red neuronal, etc. ), puede hacer que el modelo sea lo suficientemente simple para que no se sobreajuste, pero lo suficientemente complejo para aprender de sus datos. Para hacer eso, es conveniente observar el error en ambos conjuntos de datos según la complejidad del modelo.
Esto también tiene la ventaja de hacer que el modelo sea más ligero , entrenar más rápido y correr más rápido .
A la izquierda, el modelo es demasiado simple. A la derecha se sobreencaja.
Una segunda posibilidad es cambiar la forma en que se realiza el entrenamiento . Esto incluye alterar la función de pérdida o la forma en que funciona el modelo durante el entrenamiento.
En la mayoría de los casos, el modelo comienza aprendiendo una distribución correcta de los datos y, en algún momento, comienza a sobreajustar los datos. Al identificar el momento en que ocurre este cambio , puede detener el proceso de aprendizaje antes de que ocurra el sobreajuste. Como antes, esto se hace observando el error de entrenamiento a lo largo del tiempo.
Cuando el error de prueba comienza a aumentar , ¡es hora de detenerse!
La regularización es un proceso de restricción del aprendizaje del modelo para reducir el sobreajuste . Puede tomar muchas formas diferentes, y veremos un par de ellas.
Una de las técnicas de regularización más poderosas y conocidas es agregar una penalización a la función de pérdida . Los más comunes se denominan L1 y L2 :
Con la penalización, el modelo se ve obligado a hacer concesiones en sus pesos, ya que ya no puede hacerlos arbitrariamente grandes . Esto hace que el modelo sea más general , lo que ayuda a combatir el sobreajuste.
La penalización L1 tiene la ventaja adicional de que impone la selección de funciones , lo que significa que tiene una tendencia a establecer en 0 los parámetros menos útiles . Esto ayuda a identificar las características más relevantes en un conjunto de datos . La desventaja es que a menudo no es tan eficiente desde el punto de vista computacional como la penalización L2 .
Así es como se verían las matrices de peso. Observe cómo la matriz L1 es escasa con muchos ceros y la matriz L2 tiene pesos ligeramente más pequeños .
Otra posibilidad es agregar ruido a los parámetros durante el entrenamiento, lo que ayuda a la generalización .
Esta técnica extremadamente efectiva es específica de Deep Learning, ya que se basa en el hecho de que las redes neuronales procesan la información de una capa a la siguiente. La idea es desactivar aleatoriamente neuronas ( dropout ) o conexiones ( dropconnect ) durante el entrenamiento.
Esto obliga a la red a volverse redundante , ya que ya no puede depender de neuronas o conexiones específicas para extraer características específicas . Una vez realizado el entrenamiento, se restauran todas las neuronas y conexiones. Se ha demostrado que esta técnica es algo equivalente a tener un enfoque de conjunto , lo que favorece la generalización, reduciendo así el sobreajuste.
Como ya sabrá, el sobreajuste es uno de los principales problemas a los que se enfrenta el científico de datos . Puede ser un verdadero dolor de cabeza si no sabes cómo detenerlo . Con las técnicas presentadas en este artículo, ahora debería poder evitar que sus modelos hagan trampa en el proceso de aprendizaje y obtener los resultados que se merece.
🎉 ¡Has llegado al final! Espero que hayas disfrutado este artículo. Si lo hiciste, siéntete libre de darle me gusta, compartirlo, explicárselo a tu gato, sígueme en medium o haz lo que quieras. 🎉
Si te gusta la ciencia de datos y la inteligencia artificial, suscríbete al boletín para recibir actualizaciones sobre artículos y mucho más.