Przejdź do głównej treści

Łańcuch Markowa Monte Carlo (MCMC): próbkowanie złożonych rozkładów prawdopodobieństwa

Przewodnik po Markov Chain Monte Carlo — jak działa, dlaczego się go używa, najczęstsze algorytmy i jak zastosować go w Pythonie do wnioskowania bayesowskiego.
Zaktualizowano 10 cze 2026  · 15 min Czytać

Niektóre rozkłady prawdopodobieństwa są po prostu zbyt złożone, by dało się z nimi pracować bezpośrednio.

Gdy modelujesz dane ze świata rzeczywistego, matematyka często się sypie, zanim dojdziesz do czegokolwiek użytecznego. Często całki wyglądają znośnie na papierze, ale stają się nierozwiązywalne w chwili, gdy dodasz kilka zmiennych ukrytych. To szczególnie częste w wnioskowaniu bayesowskim, gdzie rozkład a posteriori łączy twoje przekonania a priori z danymi obserwowanymi — i w efekcie powstaje coś, czego nie da się streścić prostym wzorem.

Podstawowa idea Markov Chain Monte Carlo polega na tym, że zamiast mierzyć się bezpośrednio z rachunkami, MCMC bada rozkład poprzez symulację. Losuje próbki odzwierciedlające jego kształt, bez konieczności pełnego jego wyliczenia.

W tym artykule omówię kluczowe koncepcje stojące za MCMC, przejdę przez najczęstsze algorytmy i pokażę, jak zastosować je w Pythonie.

Potrzebujesz przypomnienia z matematyki w Pythonie? Przeczytaj nasze wpisy Demystifying Mathematical Concepts for Deep Learning, aby zobaczyć matematykę w praktyce w Numpy.

Czym jest Markov Chain Monte Carlo?

Markov Chain Monte Carlo (MCMC) to rodzina algorytmów generujących próbki z rozkładów prawdopodobieństwa — nawet wtedy, gdy te rozkłady są zbyt złożone, by pracować z nimi bezpośrednio.

Nazwę można podzielić na dwie części. Łańcuch Markowa kontroluje, jak algorytm porusza się po możliwych stanach. Każdy krok zależy tylko od tego, gdzie jesteś teraz, a nie od całej historii dojścia do tego miejsca. Monte Carlo oznacza, że używasz losowego próbkowania do szacowania interesujących cię wielkości.

Połączone razem, MCMC buduje łańcuch losowych próbek, który z czasem odzwierciedla kształt twojego rozkładu docelowego. To przede wszystkim technika próbkowania. Nie rozwiązujesz równań dokładnie, tylko je przybliżasz poprzez symulację.

Dlaczego potrzebne jest Markov Chain Monte Carlo

Problem z rozkładami danych ze świata rzeczywistego polega na tym, że nie są one nawet w połowie tak „czyste” jak te z podręczników.

We wnioskowaniu bayesowskim często próbujesz policzyć rozkład a posteriori — zaktualizowane prawdopodobieństwo parametrów modelu po zobaczeniu danych. Wzór wygląda prosto na papierze: pomnóż prior przez wiarygodność, a następnie podziel przez brzegową wiarygodność. Ten ostatni składnik wymaga całkowania po wszystkich możliwych wartościach parametrów. W wysokich wymiarach taka całka jest praktycznie niemożliwa do obliczenia.

Im większy model, tym gorzej. Gdy dodajesz więcej parametrów lub więcej zmiennych ukrytych, dokładne obliczenia szybko prowadzą donikąd. Natkniesz się na to w szeregu typowych sytuacji:

  • Bayesowskie modele hierarchiczne: gdzie parametry zależą od innych parametrów, tworząc zagnieżdżone rozkłady, których nie da się elegancko scałkować
  • Rozkłady a posteriori o wysokim wymiarze: gdzie liczba parametrów sprawia, że przybliżenia siatkowe stają się obliczeniowo niewykonalne
  • Prior niekongugujący: gdy prior i wiarygodność nie łączą się w rozpoznawalny rozkład

MCMC to dobre obejście w takich sytuacjach. Zamiast liczyć rozkład, losuje się z niego próbki. Te próbki zawierają wszystko, czego potrzebujesz, bez rozwiązywania całki.

Dwie idee stojące za MCMC

