HMC: Có bao nhiêu kích thước là quá nhiều?


9

Từ những gì tôi đã đọc Hamiltonian Monte Carlo là MCMCphương pháp "goto" khi vấn đề của bạn là chiều cao.

Thực tế mà nói, có bao nhiêu kích thước 10, 100, 1.000, 10.000, 100.000, ... là quá nhiều? Chi phí tính toán chắc chắn sẽ trở thành một vấn đề và tôi cho rằng mô hình đang được sử dụng là quan trọng để xem xét nhưng những điều đó sang một bên, có giới hạn thực tế cho số lượng kích thước khi nhận được các mẫu tốt từ phân phối mong muốn sử dụng HMCkhông?

Ngoài ra, làm thế nào chúng ta có thể theo dõi sự hội tụ (hoặc thiếu ở đó tôi đoán) đối với các vấn đề trong đó số lượng tham số quá nhiều để kiểm tra các ô theo dõi, phương tiện chạy, tự động tương quan, v.v. cho các tham số riêng lẻ?

Cập nhật: Tìm thấy bài đăng này trong đó đề cập đến một số chẩn đoán không trực quan

Câu trả lời:


2

Số lượng tham số tối đa

Nó phụ thuộc rất nhiều vào cấu trúc của vấn đề của bạn. Ví dụ, kinh nghiệm của tôi với các mô hình tuyến tính phân cấp khác nhau trong Stan là nó bắt đầu rất chậm (vài giờ hoặc vài ngày để hoàn thành) vào khoảng 10 000 - 30 000 params (một số số có thể lặp lại trên blog của tôi trên Stan so với INLA ). Khi làm việc với các mô hình liên quan đến phương trình vi phân thông thường và cấu trúc phức tạp, 10 tham số có thể là quá nhiều. Khi chỉ lắp một vectơ quy tắc độc lập (xem bên dưới), Stan mất khoảng 40 phút để hoàn thành với các tham số 1e5, sử dụng cài đặt mặc định (khởi động 1000 lần lặp, lấy mẫu 1000 lần lặp, 4 chuỗi). Vì vậy, có nhiều hơn 1e5 params rất có thể là không thực tế.

Tuy nhiên, phần dài nhất của một lần chạy Stan là giai đoạn khởi động khi các siêu đường kính của thuật toán được điều chỉnh. Nếu bạn có thể tự cung cấp các giá trị tốt cho những người đó (rất khó), bạn có thể đẩy hiệu suất cao hơn nữa.

Ngoài ra, cần sớm hỗ trợ MPI cho hoạt động song song trong chuỗi và giảm tải ma trận cho GPU (Xem ví dụ thảo luận tại đây http://discference.mc-stan.org/t/ Championsization-again-mmpi-to- the-cứu / 455/11 , và ở đây http://discference.mc-stan.org/t/stan-on-the-gpu/326/10 ) vì vậy những mô hình lớn hơn có thể sẽ trở nên thiết thực trong tương lai gần.

Chẩn đoán ở chiều cao

Việc triển khai HMC trong Stan cung cấp nhiều chẩn đoán hữu ích hoạt động ngay cả với số lượng lớn các tham số: chuyển tiếp phân kỳ, n_eff(cỡ mẫu hiệu quả) và phân tách Rhat(giảm quy mô tiềm năng). Xem hướng dẫn sử dụng Stan , phần "Giám sát khởi tạo và hội tụ" để được giải thích chi tiết về những điều đó.


Mã R cho một mô hình đơn giản - chỉ là một tập hợp các quy tắc độc lập có thể chia tỷ lệ theo số lượng tham số, phù hợp với Stan:

library(rstan)
model_code = "
data {
 int N;
}

parameters {
 vector[N] a;
}

model {
 a ~ normal(0,1);
}
"

model = stan_model(model_code = model_code)

fit_large = sampling(model, data = list(N = 1e5))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.