Jumlah parameter maksimum
Itu sangat tergantung pada struktur masalah Anda. Sebagai contoh, pengalaman saya dengan berbagai model linear hirarkis di Stan adalah bahwa itu mulai sangat lambat (jam atau hari untuk menyelesaikan) sekitar 10 000 - 30 000 params (beberapa angka yang dapat direproduksi ada di blog saya di Stan vs. INLA ). Ketika bekerja dengan model yang melibatkan persamaan diferensial biasa dan struktur kompleks, 10 parameter mungkin terlalu banyak. Ketika pas hanya vektor normals independen (lihat di bawah), Stan membutuhkan sekitar 40 menit untuk menyelesaikan dengan parameter 1e5, menggunakan pengaturan default (1000 iter warmup, 1000 iter sampling, 4 chain). Jadi memiliki lebih dari 1e5 params sangat mungkin tidak praktis.
Namun, bagian terpanjang dari proses Stan adalah fase pemanasan ketika hyperparameter dari algoritma di-tweak. Jika Anda bisa memberikan nilai bagus untuk mereka sendiri (yang sulit), Anda mungkin bisa mendorong kinerja lebih jauh.
Juga, dukungan MPI untuk paralelisme dalam-rantai dan operasi matriks pembongkaran ke GPU harus segera ditambahkan ke Stan (Lihat misalnya diskusi di sini http://discourse.mc-stan.org/t/parallelization-again-mpi-to- the-rescue / 455/11 , dan di sini http://discourse.mc-stan.org/t/stan-on-the-gpu/326/10 ) sehingga model yang lebih besar kemungkinan akan menjadi praktis dalam waktu dekat.
Diagnostik dalam dimensi tinggi
Implementasi HMC di Stan menyediakan beberapa diagnostik bermanfaat yang bekerja bahkan dengan sejumlah besar parameter: transisi divergen, n_eff
(ukuran sampel efektif) dan split Rhat
(pengurangan skala potensial). Lihat manual Stan , bagian "Inisialisasi dan Pemantauan Konvergensi" untuk penjelasan terperinci dari mereka.
Kode R untuk model sederhana - hanya satu set normals independen yang dapat menskalakan jumlah parameter, muat di 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))