MCMC łączy dwie koncepcje, które same w sobie są dość proste, ale razem dają potężny efekt. Przeprowadzę cię przez nie.

Łańcuchy Markowa

Łańcuch Markowa to sekwencja stanów, w której każdy krok zależy tylko od bieżącego położenia.

To, gdzie byłeś wcześniej, nie ma znaczenia. Tylko bieżący stan determinuje, dokąd pójdziesz dalej. Ta „bezpamięciowa” własność — formalnie zwana własnością Markowa — sprawia, że matematyka jest łatwiejsza do opanowania, a algorytm praktyczny.

Łańcuch porusza się po stanach krok po kroku i przy odpowiedniej konstrukcji ostatecznie osiąga rozkład stacjonarny — stabilny wzorzec, w którym prawdopodobieństwo bycia w danym stanie przestaje się zmieniać. To właśnie z takim stabilnym rozkładem ma pracować MCMC.

Metody Monte Carlo

Metody Monte Carlo wykorzystują losowe próbkowanie do szacowania wielkości, których nie da się łatwo policzyć bezpośrednio.

Idea jest taka, by wylosować wystarczająco dużo próbek z rozkładu, a następnie oszacować jego średnią, wariancję lub inną własność, patrząc tylko na próbki. Im więcej próbek, tym bliżej prawdziwych wartości trafiają twoje oszacowania.

Same metody Monte Carlo wymagają jednak bezpośredniego losowania z rozkładu — a to właśnie jest problem, który próbujemy rozwiązać. Tę część biorą na siebie łańcuchy Markowa.

Jak działa Markov Chain Monte Carlo

MCMC to pętla z prostą decyzją na każdym kroku.

  1. Zacznij od stanu początkowego: wybierz punkt startowy w przestrzeni parametrów, nawet jeśli to luźne przypuszczenie
  2. Zaproponuj nowy stan: użyj mechanizmu propozycji, by zasugerować, dokąd przejść dalej
  3. Zdecyduj, czy go zaakceptować: porównaj proponowany stan z bieżącym i zaakceptuj lub odrzuć w zależności od ich prawdopodobieństw w rozkładzie docelowym
  4. Powtarzaj: uruchom tę pętlę tysiące razy, zbierając po drodze próbki
  5. Wykorzystaj próbki: oszacuj średnie, przedziały wiarygodności lub dowolne inne interesujące cię wielkości na podstawie zebranych próbek

To w kroku akceptacji/odrzucenia dzieje się „magia”.

Akceptując lepsze stany częściej niż gorsze, łańcuch przyciągany jest do obszarów o wysokim prawdopodobieństwie — bez potrzeby liczenia całego rozkładu.

Wczesne próbki zależą od punktu startowego, więc je się odrzuca. Po wystarczającej liczbie iteracji łańcuch „zapomina” o starcie, a pozostałe próbki odzwierciedlają prawdziwy kształt rozkładu docelowego.

Rozkład docelowy i rozkład stacjonarny

MCMC ma na celu generowanie próbek z rozkładu docelowego, z którego nie możesz losować bezpośrednio.

Rozkład docelowy to ten, o którym chcesz się czegoś dowiedzieć — zazwyczaj rozkład a posteriori we wnioskowaniu bayesowskim. Znasz jego kształt z dokładnością do stałej normalizacyjnej, ale nie możesz jej policzyć wprost. MCMC jej nie potrzebuje.

Każdy algorytm MCMC jest tak zaprojektowany, by jego łańcuch Markowa miał rozkład stacjonarny zgodny z rozkładem docelowym. Rozkład stacjonarny to rozkład, do którego łańcuch dochodzi po wystarczającej liczbie kroków.

Pozwól łańcuchowi działać, a zacznie produkować próbki wyglądające jak losowania z rozkładu docelowego. Całkę omijasz bokiem.

Popularne algorytmy Markov Chain Monte Carlo

W praktyce spotkasz kilka algorytmów MCMC. Wszystkie mają ten sam rdzeń pętli, ale różnią się sposobem proponowania nowych stanów i wykorzystaniem informacji o rozkładzie docelowym.

Algorytm Metropolisa

Algorytm Metropolisa to najprostszy algorytm MCMC i ten, od którego wszystko się zaczęło.

