Projektuję hybrydowy algorytm próbkowania Monte Carlo dla PyMC i staram się, aby był on tak bezproblemowy i ogólny, jak to możliwe, dlatego szukam dobrych porad na temat projektowania algorytmu HMC. Przeczytałem rozdział ankiety Radforda i Beskos i in. w ostatnim artykule al. na temat optymalnego strojenia HMC (rozmiar kroku) i zebrałem następujące wskazówki:
- Zmienne pędu powinny być dystrybuowane z kowariancją , gdzie C jest zasadniczo czymś w rodzaju macierzy kowariancji rozkładu (dla prostych rozkładów), ale może być różnie (dla zabawnych rozkładów w kształcie). Domyślnie używam hessian w trybie.
- Trajektorie powinny być obliczane metodą leapfrog (inni integratorzy nie wydają się tego opłacać)
- Optymalny wskaźnik akceptacji wynosi 0,651 dla naprawdę dużych problemów, a poza tym jest wyższy.
- Wielkość kroku powinny być skalowane jak , gdzie L jest zmienna wolna i d oznacza liczbę wymiarów.
- Stopień powinien być mniejszy, gdy występują lekkie ogony lub w inny sposób regiony o dziwnej charakterystyce stabilności. Pomaga w tym losowa wielkość kroku.
Czy są inne pomysły, które powinienem przyjąć lub przynajmniej rozważyć? Inne artykuły, które powinienem przeczytać? Na przykład, czy istnieją algorytmy adaptacyjnego rozmiaru kroku, które są tego warte? Czy jest dobra rada na temat długości trajektorii? Czy faktycznie są lepsi integratorzy?
Niech ktoś uczyni z tego wiki społeczności.
źródło