Türevleri kullanarak model parametrelerini güncelleme

PyTorch ile Deep Learning'e Giriş

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Türevler için bir benzetme

$$

Türev, eğrinin eğimini gösterir

$$

  • Dik eğimler (kırmızı oklar):
    • Büyük adımlar, türev yüksektir
  • Daha yatık eğimler (yeşil oklar):
    • Küçük adımlar, türev düşüktür
  • Vadi tabanı (mavi ok):
    • Düz, türev sıfırdır

$$

bir vadi resmi

PyTorch ile Deep Learning'e Giriş

Konveks ve konveks olmayan fonksiyonlar

Bu bir konveks fonksiyondur

konveks fonksiyon örneği

Bu bir konveks olmayan fonksiyondur

küresel minimumu vurgulanmış konveks olmayan fonksiyon örneği

PyTorch ile Deep Learning'e Giriş

Türevleri model eğitimiyle ilişkilendirme

  • Eğitimde ileri geçişte kaybı hesaplayın

$$ Kayıp hesaplama

PyTorch ile Deep Learning'e Giriş

Türevleri model eğitimiyle ilişkilendirme

  • Gradyanlar kaybı azaltır; katman ağırlık ve biaslarını ayarlar
  • Katmanlar ayarlandıkça tekrarlayın

$$ Gradyanların hesaplanması

PyTorch ile Deep Learning'e Giriş

Geri yayılım kavramları

$$

  • Üç katmanlı bir ağ düşünün:

    • $L2$ için kayıp gradyanlarıyla başlayın
    • $L2$ ile $L1$ gradyanlarını hesaplayın
    • Tüm katmanlar için tekrarlayın ($L1$, $L0$)

Geri yayılım diyagramı

PyTorch ile Deep Learning'e Giriş

PyTorch'ta geri yayılım

# 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
PyTorch ile Deep Learning'e Giriş

Model parametrelerini elle güncelleme

# 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

$$

  • Her katmanın gradyanına erişin
  • Öğrenme oranı ile çarpın
  • Bu çarpımı ağırlıktan çıkarın
PyTorch ile Deep Learning'e Giriş

Gradyan inişi

  • Konveks olmayan fonksiyonlar için gradyan inişi kullanırız

  • PyTorch bunu optimizatörlerle basitleştirir

    • Stokastik gradyan inişi (SGD)
import torch.optim as optim

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

# Perform parameter updates optimizer.step()
PyTorch ile Deep Learning'e Giriş

Hadi pratik yapalım!

PyTorch ile Deep Learning'e Giriş

Preparing Video For Download...