W każdym kroku proponuje nowy stan, dodając losowy szum do bieżącego. Jeśli proponowany stan ma wyższe prawdopodobieństwo w rozkładzie docelowym, jest zawsze akceptowany. Jeśli niższe — akceptowany jest z prawdopodobieństwem proporcjonalnym do stosunku obu prawdopodobieństw — w przeciwnym razie łańcuch pozostaje w miejscu.

Ten mechanizm akceptacji/odrzucenia sprawia, że łańcuch spędza więcej czasu w obszarach o wysokim prawdopodobieństwie, bez liczenia całego rozkładu.

Algorytm Metropolisa używa symetrycznego rozkładu propozycji, co oznacza, że równie prawdopodobne jest zaproponowanie kroku w dowolnym kierunku. Ma tendencję do zawodzenia wraz ze wzrostem złożoności modeli.

Algorytm Metropolisa–Hastingsa

Algorytm Metropolisa–Hastingsa (MH) uogólnia Metropolisa, dopuszczając niesymetryczne rozkłady propozycji.

MH dostosowuje prawdopodobieństwo akceptacji, uwzględniając fakt, że niektóre propozycje są bardziej prawdopodobne niż inne. Możesz dostroić propozycję do kształtu rozkładu docelowego, co sprzyja lepszemu eksplorowaniu i szybszej zbieżności.

Większość nowoczesnych metod MCMC to rozszerzenia MH lub są oparte na tych samych zasadach. Jeśli rozumiesz Metropolisa–Hastingsa, rozumiesz fundament dziedziny.

Próbkowanie Gibbsa

Próbkowanie Gibbsa aktualizuje jedną zmienną naraz, zamiast proponować nowy stan dla wszystkich parametrów jednocześnie.

W każdym kroku losuje się każdą zmienną z jej rozkładu warunkowego — rozkładu tej zmiennej przy zadanych bieżących wartościach pozostałych. Gdy przejdziesz przez wszystkie zmienne, masz pełną iterację.

To całkowicie omija krok akceptacji/odrzucenia, ponieważ każdy warunkowy los zawsze jest akceptowany. Przydaje się, gdy z pełnego rozkładu łącznego trudno losować, ale rozkłady warunkowe są przystępne — co często zachodzi w bayesowskich modelach hierarchicznych.

Hamiltonian Monte Carlo

Hamiltonian Monte Carlo (HMC) to pierwszy algorytm, który uczynił nowoczesne wnioskowanie bayesowskie praktycznym na większą skalę.

Zamiast losowo proponować nowe stany, HMC wykorzystuje informację o gradientach rozkładu docelowego, by proponować stany dalekie od bieżącej pozycji, ale wciąż z dużą szansą akceptacji. Porusza się po przestrzeni parametrów znacznie lepiej niż metody błądzenia losowego. Jest mniej odrzuconych propozycji i lepsza eksploracja wysokowymiarowych rozkładów.

Metody błądzenia losowego, jak Metropolis, nie skalują się wraz ze wzrostem liczby parametrów. HMC w dużo mniejszym stopniu ma ten problem.

HMC napędza Stan — jedną z najpopularniejszych platform do programowania probabilistycznego. No-U-Turn Sampler (NUTS), będący adaptacyjnym rozszerzeniem HMC używanym w PyMC, eliminuje potrzebę ręcznego strojenia kroku i liczby kroków.

Markov Chain Monte Carlo w statystyce bayesowskiej

Jeśli jest obszar, w którym MCMC miało największy wpływ, to jest nim wnioskowanie bayesowskie.

Statystyka bayesowska koncentruje się na rozkładzie a posteriori, czyli zaktualizowanym prawdopodobieństwie parametrów modelu po zobaczeniu danych. Jego obliczenie oznacza pomnożenie prioru przez wiarygodność i normalizację. Krok normalizacji wymaga całki, która rzadko jest przystępna.

MCMC całkowicie usuwa ten krok. Wystarczy ocenić nienormalizowany a posteriori w dowolnym punkcie i pozwolić łańcuchowi zrobić resztę.

Oto prosty przykład. Załóż, że szacujesz stronniczość monety. Zaczynasz od przekonania, że moneta jest prawdopodobnie uczciwa, a następnie obserwujesz sekwencję rzutów. Dla prostej monety rozkład a posteriori ma postać zamkniętą. Jeśli dodasz strukturę hierarchiczną, czyli będziesz szacować stronniczość jednocześnie dla stu monet, obliczenia staną się niemożliwe.

