Cắt Giảm Gradient Toàn Cục theo Chuẩn L2 (Gradient Norm Clipping)
1. Tính chuẩn L2 tổng thể trên toàn bộ các tensor gradient:
Tiến độ của tôi ở bài này
Điểm đượ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: numpy-broadcasting-matrix-norm.
Nội dung đề bài
Mục tiêu kiến thức
- Phòng ngừa hiện tượng Bùng nổ Gradient (Exploding Gradient) trong huấn luyện RNN/Transformer.
- Phân biệt giữa Clip từng phần tử (Value Clipping) và Clip toàn cục theo chuẩn (Global Norm Clipping):
- Value clipping làm méo mó vector hướng của gradient (directional distortion).
- Global Norm clipping bảo toàn 100% phương hướng của vector gradient trong không gian tham số, chỉ co tỷ lệ độ dài (magnitude scaling).
- Thuật toán:
- Tính chuẩn L2 tổng thể trên toàn bộ các tensor gradient:
total_norm = √(∑i ∑j gij2)
- Nếu total_norm > max_norm:
Hệ số co: clip_coef = max_normtotal_norm + ε. Nhân từng gradient với hệ số co: gi ← gi · clip_coef.
- Ngược lại (nếu total_norm ≤ max_norm): Giữ nguyên gradient.
Yêu cầu
Viết hàm clip_grad_norm(grads: list[np.ndarray], max_norm: float, eps: float = 1e-6) -> tuple[list[np.ndarray], float]:
- Nhận danh sách các mảng NumPy gradient
grads. - Cập nhật tại chỗ hoặc trả về danh sách các gradient đã được chuẩn hóa co tỉ lệ.
- Trả về tuple:
(clipped_grads, float(total_norm)).
Input
- Hàm
clip_grad_norm(grads,max_norm,eps): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
clip_grad_norm: Trả về kết quả kiểutuple[list[np.ndarray], float]theo đúng đặc tả kỹ thuật và kích thước quy định.
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
g1 = np.array([3.0])
g2 = np.array([4.0])
clipped, total_norm = clip_grad_norm([g1, g2], max_norm=2.5)Output
([array([1.4999997]), array([1.9999996])], 5)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
g = [np.array([1.0, 1.0])]
clipped, total_norm = clip_grad_norm(g, max_norm=10.0)Output
([array([1., 1.])], 1.414214)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.
