Dùng đạo hàm để cập nhật tham số mô hình

Nhập môn Deep Learning với PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Ví dụ minh họa về đạo hàm

$$

Đạo hàm biểu thị độ dốc của đường cong

$$

  • Dốc lớn (mũi tên đỏ):
    • Bước lớn, đạo hàm cao
  • Dốc nhẹ (mũi tên xanh lá):
    • Bước nhỏ, đạo hàm thấp
  • Đáy thung lũng (mũi tên xanh dương):
    • Phẳng, đạo hàm bằng 0

$$

hình ảnh một thung lũng

Nhập môn Deep Learning với PyTorch

Hàm lồi và không lồi

Đây là hàm lồi

ví dụ về hàm lồi

Đây là hàm không lồi

ví dụ về hàm không lồi với điểm cực tiểu toàn cục được tô đậm

Nhập môn Deep Learning với PyTorch

Kết nối đạo hàm và huấn luyện mô hình

  • Tính loss ở lượt truyền xuôi khi huấn luyện

$$ Tính toán loss

Nhập môn Deep Learning với PyTorch

Kết nối đạo hàm và huấn luyện mô hình

  • Gradient giúp giảm loss, chỉnh weightbias của tầng
  • Lặp lại cho đến khi các tầng được chỉnh tối ưu

$$ Tính gradient

Nhập môn Deep Learning với PyTorch

Khái niệm lan truyền ngược

$$

  • Xét mạng gồm ba tầng:

    • Bắt đầu với gradient của hàm mất mát cho $L2$
    • Dùng $L2$ để tính gradient của $L1$
    • Lặp cho mọi tầng ($L1$, $L0$)

Sơ đồ lan truyền ngược

Nhập môn Deep Learning với PyTorch

Lan truyền ngược trong 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
Nhập môn Deep Learning với PyTorch

Tự cập nhật tham số mô hình

# 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

$$

  • Truy cập gradient của từng tầng
  • Nhân với learning rate
  • Trừ tích này khỏi weight
Nhập môn Deep Learning với PyTorch

Gradient descent

  • Với hàm không lồi, ta dùng gradient descent

  • PyTorch đơn giản hóa bằng optimizer

    • Stochastic Gradient Descent (SGD)
import torch.optim as optim

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

# Perform parameter updates optimizer.step()
Nhập môn Deep Learning với PyTorch

Hãy thực hành!

Nhập môn Deep Learning với PyTorch

Preparing Video For Download...