Dzięki MCMC uruchamiasz łańcuch, zbierasz próbki z rozkładu a posteriori i używasz ich do obliczenia potrzebnych wielkości.

Zrozumienie wypalania, zbieżności i mieszania

Te trzy pojęcia mylą osoby zaczynające przygodę z MCMC. Jeśli źle je zrozumiesz, otrzymasz wyniki, ale nie będziesz wiedzieć, dlaczego są niewiarygodne.

Wypalanie (burn-in)

Gdy łańcuch Markowa startuje, nie ma pojęcia, gdzie znajdują się obszary wysokiego prawdopodobieństwa w twoim rozkładzie docelowym.

Wczesne próbki są pod wpływem punktu startowego, a nie rozkładu docelowego. Wypalanie to praktyka ich odrzucania. Najpierw uruchamiasz łańcuch na pewną liczbę iteracji, wyrzucasz te próbki i zachowujesz tylko to, co przychodzi później, gdy łańcuch miał czas znaleźć dobre miejsce do startu analizy.

Nie ma uniwersalnej reguły, jak długie powinno być wypalanie. Zależy to od modelu, punktu startowego i jakości mieszania łańcucha. W praktyce diagnozuje się to wizualnie na wykresach śladu, zamiast z góry wybierać stałą liczbę.

Zbieżność

Zbieżność oznacza, że łańcuch przestał być pod wpływem punktu startowego i teraz losuje próbki odzwierciedlające rozkład docelowy.

Łańcuch, który nie zbiega, generuje obciążone próbki. Średnia z nich nie będzie równa prawdziwej średniej a posteriori — będzie odzwierciedlać miejsce, w którym łańcuch utknął.

Zbieżność ocenia się po fakcie, za pomocą diagnostyk. Uruchomienie wielu łańcuchów z różnych punktów startowych i sprawdzenie, czy się zgadzają, to jeden z najpewniejszych sposobów wykrycia problemów ze zbieżnością.

Mieszanie

Łańcuch, który zbiega, ale słabo się miesza, nadal stanowi problem.

Mieszanie opisuje, jak dobrze łańcuch eksploruje rozkład docelowy. Dobrze mieszający łańcuch swobodnie się przemieszcza, odwiedza zarówno obszary o wysokim, jak i niskim prawdopodobieństwie i produkuje próbki w przybliżeniu od siebie niezależne. Słabo mieszający łańcuch tkwi w jednym obszarze przez wiele iteracji, wytwarzając silnie skorelowane próbki, które nie reprezentują całego rozkładu.

Słabe mieszanie często widać na wykresie śladu, który wygląda jak wolno meandrująca rzeka, zamiast szumu wokół poziomego pasa. Gdy to zobaczysz, twój sampler wymaga strojenia — lepszego rozkładu propozycji albo całkiem innego algorytmu.

Wykres porównujący mieszanie

Wykres porównujący mieszanie

Jak oceniać wyniki MCMC

Pokażę ci teraz cztery sposoby oceny MCMC i wyjaśnię, kiedy używać każdego z nich.

Wykresy śladu (trace plots)

Wykres śladu pokazuje wylosowaną wartość parametru w każdej iteracji. To pierwsza rzecz, na którą powinieneś spojrzeć po uruchomieniu MCMC.

Zdrowy wykres śladu wygląda jak biały szum wokół stabilnej średniej. Nie powinno być trendów, długich płaskich odcinków ani powolnych dryfów. Jeśli widzisz, że łańcuch błąka się lub tkwi w jednym obszarze przez wiele iteracji, to problem z mieszaniem i twoje próbki nie są wiarygodne.

Zwizualizowane wykresy śladu

Zwizualizowane wykresy śladu

Autokorelacja

Próbki MCMC nigdy nie są w pełni niezależne. Każda próbka jest pod wpływem poprzedniej. Autokorelacja mierzy, jak silnie próbki są skorelowane między iteracjami.

