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))