Estou projetando um algoritmo de amostragem Hybrid Monte Carlo para PyMC e estou tentando torná-lo o mais livre possível e geral possível, por isso estou procurando bons conselhos sobre como projetar um algoritmo HMC. Eu li o capítulo da pesquisa de Radford e Beskos et. artigo recente de al. sobre ajuste ideal (tamanho da etapa) do HMC e reunimos as seguintes dicas:
- As variáveis de momento devem ser distribuídas com covariância , onde é geralmente algo como a matriz de covariância da distribuição (para distribuições simples), mas pode ser diferente (para distribuições de formato engraçado). Por padrão, estou usando o hessian no modo.
- As trajetórias devem ser calculadas com o método leapfrog (outros integradores não parecem valer a pena)
- A taxa de aceitação ideal é 0,651 para problemas realmente grandes e, de outra forma, mais altos.
- O tamanho da etapa deve ser escalado como , onde é uma variável livre é o número de dimensões.
- O tamanho da etapa deve ser menor quando houver caudas leves ou regiões com características de estabilidade ímpares. A randomização do tamanho da etapa pode ajudar com isso.
Existem outras idéias que devo adotar ou pelo menos considerar? Outros papéis que devo ler? Por exemplo, existem algoritmos de tamanho de etapa adaptáveis que valem a pena? Há bons conselhos sobre o comprimento da trajetória? De fato, existem melhores integradores?
Alguém por favor faça deste um wiki da comunidade.