Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Regularización y dropout, Unidad 8 — Otras técnicas de regularización, 8.2 — Data augmentation (visión conceptual) ·

Casos de uso

Casos de uso: Data augmentation para mejorar la generalización en deep learning

Introducción

En el entrenamiento de modelos de deep learning, es crucial contar con una gran cantidad de datos de calidad. Sin embargo, a menudo nos encontramos con datasets limitados o desafiantes que no cubren todas las posibles variaciones del problema real. En tales casos, la técnica de data augmentation se convierte en un aliado valioso para generar más muestras sintéticas a partir de los datos existentes y mejorar significativamente el rendimiento general del modelo.

Data augmentation permite aumentar artificialmente la diversidad de nuestros datos de entrenamiento mediante técnicas como rotación, zoom, desplazamiento, cambio de color, etc. Esto no solo reduce el sobreajuste (overfitting) sino que también mejora la capacidad de generalización del modelo al presentarle una variedad mayor de entradas.

Explicación principal con ejemplos

Ejemplo práctico: Data augmentation en imágenes

Supongamos que estamos desarrollando un clasificador de imágenes para identificar diferentes tipos de hojas. El dataset original contiene solo 500 imágenes. Podemos aplicar data augmentation a estas imágenes para generar nuevas muestras:

from keras.preprocessing.image import ImageDataGenerator

# Configuración de la generadora de datos
datagen = ImageDataGenerator(
    rotation_range=30,  # Rango de rotación en grados (0-180)
    width_shift_range=0.2,  # Desplazamiento horizontal en fracción del ancho de la imagen
    height_shift_range=0.2,  # Desplazamiento vertical en fracción del alto de la imagen
    shear_range=0.2,  # Rango de desviación cónica (en grados)
    zoom_range=0.2,  # Rango de zoom (1 - 1 + zoom_range)
    horizontal_flip=True,  # Flipping horizontal randommente
    fill_mode='nearest'  # Modo de relleno para las áreas vacías
)

# Generación de nuevas imágenes a partir del dataset original
for batch in datagen.flow_from_directory('dataset/', target_size=(256, 256), batch_size=32):
    break

print(f"Numero de muestras generadas: {batch.shape[0]}")

En este ejemplo, la ImageDataGenerator de Keras se utiliza para aplicar varias transformaciones a las imágenes en nuestro dataset. Cada una de estas transformaciones puede generar nuevas imágenes únicas que representan mejor la diversidad real del problema.

Errores típicos / trampas

1. Data augmentation sin control

Aumentar el tamaño del dataset es beneficioso, pero si no se controla correctamente, puede introducir ruido en los datos y hacer que el modelo aprenda características irrelevantes. Es crucial definir claramente cuáles transformaciones son apropiadas para tu problema.

2. Exceso de data augmentation

Aplicar demasiados tipos de transformación a las imágenes (rotación, zoom, etc.) puede resultar en una gran cantidad de muestras sintéticas que no representan bien la realidad del problema. Por ejemplo, si se aplican demasiados efectos de rotación a imágenes muy anguladas, el modelo podría aprender características artificiales.

3. Falta de diversidad

Si las transformaciones aplicadas son demasiado limitadas o no variadas, el dataset resultante puede carecer de la diversidad necesaria para entrenar un buen modelo. Por ejemplo, si solo se aplica rotación en un rango muy estrecho, el modelo podría no aprender a reconocer objetos con diferentes orientaciones.

Checklist accionable

1. Identificar las transformaciones relevantes

Estudia tus datos originales y determina cuáles son los efectos visibles (rotación, zoom, etc.) que podrían afectar a las características del problema real.

2. Configurar parámetros cuidadosamente

Define los parámetros de cada transformación de manera que no distorsione el dataset. Por ejemplo, ajusta rotation_range según la orientación natural de tus objetos y width_shift_range para el desplazamiento horizontal en relación con el tamaño general del objeto.

3. Evaluar regularmente

Utiliza validaciones internas y externas para monitorear el rendimiento del modelo durante el proceso de data augmentation. Ajusta las transformaciones si observas signos de sobreajuste o pérdida de precisión.

4. Combinar con otras técnicas

Data augmentation puede trabajar mejor cuando se combina con otros métodos como regularización (dropout, L2) y estrategias de optimización avanzadas.

5. Mantener un registro detallado

Documenta todas las transformaciones aplicadas a tus datos y cómo afectan al rendimiento del modelo. Esto te ayudará a comprender mejor el proceso y a replicar resultados consistentes en el futuro.

Cierre con "Siguientes pasos"

Siguientes pasos

  1. Aplica data augmentation a tu dataset actual para aumentar su tamaño y diversidad.
  2. Ajusta las transformaciones según los parámetros optimizados para tu problema específico.
  3. Monitorea el rendimiento continuamente durante la fase de entrenamiento con validación interna.
  4. Combina data augmentation con otras técnicas como regularización y optimización avanzada para mejorar aún más el desempeño del modelo.

Data augmentation es una herramienta poderosa pero requiere un uso cuidadoso para obtener los mejores resultados en deep learning. Con práctica y experimentación, podrás mejorar significativamente la calidad de tus datos y, por lo tanto, el rendimiento de tus modelos.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).