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) ·

Aumentar datos efectivos

Aumentar datos efectivos: Data augmentation

Introducción

En el contexto del aprendizaje profundo, la falta de datos es uno de los principales obstáculos para lograr modelos robustos y generalizables. La técnica de data augmentation (aumento de datos) se utiliza para generar nuevas muestras a partir de las existentes en un conjunto de entrenamiento limitado. Esto no solo ayuda a evitar el sobreajuste, sino que también mejora la capacidad del modelo para aprender características útiles del conjunto de datos y aumenta su robustez frente al ruido.

Explicación principal

Data augmentation es una técnica poderosa que se aplica principalmente en tareas de visión por computadora (VCC) y procesamiento de lenguaje natural. A continuación, presentamos un ejemplo básico utilizando la biblioteca ImageDataGenerator de Keras para aumentar el conjunto de datos de imágenes.

Ejemplo de data augmentation

from keras.preprocessing.image import ImageDataGenerator
import numpy as np

# Definir el generador de imágenes
datagen = ImageDataGenerator(
    rotation_range=20,  # Giro aleatorio del 0-20 grados
    width_shift_range=0.1,  # Desplazamiento horizontal al azar
    height_shift_range=0.1,  # Desplazamiento vertical al azar
    shear_range=0.1,  # Transformación de corte al azar
    zoom_range=0.2,  # Escalamiento aleatorio del 95-105%
    horizontal_flip=True,  # Giro horizontal al azar
    fill_mode='nearest'  # Método para rellenar los bordes faltantes
)

# Cargar un conjunto de datos (por ejemplo, MNIST)
from keras.datasets import mnist
(X_train, y_train), (_, _) = mnist.load_data()

# Preparar las imágenes para el generador
X_train = X_train.reshape((X_train.shape[0], 28, 28, 1)).astype('float32') / 255.0

# Generar nuevas muestras a partir de las existentes
for batch in datagen.flow(X_train, y_train, batch_size=9):
    for i in range(9):
        plt.subplot(3, 3, i + 1)
        plt.imshow(batch[i].reshape(28, 28), cmap='gray')
    plt.show()
    break

En este ejemplo, ImageDataGenerator es utilizado para generar nuevas muestras de datos a partir de una base inicial. Las transformaciones aplicadas incluyen rotación, desplazamiento horizontal y vertical, corte y zoom aleatorios, así como un giro horizontal al azar.

Errores típicos / trampas

  1. Falta de diversidad en los datos aumentados: Si el conjunto de datos original es muy limitado o homogéneo, las transformaciones aplicadas podrían no ser lo suficientemente variadas para generar muestras útiles.
  1. Sobrecarga computacional: Generar una gran cantidad de muestras puede ser computacionalmente costoso, especialmente si se aplica a grandes conjuntos de datos o con transformaciones complejas.
  1. Distorsión del conjunto de datos original: Si las transformaciones aplicadas son demasiado agresivas, podrían distorsionar el conjunto de datos original y hacer que los modelos aprendan características incorrectas.

Checklist accionable

  1. Identificar las transformaciones adecuadas para tu tarea: Considera la naturaleza del problema a resolver (por ejemplo, si se trata de imágenes o textos).
  1. Limpieza y preparación previa: Asegúrate de que tus datos originales están limpios y preparados correctamente antes de aplicar data augmentation.
  1. Implementar gradualmente las transformaciones: Comienza con transformaciones simples (como rotación) y gradualmente introduce más complejidades para evitar distorsiones inesperadas.
  1. Monitoreo constante: Mide el impacto que tienen los datos aumentados en la precisión del modelo, tanto durante el entrenamiento como en validación.
  1. Manejo de redundancia: Evita que los nuevos datos generados sean demasiado similares entre sí para no sobrecargar el modelo con información redundante.
  1. Validación cruzada: Asegúrate de aplicar data augmentation a todos los conjuntos de datos durante la validación cruzada para obtener un estimado más preciso del rendimiento del modelo.

Cierre: Siguientes pasos

  • Exploración adicional: Experimenta con diferentes técnicas y parámetros de data augmentation para encontrar lo que funciona mejor en tu conjunto de datos específico.
  • Integración con otras técnicas: Combina data augmentation con otros métodos de regularización como L2 o dropout para obtener una mayor robustez del modelo.
  • Optimización continua: Continúa monitoreando y ajustando el uso de data augmentation basado en las métricas del rendimiento del modelo durante la fase de entrenamiento y validación.

Contacto

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