Cài đặt Thuật toán Tối ưu SGD với Momentum & Weight Decay từ Gốc
1. Nếu có L2 Weight Decay (lambda > 0): gt arrow gt + lambda · wt.
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: linear-regression-gradient-descent.
Nội dung đề bài
Mục tiêu kiến thức
- Hiểu cách hoạt động của biến vận tốc (velocity buffer) v để vượt qua các thung lũng phẳng và dao động hình zigzag.
- Công thức cập nhật tiêu chuẩn:
- Nếu có L2 Weight Decay (lambda > 0): gt arrow gt + lambda · wt.
- Cập nhật vận tốc: vt+1 = beta · vt + gt.
- Nếu nesterov=True: ut = gt + beta · vt+1. Ngược lại: ut = vt+1.
- Cập nhật tham số: wt+1 = wt - alpha · ut.
Trong đó: alpha là learning rate, beta là momentum coefficient, lambda là weight decay.
Yêu cầu
Xây dựng lớp SGDMomentumOptimizer:
class SGDMomentumOptimizer:
def __init__(self, params: list[np.ndarray], lr: float = 0.01, momentum: float = 0.9, weight_decay: float = 0.0, nesterov: bool = False):
pass
def step(self, grads: list[np.ndarray]) -> None:
pass- params: Danh sách các mảng NumPy tham số cần cập nhật tại chỗ (in-place mutation).
- Khởi tạo bộ đệm vận tốc v bằng 0 cho từng tham số.
- Phương thức step(grads): Nhận danh sách các gradient tương ứng với từng tham số, cập nhật w tại chỗ theo công thức trên.
Input
- Lớp SGDMomentumOptimizer(params, lr, momentum, weight_decay, nesterov): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.
Output
- Các phương thức của SGDMomentumOptimizer: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.
Ràng buộc
- Thời gian chạy tối đa: 2000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
w = np.array([10.0])
opt = SGDMomentumOptimizer([w], lr=0.1, momentum=0.9, weight_decay=0.0)
opt.step([np.array([1.0])])
opt.step([np.array([1.0])])
Output
[9.439]
Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
w = np.array([2.0])
opt = SGDMomentumOptimizer([w], lr=0.1, momentum=0.0, weight_decay=0.5)
opt.step([np.array([0.0])])
Output
[1.805]
Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
