Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

PyTorch desde cero, Unidad 6 — Funciones de pérdida y optimizadores, 6.1 — Funciones de pérdida ·

Regresión

Regresión

Introducción

La regresión es una técnica fundamental en el aprendizaje automático y el análisis predictivo, donde se busca predecir un valor continuo. En el contexto de PyTorch, las funciones de pérdida para la regresión son clave para evaluar la precisión de nuestros modelos en tareas como la predicción del precio de una casa basado en sus características, o el pronóstico de precios bursátiles.

Explicación principal

En PyTorch, existen varias funciones de pérdida disponibles para regresiones, y cada una tiene su propio propósito. La función más común es nn.MSELoss, que mide la diferencia entre las predicciones y las etiquetas reales utilizando el error cuadrático medio (Mean Squared Error). Otro ejemplo es nn.L1Loss, que utiliza el error absoluto.

Ejemplo de uso

A continuación, se muestra un ejemplo básico de cómo utilizar una función de pérdida para regresión en PyTorch:

import torch
from torch import nn

# Definición del modelo (simplificado)
class SimpleRegressionModel(nn.Module):
    def __init__(self):
        super(SimpleRegressionModel, self).__init__()
        self.linear = nn.Linear(1, 1)

    def forward(self, x):
        return self.linear(x)

# Creación de un modelo
model = SimpleRegressionModel()

# Definición del optimizador y la función de pérdida
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
criterion = nn.MSELoss()

# Datos de ejemplo (una característica y su precio real)
x_train = torch.tensor([[1.], [2.], [3.]])
y_train = torch.tensor([[2.], [4.], [6.]])

for epoch in range(500):
    # Predicción
    outputs = model(x_train)

    # Cálculo de la pérdida
    loss = criterion(outputs, y_train)

    # Limpieza de gradientes anteriores
    optimizer.zero_grad()

    # Propagación hacia atrás
    loss.backward()

    # Actualización de los pesos
    optimizer.step()

print(f'Peso estimado: {model.linear.weight.item()}')

Errores típicos / trampas

  1. Inversión de predicciones y etiquetas: Una de las causas más comunes de errores en la regresión es confundir el orden de outputs e y_train. Asegúrate de que estás pasando las predicciones del modelo como el primer argumento a la función de pérdida.
  1. Mala elección de la función de pérdida: Para problemas donde los errores en ciertos valores son más costosos, es posible que desees usar una función de pérdida diferente. Por ejemplo, si un error pequeño en una predicción con un valor alto es muy problemático, podría ser mejor usar nn.L1Loss o alguna otra versión ponderada.
  1. Optimización ineficiente: Algunos optimizadores pueden converger más rápidamente que otros para ciertos conjuntos de datos y modelos. Experimenta con diferentes tamaños de paso (lr) y tipos de optimizadores, como torch.optim.Adam o torch.optim.RMSprop.

Checklist accionable

  1. Verifica el orden: Asegúrate de que estás pasando las predicciones del modelo a la función de pérdida antes que las etiquetas reales.
  2. Elige la función de pérdida adecuada: Conoce los pros y contras de MSELoss y L1Loss, y escoge una basado en el problema específico que estás resolviendo.
  3. Experimenta con optimizadores diferentes: Prueba varios tipos de optimizadores para encontrar el mejor ajuste para tu modelo.
  4. Monitorea la convergencia: Asegúrate de que tu modelo está convergiendo y no está quedándose atrapado en un mínimo local o divergiendo.
  5. Ajusta los hiperparámetros: Experimenta con diferentes tamaños de paso (lr), factores de decaimiento, y otros parámetros del optimizador para mejorar la convergencia.

Cierre

La regresión es una herramienta poderosa en el análisis predictivo y el aprendizaje automático. Al utilizar PyTorch, puedes elegir entre varias funciones de pérdida y ajustarlos a tu problema específico. Recuerda siempre verificar tus predicciones y ajustar los hiperparámetros para obtener el mejor rendimiento.

Siguientes pasos

  • Continúa aprendiendo sobre clasificación: Aprende cómo usar funciones de pérdida para problemas de clasificación, que son muy diferentes a las de regresión.
  • Explora la transferencia de aprendizaje: Utiliza modelos preentrenados para tareas de regresión y compara su rendimiento con modelos entrenados desde cero.
  • Participa en competencias de Kaggle: Aplíca lo que has aprendido a problemas reales y participa en competencias de predicción para mejorar tus habilidades.

Contacto

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