Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Regularización y dropout, Unidad 12 — Mini-proyecto de regularización, 12.1 — Proyecto guiado ·

Comparación de resultados

Comparación de resultados: Un mini-proyecto para aplicar regularización

Introducción

La comparación de resultados es una técnica fundamental para evaluar y ajustar modelos de aprendizaje profundo. A través de este mini-proyecto, profundizarás en la aplicación práctica de técnicas de regularización como L2 y dropout, obteniendo un mejor entendimiento del impacto que tienen sobre el rendimiento de tu modelo. En esta guía te guiaremos a través de cada paso necesario para implementar estas técnicas y comparar los resultados.

Explicación principal con ejemplos

Paso 1: Crear un modelo base sin regularización

Primero, crea un modelo base utilizando una arquitectura común como DenseNet o ResNet. Este será tu punto de partida para comparar los resultados.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense

model_base = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(128, activation='relu'),
    Dense(10, activation='softmax')
])
model_base.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

Paso 2: Aplicar regularización L2

Luego, aplica la regularización L2 a los pesos del modelo. Esto se hace usando el parámetro kernel_regularizer en las capas Dense.

from tensorflow.keras.regularizers import l2

model_l2 = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(128, activation='relu', kernel_regularizer=l2(0.001)),
    Dense(10, activation='softmax')
])
model_l2.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

Paso 3: Aplicar regularización dropout

Finalmente, aplica la técnica de dropout en las capas densas para controlar el sobreajuste. Esto se hace agregando una capa Dropout después de cada Dense.

from tensorflow.keras.layers import Dropout

model_dropout = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(128, activation='relu'),
    Dropout(0.5),
    Dense(10, activation='softmax')
])
model_dropout.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

Comparación de resultados

Para comparar los resultados, entrena cada modelo con una cantidad similar de datos y compara su rendimiento en la validación.

from tensorflow.keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(rescale=1./255)
train_generator = datagen.flow_from_directory(
    'path/to/train_data',
    target_size=(64, 64),
    batch_size=32,
    class_mode='sparse'
)

model_base.fit(train_generator, epochs=10)
model_l2.fit(train_generator, epochs=10)
model_dropout.fit(train_generator, epochs=10)

# Evalúa en la validación
val_generator = datagen.flow_from_directory(
    'path/to/validation_data',
    target_size=(64, 64),
    batch_size=32,
    class_mode='sparse'
)

print("Modelo base validation accuracy:", model_base.evaluate(val_generator)[1])
print("Modelo L2 validation accuracy:", model_l2.evaluate(val_generator)[1])
print("Modelo Dropout validation accuracy:", model_dropout.evaluate(val_generator)[1])

Errores típicos / trampas

Trampa 1: Mal configuración de la tasa de dropout

Una tasa de dropout muy alta puede causar un sobreajuste significativo, mientras que una tasa baja no tendrá efecto alguno. Se recomienda experimentar con diferentes tasas para encontrar el equilibrio adecuado.

Trampa 2: Regularización L2 demasiado fuerte o débil

La regularización L2 puede reducir la capacidad del modelo, lo que puede llevar a un sobreajuste. Es importante ajustar correctamente el valor de regularización para obtener los mejores resultados.

Trampa 3: Confusión entre train y eval

Es fácil olvidar aplicar las técnicas de regularización solo durante el entrenamiento y no en la evaluación. Esto puede dar falsas apariencias sobre el rendimiento del modelo en producción.

Checklist accionable

  1. Revisar configuraciones: Asegúrate que todas las configuraciones (tamaño de lote, tasa de aprendizaje, etc.) sean las mismas para comparar de manera justa.
  2. Comprobar la regularización: Verifica que la regularización se esté aplicando correctamente y con los valores adecuados en cada modelo.
  3. Evaluar resultados: No solo comentes el accuracy, sino también otras métricas relevantes como loss o precision.
  4. Documentar procesos: Mantén un registro detallado de cada experimento para entender mejor los resultados obtenidos.
  5. Analizar gráficos: Visualiza las curvas de entrenamiento y validación para detectar signos de sobreajuste.

Siguientes pasos

  1. Ajuste adicional: Si el modelo base no está funcionando bien, considera ajustar la arquitectura o probar con otros tipos de regularización.
  2. Aplicaciones avanzadas: Explora técnicas más avanzadas como batch normalization y data augmentation para mejorar aún más el rendimiento del modelo.
  3. Implementación en producción: Una vez que tengas un modelo optimizado, prepáralo para su implementación en producción asegurándote de que se comporta bien con datos nuevos.

Siguiendo estos pasos, tendrás una mejor comprensión de cómo aplicar técnicas de regularización y comparar los resultados obtenidos.

Contacto

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