Wysoka autokorelacja oznacza, że twoje próbki niosą mniej informacji, niż sugeruje ich liczba. Dwa tysiące skorelowanych próbek może dać tyle samo informacji, co dwieście niezależnych. Większość bibliotek MCMC zawiera wykresy autokorelacji, aby zobaczyć, jak szybko korelacja spada, gdy próbki są coraz dalej od siebie.

Zwizualizowane wykresy autokorelacji

Zwizualizowane wykresy autokorelacji

Efektywna liczebność próbki

Efektywna liczebność próbki (ESS) przekłada autokorelację na praktyczną liczbę: ile niezależnych próbek odpowiada twojemu łańcuchowi.

Jeśli wylosowałeś 5000 próbek, ale ESS wynosi 200, dysponujesz mocą statystyczną 200 niezależnych losowań. Niskie ESS oznacza, że musisz uruchomić łańcuch dłużej, dostroić sampler lub zrobić jedno i drugie. Większość praktyków celuje w ESS co najmniej kilkuset na parametr, zanim zaufa oszacowaniom.

Diagnostyki zbieżności

Gdy uruchamiasz wiele łańcuchów, możesz formalnie sprawdzić, czy zbiegły do tego samego rozkładu. Diagnostyka Gelmana–Rubina, raportowana jako R-hat, porównuje wariancję wewnątrz każdego łańcucha z wariancją między łańcuchami.

R-hat bliskie 1,0 oznacza zgodność łańcuchów, co jest dobrym znakiem. Wartości powyżej 1,01 lub 1,05 (w zależności od progu używanego przez bibliotekę) sugerują brak zbieżności i potrzebę większej liczby iteracji. Większość nowoczesnych bibliotek, jak PyMC, automatycznie liczy R-hat i ostrzega, gdy jest zbyt wysokie.

Markov Chain Monte Carlo w Pythonie

Python ma kilka bibliotek do MCMC, każda z inną filozofią.

  • PyMC: Najbardziej przystępna opcja dla większości data scientistów. Definiujesz model w składni Pythona, a PyMC pod spodem zajmuje się próbkowaniem przy użyciu NUTS (adaptacyjnej wersji HMC). To domyślny wybór do modelowania bayesowskiego w Pythonie.
  • CmdStanPy / PyStan: Interfejsy Pythona do Stana, dedykowanego języka do programowania probabilistycznego. Stan kompiluje model do C++ przed uruchomieniem, co czyni go szybkim i dobrze dopasowanym do złożonych modeli hierarchicznych. Ceną jest większa krzywa nauki.
  • NumPy: Brak dedykowanej biblioteki MCMC, ale możesz zaimplementować algorytmy, takie jak Metropolis–Hastings, od zera. Przydatne, by zrozumieć, co dzieje się pod spodem, zanim przejdziesz do narzędzi wyższego poziomu.

W większości praktycznych zastosowań zacząłbyś od PyMC. Tego będę używać, więc jeśli podążasz krok w krok, najpierw zainstaluj bibliotekę:

pip install pymc

Dla prostoty pozostanę przy łatwym przykładzie — oszacowaniu stronniczości monety na podstawie sekwencji rzutów.

Krok 1: Zdefiniuj model

import pymc as pm
import numpy as np

# 1 = heads, 0 = tails
observed_flips = np.array([1, 0, 1, 1, 0, 1, 1, 1, 0, 1])

with pm.Model() as coin_model:
    # Prior: we believe the coin is probably fair
    bias = pm.Beta("bias", alpha=2, beta=2)

    # Likelihood: observed flips given the bias
    flips = pm.Bernoulli("flips", p=bias, observed=observed_flips)

Prior pm.Beta koduje słabe przekonanie, że moneta jest uczciwa. Wiarygodność pm.Bernoulli łączy model z zaobserwowanymi danymi.

Krok 2: Uruchom sampler

with coin_model:
    trace = pm.sample(2000, tune=1000, return_inferencedata=True)

Wynik uruchomienia samplera

Wynik uruchomienia samplera

tune ustawia liczbę kroków wypalania — te próbki są odrzucane. sample losuje 2000 próbek a posteriori na łańcuch po strojeniu.

Krok 3: Obejrzyj rozkład a posteriori

import arviz as az

az.plot_trace(trace, var_names=["bias"])
az.summary(trace, var_names=["bias"])

Wykres śladu modelu i podsumowanie wyników

Wykres śladu modelu i podsumowanie wyników

