KL divergence giữa hai Gaussian chéo
Trong VAE, số hạng chính quy hoá đo độ lệch giữa phân phối hậu nghiệm q và tiên nghiệm
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: python-basics, ai-gaussian-density.
Nội dung đề bài
Mô tả bài toán
Trong VAE, số hạng chính quy hoá đo độ lệch giữa phân phối hậu nghiệm q và tiên nghiệm p bằng KL divergence. Khi cả hai là Gaussian chéo (các chiều độc lập), công thức tách thành tổng theo từng chiều với log(var_p/var_q) và tỉ lệ phương sai.
Yêu cầu
Viết hàm kl_diag_gaussians(mu_q, var_q, mu_p, var_p) tính 0.5 * sum( log(var_p/var_q) + (var_q + (mu_q - mu_p)^2) / var_p - 1 ) trên từng chiều.
Quy ước nộp bài
Nộp hàm kl_diag_gaussians trong solution.py. Hệ thống gọi hàm trực tiếp và so với sai số 1e-6; không đọc stdin và không in ra stdout.
Input
- mu_q, var_q: kỳ vọng và phương sai của q (danh sách cùng độ dài).
- mu_p, var_p: kỳ vọng và phương sai của p (danh sách cùng độ dài).
Output
Một số thực là KL divergence KL(q || p).
Ràng buộc
- Bốn danh sách phải cùng độ dài; nếu khác, ném ValueError.
- Phương sai phải dương; nếu có giá trị <= 0, ném ValueError.
Ví dụ 1
Input
kl_diag_gaussians(mu_q=[0.0], var_q=[1.0], mu_p=[0.0], var_p=[1.0])
Output
0.0
Ví dụ 2
Input
kl_diag_gaussians(mu_q=[0.0], var_q=[1.0], mu_p=[1.0], var_p=[1.0])
Output
0.5
Giải thích
Với mu_q = [0, 0], var_q = [1, 2], mu_p = [0, 0], var_p = [1, 1], chiều 0 góp 0, chiều 1 góp log(1/2) + 2 - 1 = 0.3068528194400547, nên kết quả là 0.15342640972002736.
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.
