HMC: ¿Cuántas dimensiones son demasiadas?

9

Por lo que he leído, Hamiltonian Monte Carlo es el MCMCmétodo "goto" cuando su problema es de alta dimensión.

Hablando en términos prácticos, ¿cuántas dimensiones 10's, 100's, 1,000's, 10,000's, 100,000's, ..., son demasiadas? Sin duda, el costo computacional se convertirá en un problema y supongo que es importante considerar el modelo que se está utilizando, pero aparte de eso, ¿hay un límite práctico para el número de dimensiones a la hora de obtener buenas muestras de la distribución deseada HMC?

Además, ¿cómo podemos monitorear la convergencia (o falta de eso, supongo) para problemas en los que el número de parámetros es demasiado para verificar trazados, medios de ejecución, autocorrelaciones, etc. para parámetros individuales?

Actualización: encontré esta publicación que menciona algunos diagnósticos no visuales

ryguy
fuente

Respuestas:

2

Número máximo de parámetros.

Depende mucho de la estructura de su problema. Por ejemplo, mi experiencia con varios modelos lineales jerárquicos en Stan fue que comienza a ser muy lento (horas o días para completar) en alrededor de 10 000 - 30 000 parámetros (algunos números reproducibles están en mi blog en Stan vs. INLA ). Cuando se trabaja con modelos que involucran ecuaciones diferenciales ordinarias y estructuras complejas, 10 parámetros pueden ser demasiados. Al ajustar solo un vector de normales independientes (ver más abajo), Stan tarda unos 40 minutos en completar con los parámetros 1e5, utilizando la configuración predeterminada (calentamiento de 1000 iter, muestreo de 1000 iter, 4 cadenas). Por lo tanto, es muy poco práctico tener mucho más de 1e5 parámetros.

Sin embargo, la parte más larga de una ejecución de Stan es la fase de calentamiento cuando se ajustan los hiperparámetros del algoritmo. Si pudiera proporcionar buenos valores para usted solo (lo cual es difícil), podría impulsar aún más el rendimiento.

Además, el soporte de MPI para el paralelismo dentro de la cadena y las operaciones de la matriz de descarga a la GPU debería agregarse a Stan pronto (ver, por ejemplo, discusión aquí http://discourse.mc-stan.org/t/parallelization-again-mpi-to- the-rescue / 455/11 , y aquí http://discourse.mc-stan.org/t/stan-on-the-gpu/326/10 ), por lo que es probable que modelos más grandes se vuelvan prácticos en el futuro cercano.

Diagnóstico en alta dimensión

La implementación de HMC en Stan proporciona múltiples diagnósticos útiles que funcionan incluso con una gran cantidad de parámetros: transiciones divergentes n_eff(tamaño de muestra efectivo) y división Rhat(reducción de escala potencial). Consulte el manual de Stan , sección "Inicialización y monitoreo de convergencia" para obtener una explicación detallada de estos.


Código R para un modelo simple: solo un conjunto de normales independientes que puede escalar en el número de parámetros, encajar en 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
fuente