Quay lại trang chủ15/25 trong danh mục
Optimizers
Bộ tối ưu
Trung bìnhneural-fundamentals
1Dự đoán1/8
Bạn đi xe máy qua một thung lũng hẹp dài. SGD đi zig-zag chậm. Cách nào để đi nhanh hơn?
2Khám phá2/8
Hình minh họa
Momentum + RMSProp + bias correction — mặc định phổ biến nhất
3Khoảnh khắc Aha3/8
Adam = Momentum + RMSProp + Bias Correction. Momentum tích lũy đà (đi nhanh hướng nhất quán). RMSProp chia LR cho chiều dao động (bước ngắn ở trục zig-zag). Bias correction sửa sai lệch ban đầu. Kết quả: hội tụ nhanh + ổn định — như Grab car có GPS tự động né đường tắc!
4Thử thách4/8
SGD zig-zag trên thung lũng hẹp vì trục ngắn (x) có gradient lớn hơn trục dài (y). RMSProp giải quyết thế nào?
5Giải thích5/8
Giải thích
SGD + Momentum:
RMSProp:
Adam (Adaptive Moment Estimation):
| Optimizer | LR mặc định | Khi nào dùng |
|---|---|---|
| SGD + Momentum | 0.01 - 0.1 | Vision (ResNet, EfficientNet) khi cần generalization tốt |
| Adam | 0.001 | Mặc định cho hầu hết bài toán, NLP, GAN |
| AdamW | 0.001 | Transformer (GPT, BERT, ViT) — weight decay tách riêng |
| RMSProp | 0.001 | RNN, RL (đang bị Adam thay thế) |
optimizers.py
import torch.optim as optim
# SGD + Momentum (vision tasks)
opt_sgd = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
# Adam (mặc định cho hầu hết)
opt_adam = optim.Adam(model.parameters(), lr=1e-3)
# AdamW (Transformer, weight decay tách riêng)
opt_adamw = optim.AdamW(
model.parameters(), lr=1e-3, weight_decay=0.01
)
# LR scheduler (quan trọng cho SGD)
scheduler = optim.lr_scheduler.CosineAnnealingLR(
opt_sgd, T_max=100
)Quy tắc chọn optimizer
Bắt đầu với AdamW(lr=1e-3, weight_decay=0.01) — hoạt động tốt cho hầu hết bài toán. Nếu cần squeeze thêm accuracy cho vision: thử SGD + Momentum + Cosine Annealing. Transformer: bắt buộc AdamW + warmup. Nhớ điều chỉnh learning rate phù hợp với optimizer.
6Thử thách nâng cao6/8
Bạn huấn luyện GPT-3 (175B tham số). Nên dùng optimizer nào?
7Tóm tắt7/8
Optimizers — Điểm chốt
- Momentum tích lũy đà → ít zig-zag. RMSProp chia LR theo lịch sử gradient² → tự cân bằng trục.
- Adam = Momentum + RMSProp + Bias Correction — mặc định phổ biến nhất.
- AdamW tách weight decay riêng → regularization chính xác hơn, bắt buộc cho Transformer.
- SGD + Momentum + LR scheduling cho generalization tốt nhất trên vision tasks.
- Adam cần 2× bộ nhớ so với SGD (lưu m, v). Với mô hình 175B tham số, đây là vấn đề thực tế.
8Kiểm tra8/8
Kiểm tra hiểu biết
Câu 1/4
Tại sao Adam cần bias correction ở các bước đầu?