az.summary() podaje średnią a posteriori, odchylenie standardowe i R-hat dla każdego parametru. Jeśli R-hat jest bliskie 1,0, łańcuchy zbiegły. az.plot_trace() rysuje dla każdego parametru ślad i rozkład a posteriori obok siebie.

Dla tego zbioru danych — 7 orłów na 10 rzutów — średnia a posteriori wynosi 0,642 przy odchyleniu standardowym 0,124. Odzwierciedla to dowody w danych, pozostając blisko prioru uczciwej monety. R-hat to 1,00, a ESS znacznie powyżej 2000, więc łańcuchy zbiegły, a próbki są wiarygodne.

Typowe błędy przy MCMC

MCMC łatwo uruchomić, ale równie łatwo źle użyć. Oto błędy, które pojawiają się najczęściej.

  • Zbyt wczesne zakładanie zbieżności: To, że sampler działał bez błędów, nie oznacza, że zbiegał. Zawsze sprawdzaj R-hat i wykresy śladu, zanim zaufasz wynikom. Łańcuch może wyglądać stabilnie, a mimo to tkwić w jednym obszarze przestrzeni parametrów.
  • Ignorowanie wypalania: Wczesne próbki są obciążone punktem startowym, a nie rozkładem docelowym. Odrzuć je. Większość bibliotek zajmuje się tym automatycznie przez parametr tune, ale upewnij się, że przypadkiem nie uwzględniasz tych próbek w analizie.
  • Słabe mieszanie: Zbyt wolno poruszający się łańcuch produkuje silnie skorelowane próbki, które niosą mniej informacji, niż sugeruje ich liczba. Jeśli wykres śladu wygląda jak powolny dryf, a nie jak szumiący poziomy pas, twój rozkład propozycji wymaga strojenia lub potrzebujesz lepszego algorytmu. Przesiadka z Metropolisa na NUTS często rozwiązuje problem od ręki.
  • Zbyt mało próbek: Niska efektywna liczebność próbki (ESS) oznacza, że twoje oszacowania są niewiarygodne, nawet jeśli łańcuch technicznie zbiegał. Jeśli ESS to mały ułamek całkowitej liczby losowań, uruchom łańcuch dłużej lub popraw mieszanie, zanim wyciągniesz wnioski.

MCMC a inne metody próbkowania

MCMC nie jest jedynym sposobem przybliżania rozkładu. Oto jak wypada na tle alternatyw.

  • Próbkowanie odrzuceniowe losuje propozycje z prostszego rozkładu i akceptuje je w zależności od zgodności z docelowym. Gdy działa, jest dokładne, ale w wysokich wymiarach wskaźniki akceptacji się załamują.
  • Próbkowanie z ważeniem (importance sampling) waży próbki z rozkładu propozycji, by przybliżyć wartości oczekiwane pod rozkładem docelowym. Jest szybkie i działa dobrze w niskich wymiarach, ale wariancja wag eksploduje wraz ze wzrostem wymiarowości. W praktyce kilka próbek niesie niemal cały ciężar, przez co oszacowania są niewiarygodne.
  • Wnioskowanie wariacyjne (VI) dopasowuje prostszy rozkład, by przybliżyć docelowy, minimalizując miarę dywergencji. VI jest dużo szybsze niż MCMC i skaluje się do dużych zbiorów danych, ale wprowadza błąd przybliżenia. Dopasowany rozkład może przeoczyć strukturę a posteriori, którą MCMC by uchwyciło.

Krótko mówiąc:

MCMC na tle alternatyw

MCMC na tle alternatyw

MCMC to właściwy wybór, gdy dokładność jest ważniejsza niż szybkość. Jeśli musisz skalować do dużych zbiorów danych lub wykonywać wnioskowanie w czasie rzeczywistym, wnioskowanie wariacyjne może być warte kompromisu dokładności.

Podsumowanie

MCMC to jedno z tych narzędzi, które z zewnątrz wygląda onieśmielająco, ale ma dużo sensu, gdy zrozumiesz, co faktycznie robi — buduje łańcuch próbek, który stopniowo odzwierciedla kształt rozkładu, którego nie możesz obliczyć bezpośrednio.

Łatwiej też je pojąć, gdy rozbijesz je na części: łańcuchy Markowa i metody Monte Carlo.

