Kỹ thuật Log-Sum-Exp tránh tràn số dấu phẩy động (Log-Sum-Exp Trick)
Trong học máy, khi tính chuẩn hóa xác suất hoặc hàm Cross-Entropy Loss, ta thường xuyên phải tính:
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: stable-softmax-logits.
Nội dung đề bài
Mô tả bài toán
Trong học máy, khi tính chuẩn hóa xác suất hoặc hàm Cross-Entropy Loss, ta thường xuyên phải tính: log ( ∑i=1V ezi ) Nếu tính ngây thơ bằng np.log(np.sum(np.exp(z))):
- Nếu zi > 709 (với float64) hoặc zi > 88 (với float32), ezi sẽ tràn số thành
inf, khiến kết quả trở thànhinf. - Nếu tất cả zi < -709, ezi sẽ triệt tiêu dưới số 0 (underflow), khiến kết quả là log(0) = -inf.
Kỹ thuật Log-Sum-Exp (LSE) triệt tiêu hoàn toàn lỗi số học bằng cách trừ đi giá trị cực đại m = maxj zj: LSE(z) = m + log ( ∑i=1V ezi - m )
Hãy viết hàm stable_logsumexp(Z: np.ndarray, axis: int = -1, keepdims: bool = False) -> np.ndarray:
- Nhận tensor Z bất kỳ số chiều.
- Tính toán Log-Sum-Exp dọc theo trục
axisđược chỉ định. - Đảm bảo tính toán hoàn toàn ổn định trên kiểu dữ liệu
np.float64. - Trả về mảng NumPy float64.
Input
- Hàm
stable_logsumexp(Z,axis,keepdims): 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
stable_logsumexp: Trả về kết quả kiểunp.ndarraytheo đú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: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- 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
Z = np.array([1000.0, 1000.0, 1000.0])
lse = stable_logsumexp(Z)Output
1001.0986Giả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
Z = np.array([-np.inf, -np.inf])
lse = stable_logsumexp(Z)Output
-infGiả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.
