encyklopedia.space

Algorytm Hybrid Monte Carlo (HMC)

Hybrid Monte Carlo (ang. Hybrid Monte Carlo, HMC), zwany także Hamiltonian Monte Carlo (HMC), to metoda numeryczna służąca do generowania próbek z rozkładów prawdopodobieństwa o wysokiej wymiarowości. Łączy ona techniki łańcucha Markowa Monte Carlo (MCMC) z metodami symulacji dynamiki Hamiltona, co pozwala na efektywniejsze przeszukiwanie przestrzeni parametrów niż tradycyjne algorytmy Metropolisa‑Hastingsa.

Historia

Algorytm został opracowany w 1987 roku przez Simona Duane, Allana Kennedy'ego, Briana Pendletona i Durhama Rowetha w kontekście symulacji w sieciowej kwantowej chromodynamice. Od tego czasu HMC stał się podstawowym narzędziem w fizyce statystycznej, wnioskowaniu Bayesowskim oraz w uczeniu maszynowym.

Podstawowe pojęcia

  • Hamiltonian – funkcja opisująca całkowitą energię układu (suma energii kinetycznej i potencjalnej).
  • Symplecticzny integrator – metoda numeryczna zachowująca strukturę symplektyczną równań Hamiltona, najczęściej używany jest leapfrog (skok).
  • MCMC – zbiór technik generujących łańcuch Markowa o zadanym rozkładzie stacjonarnym.
  • Metropolis – akceptacja/odrzucenie propozycji w ramach łańcucha Markowa, zapewniająca szczegółowość równowagi szczegółowej.

Zasada działania

Algorytm HMC działa w trzech głównych etapach:

  1. Losowanie zmiennych pomocniczych – dla każdego wymiaru parametru θ losuje się wektor pędów p ze standardowego rozkładu normalnego N(0, I).
  2. Symulacja dynamiki Hamiltona – przy użyciu wybranego integratora sympletycznego (np. metodą leapfrog) wykonuje się L kroków o długości ε, co generuje propozycję (θ', p') w przestrzeni fazowej.
  3. Akceptacja propozycji – zgodnie z regułą Metropolisa akceptuje się nowe położenie θ' z prawdopodobieństwem
    α = min{1, exp[H(θ, p) - H(θ', p')]} ,
    gdzie H oznacza Hamiltonian układu. W przeciwnym razie pozostaje się przy poprzedniej wartości θ.

Po akceptacji (lub odrzuceniu) wektor pędów jest odrzucany, a proces rozpoczyna się od nowego losowego pędu, co zapewnia właściwość ergodyczności.

Formalny opis algorytmu

1.  Zainicjuj stan θ₀.
2.  Dla każdych iteracji t = 1,2,…:
    a)  Wylosuj p_t ∼ N(0, I).
    b)  Ustaw (θ, p) ← (θ_{t‑1}, p_t).
    c)  Wykonaj L kroków sympletycznego integratora:
         i)   p ← p - (ε/2)·∇_θ U(θ)          (połowa kroku pędu)
         ii)  θ ← θ + ε·M^{‑1}p               (krok położenia)
         iii) p ← p - (ε/2)·∇_θ U(θ)          (druga połowa kroku pędu)
    d)  Oblicz α = min{1, exp[H(θ_{t‑1}, p_t) - H(θ, p)]}.
    e)  Z akceptuj θ z prawdopodobieństwem α, w przeciwnym wypadku przyjmij θ_t = θ_{t‑1}.
3.  Zwróć zebrane próbki {θ_t}.
  

W powyższym zapisie U(θ) = -log π(θ) jest potencjalną energią (ujemny logarytm docelowego rozkładu), a M – macierz mas (zazwyczaj przyjmowaną za tożsamość).

Zalety i wady

Zalety Wady
  • Skuteczniejsze eksplorowanie przestrzeni wysokowymiarowej – unika losowych kroków typu „random walk”.
  • Wysoka akceptacja przy odpowiednim doborze ε i L.
  • Umożliwia wykorzystanie gradientów ∇_θ U(θ), co przyspiesza konwergencję.
  • Wymaga obliczania gradientów, co może być kosztowne w złożonych modelach.
  • Wrażliwość na dobór parametrów ε (krok integratora) i L (liczba kroków).
  • Problemy z samymi nieciągłościami lub rozkładami silnie multimodalnymi.

Warianty i ulepszenia

W praktyce stosuje się liczne modyfikacje algorytmu:

Zastosowania

Algorytm HMC znajduje szerokie zastosowanie w różnych dziedzinach:

  • Analiza Bayesowska – wyznaczanie posteriorów w modeli o dużej liczbie parametrów.
  • Fizyka statystyczna – symulacje układów many‑body, modelowanie pól kwantowych.
  • Uczenie maszynowe – optymalizacja modeli probabilistycznych, np. VAE z rozkładami posteriorów próbkowanymi metodą HMC.
  • Chemia obliczeniowa – badanie powierzchni potencjału i dynamiki molekularnej.

Implementacje w open‑source

Popularne biblioteki udostępniające gotowe implementacje HMC:

  • Stan – język i środowisko statystyczne z auto‑differentiacją.
  • PyMC3 i PyMC4 – biblioteki w Pythonie wspierające NUTS.
  • TensorFlow Probability – integracja z ekosystemem TensorFlow.
  • JAX – pozwala na bardzo szybkie symulacje HMC dzięki kompilacji just‑in‑time.

Podsumowanie

Hybrid Monte Carlo (Hamiltonian Monte Carlo) to potężny algorytm łączący zalety metod Monte Carlo i symulacji dynamiki Hamiltona. Dzięki wykorzystaniu gradientów oraz sympletycznych integratorów umożliwia szybkie i efektywne generowanie próbek z złożonych, wysokowymiarowych rozkładów prawdopodobieństwa. Pomimo konieczności obliczania pochodnych i wrażliwości na parametry implementacji, HMC pozostaje jednym z najważniejszych narzędzi w nowoczesnej statystyce bayesowskiej, fizyce i uczeniu maszynowym.