HMC: Quantas dimensões são demais?

9

Pelo que li Monte Carlo Hamiltoniano, é o MCMCmétodo "ir" quando o seu problema é de alta dimensão.

Na prática, quantas dimensões 10, 100, 1.000, 10.000, 100.000, são demais? O custo computacional, sem dúvida, se tornará um problema e suponho que o modelo usado seja importante a considerar, mas essas coisas à parte, existe um limite prático para o número de dimensões quando se trata de obter boas amostras da distribuição desejada usando HMC?

Além disso, como podemos monitorar a convergência (ou a falta dela, suponho) quanto a problemas em que o número de parâmetros é grande demais para verificar traços, meios de execução, correlações automáticas etc. para parâmetros individuais?

Atualização: Encontrei este post que menciona alguns diagnósticos não visuais

ryguy
fonte

Respostas:

2

Número máximo de parâmetros

Depende muito da estrutura do seu problema. Por exemplo, minha experiência com vários modelos lineares hierárquicos em Stan foi que ele começa a ser muito lento (horas ou dias para ser concluído) em cerca de 10.000 a 30.000 parâmetros (alguns números reproduzíveis estão no meu blog sobre Stan vs. INLA ). Ao trabalhar com modelos que envolvem equações diferenciais ordinárias e estrutura complexa, 10 parâmetros podem ser muitos. Ao ajustar apenas um vetor de normais independentes (veja abaixo), Stan leva cerca de 40 minutos para concluir os parâmetros 1e5, usando as configurações padrão (aquecimento de 1000 iter, amostragem de 1000 iter, 4 cadeias). Portanto, ter muito mais do que 1e5 parâmetros é muito impraticável.

A parte mais longa de uma execução de Stan é, no entanto, a fase de aquecimento, quando os hiperparâmetros do algoritmo são ajustados. Se você puder fornecer bons valores para si mesmo (o que é difícil), poderá melhorar ainda mais o desempenho.

Além disso, o suporte do MPI para operações de matriz de paralelismo e descarregamento dentro da cadeia para a GPU deve ser adicionado em breve a Stan (veja, por exemplo, discussão aqui http://discourse.mc-stan.org/t/parallelization-again-mpi-to- the-rescue / 455/11 , e aqui http://discourse.mc-stan.org/t/stan-on-the-gpu/326/10 ) para que modelos ainda maiores provavelmente se tornem práticos no futuro próximo.

Diagnóstico em alta dimensão

A implementação do HMC em Stan fornece vários diagnósticos úteis que funcionam mesmo com grande número de parâmetros: transições divergentes n_eff(tamanho efetivo da amostra) e divisão Rhat(redução potencial de escala). Consulte o manual do Stan , seção "Monitoramento de Inicialização e Convergência", para obter uma explicação detalhada.


Código R para um modelo simples - apenas um conjunto de normais independentes que podem ser dimensionados no número de parâmetros, cabem no 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
fonte