Utilizar derivadas para actualizar los parámetros del modelo

Introducción al aprendizaje profundo con PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Una analogía para los derivados

$$

La derivada representa la pendiente de la curva

$$

  • Pendientes pronunciadas (flechas rojas):
    • Pasos grandes, la derivada es alta
  • Pendientes más suaves (flechas verdes):
    • Pequeños pasos, la derivada es baja
  • Fondo del valle (flecha azul):
    • Plana, la derivada es cero

$$

la imagen de un valle

Introducción al aprendizaje profundo con PyTorch

Funciones convexas y no convexas

Se trata de una función convexa

un ejemplo de función convexa

Se trata de una función no convexa

ejemplo de función no convexa con mínimo global resaltado

Introducción al aprendizaje profundo con PyTorch

Conectar derivados y formación de modelos

  • Calcula la pérdida en el pase hacia adelante durante el entrenamiento

() Cálculo de la pérdida

Introducción al aprendizaje profundo con PyTorch

Conectar derivados y formación de modelos

  • Los gradientes ayudan a minimizar las pérdidas, ajustar los pesos de las capas y los sesgos
  • Repite la operación hasta que las capas estén afinadas

() Cálculo de gradientes

Introducción al aprendizaje profundo con PyTorch

Conceptos de retropropagación

$$

  • Considera una red formada por tres capas:

    • Empieza con gradientes de pérdida para $L2$
    • Utiliza $L2$ para calcular los gradientes $L1$
    • Repite para todas las capas ($L1$, $L0$)

Diagrama de retropropagación

Introducción al aprendizaje profundo con PyTorch

Retropropagación en PyTorch

# Run a forward pass 
model = nn.Sequential(nn.Linear(16, 8),
                      nn.Linear(8, 4),
                      nn.Linear(4, 2))
prediction = model(sample)


# Calculate the loss and gradients criterion = CrossEntropyLoss() loss = criterion(prediction, target) loss.backward()
# Access each layer's gradients
model[0].weight.grad
model[0].bias.grad
model[1].weight.grad
model[1].bias.grad
model[2].weight.grad
model[2].bias.grad
Introducción al aprendizaje profundo con PyTorch

Actualizar manualmente los parámetros del modelo

# Learning rate is typically small
lr = 0.001

# Update the weights
weight = model[0].weight
weight_grad = model[0].weight.grad


weight = weight - lr * weight_grad
# Update the biases bias = model[0].bias bias_grad = model[0].bias.grad
bias = bias - lr * bias_grad

$$

  • Acceder al gradiente de cada capa
  • Multiplica por la tasa de aprendizaje
  • Resta este producto del peso
Introducción al aprendizaje profundo con PyTorch

Descenso gradual

  • Para las funciones no convexas, utilizaremos el descenso de gradiente

  • PyTorch simplifica esto con optimizadores

    • Descenso de gradiente estocástico (SGD)
import torch.optim as optim

# Create the optimizer
optimizer = optim.SGD(model.parameters(), lr=0.001)

# Perform parameter updates optimizer.step()
Introducción al aprendizaje profundo con PyTorch

¡Vamos a practicar!

Introducción al aprendizaje profundo con PyTorch

Preparing Video For Download...