Eniyileyiciler, eğitim ve değerlendirme

PyTorch ile Orta Düzey Deep Learning

Michal Oleszak

Machine Learning Engineer

Eğitim döngüsü

import torch.nn as nn
import torch.optim as optim

criterion = nn.BCELoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)


for epoch in range(1000): for features, labels in dataloader_train:
optimizer.zero_grad()
outputs = net(features)
loss = criterion( outputs, labels.view(-1, 1) )
loss.backward()
optimizer.step()
  • Kayıp fonksiyonu ve eniyileyiciyi tanımla
    • İkili sınıflama için BCELoss
    • SGD eniyileyici
  • Dönemler ve eğitim yığınları üzerinde yinele
  • Gradyanları temizle
  • İleri geçiş: model çıktıları
  • Kayıp hesapla
  • Gradyanları hesapla
  • Eniyileyici adımı: parametreleri güncelle
PyTorch ile Orta Düzey Deep Learning

Bir eniyileyici nasıl çalışır

 

İki uzunluklu iki vektör: biri parametre değerleri (1 ve 0.5), diğeri gradyanlar (0.9 ve -0.2).

PyTorch ile Orta Düzey Deep Learning

Bir eniyileyici nasıl çalışır

 

Oklar, parametreler ve gradyanlar içeren iki vektörün, hedef tahtası gibi çizilmiş eniyileyiciye aktarıldığını gösteriyor.

PyTorch ile Orta Düzey Deep Learning

Bir eniyileyici nasıl çalışır

 

Eniyileyiciden çıkan bir ok, iki parametre güncellemesi içeren bir vektöre işaret ediyor: -0.5 ve 0.5.

PyTorch ile Orta Düzey Deep Learning

Bir eniyileyici nasıl çalışır

 

Parametre güncellemelerinden gelen oklar, güncellenmiş parametre değerlerine işaret ediyor: 0.5 ve 1.0

PyTorch ile Orta Düzey Deep Learning

Bir eniyileyici nasıl çalışır

 

Parametre güncellemelerinden gelen oklar, güncellenmiş parametre değerlerine işaret ediyor: 0.5 ve 1.0

PyTorch ile Orta Düzey Deep Learning

Stokastik Gradyan İnişi (SGD)

optimizer = optim.SGD(net.parameters(), lr=0.01)
  • Güncelleme, öğrenme hızına bağlıdır
  • Basit ve verimli; temel modeller için
  • Uygulamada nadiren kullanılır
PyTorch ile Orta Düzey Deep Learning

Uyarlamalı Gradyan (Adagrad)

optimizer = optim.Adagrad(net.parameters(), lr=0.01)
  • Her parametre için öğrenme hızını uyarlar
  • Seyrek veriler için iyi
  • Öğrenme hızını çok hızlı düşürebilir
PyTorch ile Orta Düzey Deep Learning

Kök Ortalama Kare Yayılımı (RMSprop)

optimizer = optim.RMSprop(net.parameters(), lr=0.01)
  • Her parametre için güncelleme, önceki gradyanlarının büyüklüğüne göre yapılır
PyTorch ile Orta Düzey Deep Learning

Uyarlamalı Moment Tahmini (Adam)

optimizer = optim.Adam(net.parameters(), lr=0.01)
  • Muhtemelen en esnek ve en yaygın kullanılan
  • RMSprop + gradyan momentumu
  • Çoğunlukla varsayılan tercih
PyTorch ile Orta Düzey Deep Learning

Model değerlendirme

from torchmetrics import Accuracy

acc = Accuracy(task="binary")


net.eval() with torch.no_grad(): for features, labels in dataloader_test:
outputs = net(features)
preds = (outputs >= 0.5).float()
acc(preds, labels.view(-1, 1))
accuracy = acc.compute() print(f"Accuracy: {accuracy}")
Accuracy: 0.6759443283081055
  • Doğruluk metriğini kur
  • Modeli değerlendirme kipine al; test yığınlarını gradyansız dolaş
  • Veriyi modele verip olasılıkları al
  • Tahmin etiketlerini hesapla
  • Doğruluk metriğini güncelle
PyTorch ile Orta Düzey Deep Learning

Hadi pratik yapalım!

PyTorch ile Orta Düzey Deep Learning

Preparing Video For Download...