Menggunakan turunan untuk memperbarui parameter model

Pengantar Deep Learning dengan PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Analogi untuk turunan

$$

Turunan merepresentasikan kemiringan kurva

$$

  • Kemiringan curam (panah merah):
    • Langkah besar, turunan tinggi
  • Kemiringan landai (panah hijau):
    • Langkah kecil, turunan rendah
  • Dasar lembah (panah biru):
    • Datar, turunan nol

$$

gambar lembah

Pengantar Deep Learning dengan PyTorch

Fungsi konveks dan non-konveks

Ini adalah fungsi konveks

contoh fungsi konveks

Ini adalah fungsi non-konveks

contoh fungsi non-konveks dengan minimum global disorot

Pengantar Deep Learning dengan PyTorch

Menghubungkan turunan dan pelatihan model

  • Hitung loss pada forward pass saat pelatihan

$$ Menghitung loss

Pengantar Deep Learning dengan PyTorch

Menghubungkan turunan dan pelatihan model

  • Gradien membantu meminimalkan loss, menyetel bobot dan bias
  • Ulangi hingga lapisan tersetel

$$ Menghitung gradien

Pengantar Deep Learning dengan PyTorch

Konsep backpropagation

$$

  • Pertimbangkan jaringan dengan tiga lapisan:

    • Mulai dari gradien loss untuk $L2$
    • Gunakan $L2$ untuk menghitung gradien $L1$
    • Ulangi untuk semua lapisan ($L1$, $L0$)

Diagram backpropagation

Pengantar Deep Learning dengan PyTorch

Backpropagation di PyTorch

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


# Hitung loss dan gradien criterion = CrossEntropyLoss() loss = criterion(prediction, target) loss.backward()
# Akses gradien tiap lapisan
model[0].weight.grad
model[0].bias.grad
model[1].weight.grad
model[1].bias.grad
model[2].weight.grad
model[2].bias.grad
Pengantar Deep Learning dengan PyTorch

Memperbarui parameter model secara manual

# Learning rate biasanya kecil
lr = 0.001

# Perbarui bobot
weight = model[0].weight
weight_grad = model[0].weight.grad


weight = weight - lr * weight_grad
# Perbarui bias bias = model[0].bias bias_grad = model[0].bias.grad
bias = bias - lr * bias_grad

$$

  • Akses gradien tiap lapisan
  • Kalikan dengan learning rate
  • Kurangkan hasilnya dari bobot
Pengantar Deep Learning dengan PyTorch

Gradient descent

  • Untuk fungsi non-konveks, kita gunakan gradient descent

  • PyTorch mempermudah dengan optimizer

    • Stochastic gradient descent (SGD)
import torch.optim as optim

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

# Lakukan pembaruan parameter optimizer.step()
Pengantar Deep Learning dengan PyTorch

Ayo berlatih!

Pengantar Deep Learning dengan PyTorch

Preparing Video For Download...