La guía completa sobre el aumento de datos para el aprendizaje automático

En este artículo, aprenderá formas prácticas y seguras de utilizar el aumento de datos para reducir el sobreajuste y mejorar la generalización en imágenes, texto, audio y conjuntos de datos tabulares.

Los temas que cubriremos incluyen:

Cómo funciona el aumento y cuándo ayuda. Estrategias de aumento en línea versus fuera de línea. Ejemplos prácticos para imágenes (TensorFlow/Keras), texto (NLTK), audio (librosa) y datos tabulares (NumPy/Pandas), además de los errores críticos de la fuga de datos.

Muy bien, vayamos a ello.

La guía completa sobre el aumento de datos para el aprendizaje automático
Imagen por autor

Supongamos que ha creado su modelo de aprendizaje automático, ha ejecutado los experimentos y ha observado los resultados preguntándose qué salió mal. La precisión del entrenamiento parece excelente, tal vez incluso impresionante, pero cuando verificas la precisión de la validación… no tanto. Puede resolver este problema obteniendo más datos. Pero eso es lento, costoso y, a veces, simplemente imposible.

No se trata de inventar datos falsos. Se trata de crear nuevos ejemplos de entrenamiento modificando sutilmente los datos que ya tienes sin cambiar su significado ni etiqueta. Estás mostrando a tu modelo el mismo concepto en múltiples formas. Estás enseñando lo que es importante y lo que se puede ignorar. El aumento ayuda a que su modelo generalice en lugar de simplemente memorizar el conjunto de entrenamiento. En este artículo, aprenderá cómo funciona el aumento de datos en la práctica y cuándo usarlo. Específicamente, cubriremos:

Qué es el aumento de datos y por qué ayuda a reducir el sobreajuste La diferencia entre el aumento de datos en línea y fuera de línea Cómo aplicar el aumento a datos de imágenes con TensorFlow Técnicas de aumento simples y seguras para datos de texto Métodos de aumento comunes para conjuntos de datos tabulares y de audio Por qué la fuga de datos durante el aumento puede dañar silenciosamente su modelo

Aumento de datos fuera de línea versus en línea

El aumento puede ocurrir antes del entrenamiento o durante el entrenamiento. El aumento sin conexión expande el conjunto de datos una vez y lo guarda. El aumento en línea genera nuevas variaciones en cada época. Los canales de aprendizaje profundo generalmente prefieren el aumento en línea porque expone el modelo a una variación efectivamente ilimitada sin aumentar el almacenamiento.

Aumento de datos para datos de imágenes

El aumento de datos de imágenes es el lugar más intuitivo para comenzar. Un perro sigue siendo un perro si se lo gira ligeramente, se le hace zoom o se lo ve en diferentes condiciones de iluminación. Su modelo necesita ver estas variaciones durante el entrenamiento. Algunas técnicas comunes de aumento de imágenes son:

Rotación Voltear Cambiar tamaño Recortar Hacer zoom Desplazar Cortar Cambios de brillo y contraste

Estas transformaciones no cambian la etiqueta, sólo la apariencia. Demostrémoslo con un ejemplo simple usando TensorFlow y Keras:

1. Importación de bibliotecas

2. Cargando el conjunto de datos MNIST

Producción:

3. Definición de ImageDataGenerator para aumento

4. Construyendo un modelo CNN simple

5. Entrenando el modelo

Producción:

Resultado de la formación

6. Visualización de imágenes aumentadas

Producción:

Salida de aumento

Aumento de datos para datos textuales

El texto es más delicado. No se pueden reemplazar palabras al azar sin pensar en el significado. Pero los cambios pequeños y controlados pueden ayudar a que su modelo se generalice. Un ejemplo sencillo que utiliza la sustitución de sinónimos (con NLTK):

Producción:

Mismo significado. Nuevo ejemplo de entrenamiento. En la práctica, las bibliotecas como nlpaug o las API de retrotraducción se suelen utilizar para obtener resultados más fiables.

Aumento de datos para datos de audio

Los datos de audio también se benefician enormemente del aumento. Algunas técnicas comunes de aumento de audio son:

Agregar ruido de fondo Estirar el tiempo Cambio de tono Escalar el volumen

Uno de los aumentos de audio más simples y utilizados es agregar ruido de fondo y alargar el tiempo. Estos ayudan a que los modelos de voz y sonido funcionen mejor en entornos ruidosos del mundo real. Entendamos con un ejemplo simple (usando librosa):

Producción:

Debes observar que el audio se carga a 22.050 Hz. Ahora, agregar ruido no cambia su duración, por lo que el audio ruidoso tiene el mismo tamaño que el original. La ampliación del tiempo acelera el audio y preserva el contenido.

Aumento de datos para datos tabulares

Los datos tabulares son el tipo de datos más confidencial para aumentar. A diferencia de las imágenes o el audio, no se pueden modificar valores arbitrariamente sin romper la estructura lógica de los datos. Sin embargo, existen algunas técnicas de aumento comunes:

Inyección de ruido: agregue ruido pequeño y aleatorio a las funciones numéricas mientras conserva la distribución general. SMOTE: Genera muestras sintéticas para clases minoritarias en problemas de clasificación. Mezclar: combine filas o columnas de manera que se mantenga la coherencia de las etiquetas. Transformaciones específicas de dominio: aplique cambios basados ​​en la lógica según el conjunto de datos (por ejemplo, conversión de monedas, redondeo o normalización). Perturbación de características: altere ligeramente las características de entrada (p. ej., edad ± 1 año, ingresos ± 2%).

Ahora, entendamos con un ejemplo simple que usa la inyección de ruido para características numéricas (a través de NumPy y Pandas):

Producción:

Puede ver que esto modifica ligeramente los valores numéricos pero preserva la distribución general de los datos. También ayuda al modelo a generalizar en lugar de memorizar valores exactos.

El peligro oculto de la fuga de datos

Esta parte no es negociable. El aumento de datos debe aplicarse únicamente al conjunto de entrenamiento. Nunca debe aumentar los datos de validación o prueba. Si se filtran datos aumentados en la evaluación, sus métricas se vuelven engañosas. Su modelo lucirá genial en papel y fallará en producción. La separación limpia no es una buena práctica; es un requisito.

Conclusión

El aumento de datos ayuda cuando sus datos son limitados, hay sobreajuste y existen variaciones en el mundo real. No corrige etiquetas incorrectas, datos sesgados ni funciones mal definidas. Es por eso que comprender sus datos siempre viene antes de aplicar transformaciones. No es sólo un truco para competiciones o demostraciones de aprendizaje profundo. Es un cambio de mentalidad. No necesita buscar más datos, pero debe comenzar a preguntarse cómo podrían cambiar naturalmente sus datos existentes. Sus modelos dejan de sobreajustarse, comienzan a generalizar y finalmente se comportan como esperaba en primer lugar.