Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Regularización y dropout, Unidad 2 — Qué es regularizar realmente, 2.1 — Regularización como restricción ·

Relación con bias–variance

Relación con bias–variance

Introducción

En la regularización de modelos de Deep Learning, comprender la relación entre bias (sesgo) y variance (varianza) es fundamental para prevenir el sobreajuste. El sesgo se refiere a la tendencia del modelo a subestimar o sobreestimar los valores reales, mientras que la varianza mide la sensibilidad del modelo al ruido en los datos de entrenamiento. Un alto sesgo conduce a un underfitting (subajuste), donde el modelo es demasiado sencillo para capturar las características relevantes; un alto nivel de varianza, por otro lado, indica un sobreajuste, donde el modelo se ajusta excesivamente a los datos de entrenamiento y pierde capacidad para generalizar.

Explicación principal con ejemplos

La regularización es una técnica utilizada para controlar tanto el sesgo como la varianza. La teoría subyacente implica que aumentar la complejidad del modelo puede reducir el sesgo pero a costa de un aumento en la varianza. Por otro lado, disminuir la complejidad puede reducir la varianza pero potencialmente incrementa el sesgo.

Ejemplo con código

Vamos a ver un ejemplo práctico utilizando una red neuronal simple en Python con Keras. Este ejemplo muestra cómo ajustar los parámetros de regularización puede afectar tanto el sesgo como la varianza del modelo.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np

# Generamos un conjunto de datos sintético
np.random.seed(42)
X = np.random.rand(100, 1)
y = X * 2 + 0.5 + np.random.randn(100) * 0.5  # Añadimos ruido

# Definimos un modelo sin regularización
model_no_reg = Sequential([
    Dense(1, input_dim=1),
])

# Definimos un modelo con L2 regularización
model_l2_reg = Sequential([
    Dense(1, input_dim=1, kernel_regularizer='l2', activity_regularizer='l2')
])

# Compilamos los modelos
model_no_reg.compile(optimizer='adam', loss='mse')
model_l2_reg.compile(optimizer='adam', loss='mse')

# Entrenamos los modelos
history_no_reg = model_no_reg.fit(X, y, epochs=100, verbose=0)
history_l2_reg = model_l2_reg.fit(X, y, epochs=100, verbose=0)

# Visualizamos el rendimiento
import matplotlib.pyplot as plt

plt.plot(history_no_reg.history['loss'], label='Sin regularización')
plt.plot(history_l2_reg.history['loss'], label='Con L2 regularización')
plt.legend()
plt.show()

En este ejemplo, la red sin regularización es más sencilla y tiene un bajo sesgo pero alta varianza (es sensible al ruido). Añadiendo una regularización L2 reduce el sesgo pero disminuye también la varianza.

Errores típicos / trampas

  1. Regularización excesiva: Reducir tanto la regularización puede llevar a un underfitting.
  2. Seleccionar parámetros incorrectos: El valor de la constante de regularización (lambda) debe ser cuidadosamente seleccionado para no afectar negativamente el modelo.
  3. Confundir sesgo y varianza: Es común confundir el bajo sesgo con un modelo que es demasiado sencillo, y el alto sesgo con uno que es demasiado complejo.

Checklist accionable

  1. Evalúa la curva de pérdida en validación: Una subida pronunciada indica sobreajuste.
  2. Observa los coeficientes del modelo: Un modelado muy complejo sugiere un bajo sesgo pero alta varianza.
  3. Ajusta el valor de regularización: Experimenta con diferentes valores para encontrar la mejor equilibración entre sesgo y varianza.
  4. Utiliza validación cruzada: Valida el rendimiento del modelo en múltiples particiones del conjunto de datos.
  5. Monitoriza el rendimiento durante el entrenamiento: Observa cómo cambia la pérdida con las iteraciones.

Cierre

La regularización es una herramienta poderosa para controlar tanto el sesgo como la varianza de un modelo, mejorando así su capacidad para generalizar a nuevos datos. Es crucial entender y equilibrar estos dos aspectos para evitar el sobreajuste y asegurar que tu modelo funcione bien en producción.

Siguientes pasos

  • Ajusta parámetros de regularización: Experimenta con diferentes tipos y valores.
  • Implementa estrategias adicionales: Combina regularización L1, L2 y dropout según sea necesario.
  • Evalúa el rendimiento en nuevos datos: Verifica cómo se comporta el modelo fuera del conjunto de entrenamiento.

Siguiendo estos pasos, podrás mejorar significativamente la calidad y la estabilidad de tus modelos de Deep Learning.

Contacto

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