Jego roli w statystyce bayesowskiej nie da się przecenić. Rozkłady a posteriori, które byłyby poza zasięgiem, stają się dostępne, gdy masz niezawodny sampler. Dlatego MCMC jest sercem bibliotek programowania probabilistycznego, takich jak PyMC i Stan.

Ale zanim rzucisz się w implementację, złap właściwą intuicję. Zrozum, dlaczego łańcuch potrzebuje wypalania, co naprawdę oznacza mieszanie i jak czytać wykres śladu. Sam kod to najłatwiejsza część, bo biblioteki Pythona ukrywają wszystkie szczegóły za prostymi wywołaniami funkcji.

Jeśli chcesz zostać biegły w uczeniu maszynowym, zapisz się na naszą ścieżkę Machine Learning Scientist in Python. 85 godzin materiałów pomoże ci być gotowym do pracy w 2026 roku.

Najczęstsze pytania o MCMC

Do czego służy Markov Chain Monte Carlo?

MCMC służy do losowania próbek z rozkładów prawdopodobieństwa, które są zbyt złożone, by pracować z nimi bezpośrednio. Najczęściej spotyka się je w statystyce bayesowskiej, gdzie pozwala oszacować rozkłady a posteriori bez konieczności rozwiązań w postaci zamkniętej. Znajdziesz je też w symulacjach fizycznych, biologii obliczeniowej i w każdej dziedzinie, w której dokładne wnioskowanie jest nieosiągalne.

Czym MCMC różni się od zwykłego losowego próbkowania?

Zwykłe losowe próbkowanie zakłada, że możesz losować bezpośrednio z rozkładu docelowego. MCMC obchodzi to, budując łańcuch próbek, który stopniowo zbiega do rozkładu docelowego. Nie musisz znać pełnego rozkładu, wystarczy umieć go ocenić w dowolnym punkcie. Ceną jest to, że próbki MCMC są skorelowane, więc potrzeba ich więcej, by uzyskać wiarygodne oszacowania.

Skąd wiadomo, że sampler MCMC zbiega?

Najczęstszą kontrolą jest diagnostyka Gelmana–Rubina, raportowana jako R-hat. Wartości bliskie 1,0 wskazują, że łańcuchy zbiegły do tego samego rozkładu. Przydatne są też wykresy śladu i efektywna liczebność próbki (ESS). Zdrowy wykres śladu wygląda jak losowy szum wokół stabilnej średniej, a wysokie ESS oznacza, że twoje próbki niosą dość informacji, by zaufać oszacowaniom.

Jaka jest różnica między Metropolis–Hastings a Hamiltonian Monte Carlo?

Metropolis–Hastings proponuje nowe stany, dodając losowy szum do bieżącej pozycji, co może być powolne, gdy rozkład docelowy ma złożoną geometrię. Hamiltonian Monte Carlo używa informacji o gradientach, by proponować stany dalekie od bieżącej pozycji, ale wciąż z dużą szansą akceptacji, co prowadzi do znacznie lepszej eksploracji w wysokich wymiarach. Dla większości nowoczesnych przepływów pracy bayesowskiej HMC — i jego adaptacyjna wersja, NUTS — to preferowany wybór.

Kiedy używać wnioskowania wariacyjnego zamiast MCMC?

Gdy szybkość i skalowalność są ważniejsze niż dokładność. MCMC daje wysokiej jakości próbki, ale słabo się skaluje do dużych zbiorów danych i wysokowymiarowych modeli. Wnioskowanie wariacyjne dopasowuje prostszy rozkład do przybliżenia a posteriori, jest dużo szybsze, ale wprowadza błąd przybliżenia, którego MCMC unika. Jeśli prototypujesz w skali lub potrzebujesz wnioskowania w czasie rzeczywistym, wnioskowanie wariacyjne jest warte kompromisu.

Tematy

Ucz się z DataCamp

Track

Uczenie ze wzmocnieniem w Pythonie

12 godz.
Opanuj podstawy uczenia ze wzmocnieniem (RL), aby tworzyć modele, które potrafią poruszać się w złożonych rzeczywistych środowiskach i trenować LLM-y.
Zobacz szczegółyRight Arrow
Rozpocznij kurs
Zobacz więcejRight Arrow