Jakie są dobrze znane ulepszenia w stosunku do podręcznikowych algorytmów MCMC, których ludzie używają do wnioskowania bayesowskiego?

21

Kiedy koduję symulację Monte Carlo dla jakiegoś problemu, a model jest dość prosty, używam bardzo prostego podręcznika Gibbs. Kiedy nie jest możliwe użycie próbkowania Gibbsa, koduję podręcznik Metropolis-Hastings, którego nauczyłem się wiele lat temu. Zastanawiam się nad wyborem rozkładu skoków lub jego parametrów.

Wiem, że istnieją setki specjalistycznych metod, które udoskonalają te opcje podręczników, ale zwykle nigdy nie myślę o ich użyciu / nauce. Zwykle wydaje się, że to zbyt duży wysiłek, aby nieco poprawić to, co już działa bardzo dobrze.

Ale ostatnio zastanawiałem się, czy może nie ma nowych ogólnych metod, które mogłyby poprawić to, co robiłem. Minęło wiele dekad od odkrycia tych metod. Może jestem naprawdę przestarzały!

Czy są jakieś dobrze znane alternatywy dla Metropolis-Hastings, które są:

  • dość łatwe do wdrożenia,
  • tak uniwersalne, jak MH,
  • i zawsze poprawia wyniki MH w pewnym sensie (wydajność obliczeniowa, dokładność itp.)?

Wiem o kilku bardzo specjalistycznych ulepszeniach bardzo wyspecjalizowanych modeli, ale czy są jakieś ogólne rzeczy, których wszyscy używają, których nie znam?

Rafael S. Calsaverini
źródło
1
Masz na myśli sieć Markov Monte Carlo? Ulepszenia podręczników symulacji Monte Carlo, o których mogę myśleć, obejmują próbkowanie antytezyczne i / lub warstwowe, a także quasi-Monte Carlo. Twoje wzmianki o Gibbs i Metropolis-Hastings wskazują jednak na przetwarzanie bayesowskie.
StasK
@StasK, Tak, interesują mnie głównie modele bayesowskie i modele fizyki statystycznej (co jest po prostu wnioskowaniem bayesowskim o rozkładach podobnych do Gibbsa p (x) = 1 / Z exp (-E (x) / T)). Przepraszam, że nie wspomniałem o tym.
Rafael S. Calsaverini,
3
(+1) OK, miły algorytm adaptacyjny ogólnego zastosowania „niedawno” opublikowany i już zaimplementowany w R, Python i Matlab to dwójka . Działa dobrze, ale zawsze dobrą praktyką jest sprawdzanie dwukrotnie za pomocą innej metody. BTW, MH jest zaimplementowany w pakiecie R mcmc . Oczywiście istnieje wiele innych, ale większość z nich nie jest wdrażana na tym poziomie ogólności i / lub są trudne do wdrożenia. Innym popularnym obszarem jest obecnie Sekwencyjny Monte Carlo. Mam nadzieję, że to pomoże.
2
Być może już to wiesz, ale próbkowanie wycinków jest dość łatwe do zaimplementowania i pozwala uniknąć pułapek typowego algorytmu Metropolis typu „losowy spacer”. Problem z tradycyjnymi algorytmami Metropolis polega na zachowaniu się w sposób losowy; zamiast celowo zmierzać w kierunku dobrych stanów, potykają się, powoli przechodząc do dobrych obszarów. Taka jest motywacja metod wykorzystujących informacje w gradiencie, takich jak HMC, ale próbkowanie wycinków również wpada do tego obozu i jest bardziej automatyczne.
facet
1
Nie wiem prawie nic o ABC, ale byłbym zadowolony, gdyby ktoś mógł wyjaśnić trochę różnice między metodami ABC i MCMC ...
Manoel Galdino

Odpowiedzi:

20

Nie jestem ekspertem w żadnym z nich, ale pomyślałem, że i tak je tam opublikuję, aby zobaczyć, co myśli społeczność. Korekty są mile widziane.

Jedną z coraz bardziej popularnych metod, która nie jest zbyt łatwa do wdrożenia, jest Hamiltonian Monte Carlo (lub czasami Hybrid Monte Carlo). Wykorzystuje model fizyczny z potencjałem i energią kinetyczną do symulacji kuli toczącej się wokół przestrzeni parametrów, jak opisano w tym artykule Radforda Neala. Model fizyczny wymaga sporej ilości zasobów obliczeniowych, więc często otrzymujesz znacznie mniej aktualizacji, ale aktualizacje są zwykle mniej skorelowane. HMC jest motorem nowego oprogramowania STAN , które jest opracowywane jako bardziej wydajna i elastyczna alternatywa dla BUGS lub JAGS do modelowania statystycznego.

Istnieje również cała gama metod obejmujących „rozgrzanie” łańcucha Markowa, o których można pomyśleć jako wprowadzanie szumu termicznego do modelu i zwiększanie szans na próbkowanie stanów o niskim prawdopodobieństwie. Na pierwszy rzut oka wydaje się to złym pomysłem, ponieważ chcesz, aby model próbkował proporcjonalnie do prawdopodobieństwa z tyłu. Ale w rzeczywistości używasz tylko stanów „gorących”, aby lepiej wymieszać łańcuch. Rzeczywiste próbki są pobierane tylko wtedy, gdy łańcuch ma „normalną” temperaturę. Jeśli zrobisz to poprawnie, możesz użyć rozgrzanych łańcuchów, aby znaleźć tryby, do których zwykły łańcuch nie byłby w stanie dostać się z powodu dużych dolin o niskim prawdopodobieństwie blokujących przejście z trybu na tryb. Kilka przykładów tych metod to MCMC sprzężone z Metropolis ,, równoległe odpuszczanie i wyżarzanie próbek o wyższym znaczeniu .

Wreszcie możesz zastosować sekwencyjne Monte Carlo lub filtrowanie cząstek, gdy współczynnik odrzucenia byłby tak wysoki, że wszystkie inne metody zawiodłyby. Wiem najmniej o tej rodzinie metod, więc mój opis może być tutaj niepoprawny , ale rozumiem, że tak to działa. Zaczynasz od uruchomienia swojego ulubionego samplera, mimo że szanse na odrzucenie są w zasadzie jedne. Zamiast odrzucać wszystkie próbki, wybierasz najmniej budzące zastrzeżenia i inicjujesz stamtąd nowe samplery, powtarzając proces, aż znajdziesz próbki, które możesz zaakceptować. Potem wracasz i poprawiasz fakt, że twoje próbki były nielosowe, ponieważ nie zainicjalizowałeś samplerów z przypadkowych lokalizacji.

Mam nadzieję że to pomoże.

David J. Harris
źródło