HMC: Berapa banyak dimensi yang terlalu banyak?

9

Dari apa yang saya baca Hamiltonian Monte Carlo adalah metode "goto" MCMCketika masalah Anda adalah dimensi tinggi.

Secara praktis, berapa banyak dimensi 10, 100, 1.000, 10.000, 100.000, ..., terlalu banyak? Biaya komputasi tidak diragukan lagi akan menjadi masalah dan saya kira model yang digunakan penting untuk dipertimbangkan tetapi hal-hal itu, apakah ada batasan praktis untuk jumlah dimensi dalam hal mendapatkan sampel yang baik dari distribusi yang diinginkan menggunakan HMC?

Juga, bagaimana kita bisa memantau konvergensi (atau kurangnya dugaan saya) untuk masalah di mana jumlah parameter terlalu banyak untuk memeriksa plot jejak, cara berjalan, autokorelasi, dll untuk parameter individual?

Pembaruan: Menemukan posting ini yang menyebutkan beberapa diagnostik non-visual

ryguy
sumber

Jawaban:

2

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))
Martin Modrák
sumber