Gỡ lỗi các chương trình MCMC nổi tiếng là khó khăn. Khó khăn phát sinh do một số vấn đề trong đó có một số:
(a) Bản chất tuần hoàn của thuật toán
Chúng tôi lặp đi lặp lại vẽ các tham số có điều kiện trên tất cả các tham số khác. Do đó, nếu một triển khai không hoạt động đúng, rất khó để cô lập lỗi vì vấn đề có thể ở bất kỳ đâu trong bộ lấy mẫu lặp.
(b) Câu trả lời đúng không nhất thiết phải biết.
Chúng tôi không có cách nào để biết nếu chúng tôi đã đạt được sự hội tụ. Ở một mức độ nào đó, điều này có thể được giảm thiểu bằng cách kiểm tra mã trên dữ liệu mô phỏng.
Trước những vấn đề trên, tôi đã tự hỏi liệu có một kỹ thuật tiêu chuẩn nào có thể được sử dụng để gỡ lỗi các chương trình MCMC không.
Biên tập
Tôi muốn chia sẻ cách tiếp cận tôi sử dụng để gỡ lỗi các chương trình của riêng tôi. Tôi, tất nhiên, làm tất cả những điều mà PeterR đã đề cập. Ngoài ra, tôi thực hiện các thử nghiệm sau bằng dữ liệu mô phỏng:
Bắt đầu tất cả các tham số từ các giá trị thực và xem nếu bộ lấy mẫu phân kỳ quá xa so với các giá trị thực.
Tôi có các cờ cho mỗi tham số trong bộ lấy mẫu lặp để xác định xem tôi có đang vẽ tham số đó trong bộ lấy mẫu lặp không. Ví dụ: nếu một cờ 'gen_param1' được đặt thành true thì tôi vẽ 'param1' từ điều kiện đầy đủ của nó trong bộ lấy mẫu lặp. Nếu điều này được đặt thành false thì 'param1' được đặt thành giá trị thực của nó.
Sau khi viết xong bộ lấy mẫu, tôi kiểm tra chương trình bằng công thức sau:
- Đặt cờ tạo cho một tham số thành true và mọi thứ khác thành false và đánh giá sự hội tụ đối với giá trị thực.
- Đặt cờ tạo cho một tham số khác kết hợp với tham số đầu tiên và một lần nữa đánh giá sự hội tụ.
Các bước trên đã vô cùng hữu ích với tôi.