Pracuję nad projektem badawczym związanym z optymalizacją, a ostatnio wpadłem na pomysł, aby użyć MCMC w tym ustawieniu. Niestety, jestem dość nowy w metodach MCMC, więc miałem kilka pytań. Zacznę od opisu problemu, a następnie zadam pytania.
Nasz problem sprowadza się do oszacowania oczekiwanej wartości funkcji kosztu gdzie jest losową zmienną h o gęstości f (\ omega) .H C ( ω )
W naszym przypadku wersja c (\ omega) w formie zamkniętej nie istnieje. Oznacza to, że musimy zastosować metody Monte Carlo do przybliżenia oczekiwanej wartości. Niestety okazuje się, że szacunki które są generowane metodami MC lub QMC, mają zbyt dużą wariancję, aby były użyteczne w praktyce.
Jeden pomysł, że musieliśmy użyć ważnego rozkładu próbkowania do wygenerowania punktów próbkowania, które wytworzą oszacowanie niskiej wariancji . W naszym przypadku idealny rozkład próbkowania, , musi być w przybliżeniu proporcjonalny do . Widząc, jak jest znane aż do stałej, zastanawiam się, czy mogę użyć MCMC wraz z rozkładem propozycji aby ostatecznie wygenerować próbki z .
Moje pytania tutaj:
Czy można używać MCMC w ramach tego ustawienia? Jeśli tak, to jaka metoda MCMC byłaby odpowiednia? Pracuję w MATLAB, więc preferuję wszystko, co ma już implementację MATLAB.
Czy są jakieś techniki, których mogę użyć do przyspieszenia okresu wypalania MCMC. I jak mogę stwierdzić, że osiągnięto stacjonarny rozkład? W takim przypadku obliczenie dla danego zajmuje sporo czasu .ω
źródło
Odpowiedzi:
Zawsze pamiętam, że MCMC jest po prostu narzędziem do integracji numerycznej (i raczej nieefektywnym). To nie jest żadna magiczna / mistyczna rzecz. Jest bardzo przydatny, ponieważ można go stosunkowo łatwo zastosować. Nie wymaga wiele myślenia w porównaniu z innymi technikami integracji numerycznej. Na przykład nie musisz robić żadnych instrumentów pochodnych. Musisz tylko wygenerować „liczby losowe”.
Jednak, jak każda metoda integracji numerycznej, nie jest to uniwersalne narzędzie catch all. Są warunki, kiedy jest to użyteczne, i warunki, gdy nie jest to przydatne.
Rozsądniej jest ustawić inną technikę. W zależności od tego, jak duży jest , i jak szybki jest twój komputer oraz ile czasu jesteś przygotowany na oczekiwanie na wyniki. Równomierna siatka może wykonać zadanie (choć wymaga to małej lub długiego oczekiwania). „Zadaniem” jest ocena całki - równanie nie przejmuje się tym, jakie znaczenie przypisujemy tobie lub ja do wyniku (a zatem nie ma znaczenia, czy uzyskaliśmy wynik losowo, czy nie).hh h
Dodatkowo, jeśli twoje oszacowania są dość dokładne, będzie ostro pikowany i będzie bardzo przypominać funkcję delta, więc całka skutecznie zastępuje .f ( ω ) ω → ω m a xω f(ω) ω→ωmax
Inną techniką integracji numerycznej jest użycie szeregu Taylora pod całką.f(ω)≈f(ωmax)+(ω−ωmax)f′(ωmax)+12(ω−ωmax)2f′′(ωmax)+…
Jest to przydatna strategia, gdy momenty można łatwo uzyskać.ω
Edwin Jaynes ma ładny cytat na ten temat:
ilekroć istnieje zrandomizowany sposób robienia czegoś, istnieje sposób nierandomizowany, który daje lepsze wyniki, ale wymaga więcej myślenia
Jednym z „bardziej myślących” sposobów jest użycie „warstwowej MCMC” do wykonania całki. Zamiast „losowo” wybierać miejsce w całej przestrzeni parametrów: podzielić je na „warstwy”. Te „warstwy” należy wybrać, aby uzyskać dobry zasięg wysokiej części całki. Następnie losowo próbkuj w ramach każdej warstwy. Wymaga to jednak napisania własnego kodu, który sobie wyobrażam (tj. Więcej myślenia).
źródło
Nic nie wskazuje na to, że twoje zmienne tutaj są skorelowane, więc nie wiem, dlaczego miałbyś używać MCMC w przeciwieństwie do zwykłego Monte Carlo. Istnieje wiele różnych metod próbkowania, w tym wspomniane próbkowanie warstwowe (hipersześcian łaciński) i QMC. Metody rzadkiej kwadratury są bardzo dobre, jeśli wymiar problemu nie jest zbyt wysoki (nie więcej niż 10), ponieważ rzadkie siatki kwadraturowe rosną geometrycznie (przekleństwo wymiarowości).
Ale wygląda na to, że jesteś na dobrej drodze, jeśli chodzi o ważność próbkowania. Kluczem tutaj jest wybór stronniczego rozkładu, który ma duże prawdopodobieństwo skoncentrowane w pobliżu twojego regionu zainteresowania i że ma grubsze ogony niż rozkład nominalny.
Chciałbym dodać, że jest to otwarty problem badawczy, więc jeśli możesz wymyślić coś dobrego, byłoby to bardzo interesujące dla społeczności!
źródło
Ponieważ nikt nie wydawał się odpowiadać bezpośrednio na pytanie: tak, możesz użyć MCMC do próbkowania z . MCMC można wykorzystać do próbkowania z dowolnego rozkładu, w którym rozkład jest znany tylko do stałej proporcjonalności.g(ω)
Ponadto możesz poszukać technik redukcji wariancji w polu integracji MC. Świetnym, niezależnym zestawem zasobów są bezpłatne rozdziały książek dostępne w Art Owen w Stanford. W szczególności rozdziały 8, 9 i 10.
Znajdziesz tam dogłębne zabiegi adaptacyjnego próbkowania, rekurencji i innych technik.
źródło