Utilizarea derivatelor pentru actualizarea parametrilor modelului

Introducere în Deep Learning cu PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

O analogie pentru derivate

$$

Derivata reprezintă panta curbei

$$

  • Pante abrupte (săgeți roșii):
    • Pași mari, derivata este mare
  • Pante line (săgeți verzi):
    • Pași mici, derivata este mică
  • Fundul văii (săgeată albastră):
    • Plan, derivata este zero

$$

imaginea unei văi

Introducere în Deep Learning cu PyTorch

Funcții convexe și neconvexe

Aceasta este o funcție convexă

exemplu de funcție convexă

Aceasta este o funcție neconvexă

exemplu de funcție neconvexă cu minimul global evidențiat

Introducere în Deep Learning cu PyTorch

Legătura dintre derivate și antrenarea modelului

  • Calculați pierderea în pasul înainte în timpul antrenării

$$ Calcularea pierderii

Introducere în Deep Learning cu PyTorch

Legătura dintre derivate și antrenarea modelului

  • Gradienții ajută la minimizarea pierderii, ajustând ponderile și biasuriле straturilor
  • Repetați până la ajustarea straturilor

$$ Calcularea gradienților

Introducere în Deep Learning cu PyTorch

Concepte de retropropagare

$$

  • Considerați o rețea formată din trei straturi:

    • Începeți cu gradienții de pierdere pentru $L2$
    • Utilizați $L2$ pentru a calcula gradienții $L1$
    • Repetați pentru toate straturile ($L1$, $L0$)

Diagramă de retropropagare

Introducere în Deep Learning cu PyTorch

Retropropagare în 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
Introducere în Deep Learning cu PyTorch

Actualizarea manuală a parametrilor modelului

# 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

$$

  • Accesați gradientul fiecărui strat
  • Înmulțiți cu rata de învățare
  • Scădeți produsul din pondere
Introducere în Deep Learning cu PyTorch

Coborârea pe gradient

  • Pentru funcții neconvexe, se utilizează coborârea pe gradient

  • PyTorch simplifică acest lucru cu optimizatori

    • Coborâre stochastică pe gradient (SGD)
import torch.optim as optim

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

# Perform parameter updates optimizer.step()
Introducere în Deep Learning cu PyTorch

Să exersăm!

Introducere în Deep Learning cu PyTorch

Preparing Video For Download...