Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Redes neuronales desde cero, Unidad 9 — Overfitting en redes neuronales, 9.1 — Alta capacidad y riesgos ·

Memorización

Memorización: El riesgo oculto detrás de la alta capacidad

Introducción

La memorización es un fenómeno subyacente a los problemas de overfitting en redes neuronales. Este fenómeno surge cuando una red neuronal se ajusta demasiado a su conjunto de entrenamiento, capturando no solo las tendencias relevantes, sino también los ruidos y patrones aleatorios presentes en los datos. En términos prácticos, esto significa que la red aprenderá a predecir perfectamente los ejemplos del conjunto de entrenamiento, pero su rendimiento sobre datos desconocidos será malo.

Explicación principal

Qué es la memorización

La memorización ocurre cuando una red neuronal tiene demasiada capacidad y se ajusta a cada punto de datos en el conjunto de entrenamiento. Esto lleva a un modelo que es perfectamente capaz de predecir los valores de salida para todos los puntos de datos en el conjunto de entrenamiento, pero falla al aplicarlo a nuevos datos.

Ejemplo práctico

Imagina una red neuronal simple con dos capas ocultas y 10 neuronas en cada capa, intentando clasificar unos pocos miles de imágenes. Si la red tiene demasiada capacidad (es decir, es muy compleja para los datos), puede aprender a clasificar perfectamente cada imagen en el conjunto de entrenamiento. Sin embargo, si se aplica esta red a nuevas imágenes, es probable que no haga una buena predicción.

import numpy as np

# Ejemplo simplificado
X = np.random.rand(1000, 2)  # Conjunto de entrada con 1000 ejemplos y 2 características
y = np.sin(X[:, 0] * np.pi + X[:, 1])  # Ruido agregado a la señal real

# Red neuronal simplificada
def simple_nn(X_train, y_train):
    model = SomeSimpleNN()
    model.fit(X_train, y_train)
    return model.predict(X)

# Predicción sobre datos de entrenamiento
y_pred_train = simple_nn(X, y + np.random.randn(1000) * 0.2)

# Predicción sobre nuevos datos
X_new = np.random.rand(1000, 2)
y_new = simple_nn(X_new, None)  # Sin etiquetas reales para este ejemplo

Interpretación geométrica

En términos geométricos, la memorización puede ser visualizada como una red que ajusta la función de decisión a cada dato individual en lugar de generalizar sobre grupos. Esto se conoce también como "sobreajuste" y es comúnmente causado por redes muy complejas o un conjunto de entrenamiento insuficientemente grande.

Errores típicos / trampas

  1. Sobrerendimiento: Creer que una alta precisión en el conjunto de entrenamiento garantiza un buen rendimiento general.
  2. Falta de validación cruzada: No usar validación cruzada para evaluar la capacidad del modelo de generalizar.
  3. Conjuntos de datos insuficientemente grandes: Tener conjuntos de datos pequeños puede llevar a modelos que memorizan el conjunto de entrenamiento.

Checklist accionable

  1. Reducir la complejidad del modelo: Prueba reducir el número de capas o neuronas en tu red.
  2. Aumentar el tamaño del conjunto de entrenamiento: Si es posible, obtén más datos para mejorar la generalización.
  3. Usa regularización L1 y L2: Estas técnicas ayudan a evitar el overfitting al penalizar grandes valores de los pesos.
  4. Implementa dropout: Este método impide que cualquier neurona sea too dependiente del resto, mejorando la capacidad de generalización.
  5. Ajusta la tasa de aprendizaje y el momentum: Un ajuste incorrecto puede llevar a un overfitting o underfitting.
  6. Mira las curvas de aprendizaje: Verifica si hay una divergencia entre las curvas de entrenamiento y validación.

Cierre: Siguientes pasos

  1. Repasa la regularización: Aprende más sobre L1, L2, eL0 regresión.
  2. Implementa un proyecto de red neuronal: Toma el ejemplo anterior y crea tu propio conjunto de datos con overfitting para aplicar estas técnicas.
  3. Explora frameworks avanzados: Utiliza PyTorch o TensorFlow para implementar regularización y dropout.

La memorización es una cuestión crítica en la aplicación práctica del aprendizaje automático, especialmente cuando se trabaja con datos complejos o limitados. Al entender este concepto y aplicar las mejores prácticas, puedes construir modelos que no solo se ajusten a los datos de entrenamiento, sino que también generalicen adecuadamente a nuevos conjuntos de datos.

Contacto

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