EssayAI
Блог
Блог
Математика и алгоритмы

Алгоритм Метрополиса-Гастингса: как работает MCMC

23 марта 2026Время чтения: 8 минут
#алгоритм Метрополиса-Гастингса#MCMC#цепь Маркова#байесовская статистика#выборка
Алгоритм Метрополиса-Гастингса: как работает MCMC

Алгоритм Метрополиса-Гастингса - базовый и до сих пор самый часто упоминаемый метод MCMC (Markov chain Monte Carlo). Его придумали Николас Метрополис с соавторами в 1953 году для расчётов в статистической физике, а в 1970 году Уилфред Кит Гастингс обобщил схему до несимметричных пропозиций - отсюда двойное название. Идея простая: построить цепь Маркова, чьё стационарное распределение совпадает с целевым π(x)\pi(x), и собирать из неё реализации. Это нужно, когда плотность π(x)∝f(x)\pi(x) \propto f(x) известна только с точностью до нормировочной константы - то есть мы умеем считать f(x)f(x), но не интеграл ∫f\int f.

Зачем сэмплировать из π(x)∝f(x)\pi(x) \propto f(x)

Типовая постановка приходит из байесовской статистики. Апостериорная плотность параметра θ\theta при наблюдаемых данных DD записывается через формулу Байеса:

π(θ∣D)=L(D∣θ) π0(θ)∫L(D∣θ) π0(θ) dθ.\pi(\theta \mid D) = \frac{L(D \mid \theta)\,\pi_0(\theta)}{\int L(D \mid \theta)\,\pi_0(\theta)\,d\theta}.

Числитель f(θ)=L(D∣θ) π0(θ)f(\theta) = L(D\mid\theta)\,\pi_0(\theta) считается явно - это произведение правдоподобия и априорного распределения. А знаменатель - интеграл по всему пространству параметров - может быть многомерным и аналитически не браться. Прямое сэмплирование (inverse-CDF, rejection sampling) либо требует нормировки, либо плохо масштабируется по размерности. MCMC обходит проблему: строит цепь, чьё инвариантное распределение и есть π\pi, не вычисляя нормировку.

Если ты уже определился с конкретной целью и хочешь подобрать шаг и пропозицию - заполни поля ниже, и мы соберём acceptance ratio, подскажем sigma и проверим autocorrelation.

Общая схема: пропозиция и шаг принятия

Пусть текущее состояние цепи - xx. На каждом шаге:

  1. Сгенерировать кандидата x′∼q(x′∣x)x' \sim q(x' \mid x) из произвольного пропозиционного распределения qq, из которого мы умеем сэмплировать.
  2. Посчитать acceptance ratio
α(x,x′)=min⁡ ⁣(1,  π(x′) q(x∣x′)π(x) q(x′∣x)).\alpha(x, x') = \min\!\left(1,\; \frac{\pi(x')\,q(x \mid x')}{\pi(x)\,q(x' \mid x)}\right).
  1. Бросить u∼Uniform(0,1)u \sim \mathrm{Uniform}(0, 1) и принять кандидата (xn+1=x′x_{n+1} = x'), если u≤αu \le \alpha. Иначе остаться: xn+1=xx_{n+1} = x.

Важный момент: π\pi входит в α\alpha только отношением π(x′)/π(x)\pi(x')/\pi(x). Если π∝f\pi \propto f, то нормировочная константа сокращается - поэтому достаточно считать ff. Это ключ ко всему MCMC: мы никогда не интегрируем плотность, мы только сравниваем её значения в двух точках.

Стационарность через detailed balance

Цепь имеет инвариантным распределение π\pi, если выполнено условие детального баланса (detailed balance):

π(x) P(x→x′)=π(x′) P(x′→x)для всех x,x′,\pi(x)\, P(x \to x') = \pi(x')\, P(x' \to x)\quad \text{для всех } x, x',

где P(x→x′)=q(x′∣x) α(x,x′)P(x \to x') = q(x' \mid x)\,\alpha(x, x') - вероятность перехода. Проверим. Без ограничения общности пусть π(x′) q(x∣x′)≤π(x) q(x′∣x)\pi(x')\,q(x\mid x') \le \pi(x)\,q(x'\mid x) - тогда α(x,x′)=π(x′) q(x∣x′)π(x) q(x′∣x)\alpha(x, x') = \frac{\pi(x')\,q(x\mid x')}{\pi(x)\,q(x'\mid x)} и α(x′,x)=1\alpha(x', x) = 1. Подставляем:

π(x) q(x′∣x) α(x,x′)=π(x′) q(x∣x′)=π(x′) q(x∣x′) α(x′,x).\pi(x)\,q(x'\mid x)\,\alpha(x,x') = \pi(x')\,q(x\mid x') = \pi(x')\,q(x\mid x')\,\alpha(x',x).

Условие detailed balance выполнено, значит π\pi - инвариантная мера цепи. При неприводимости и апериодичности (для q>0q > 0 это почти всегда так) цепь эргодична и распределение xnx_n при n→∞n \to \infty стремится к π\pi.

Частный случай: алгоритм Метрополиса

Если пропозиция симметрична - q(x′∣x)=q(x∣x′)q(x' \mid x) = q(x \mid x'), как у нормального шага x′=x+εx' = x + \varepsilon, ε∼N(0,σ2)\varepsilon \sim N(0, \sigma^2) - отношение пропозиций сокращается, и формула упрощается до

α(x,x′)=min⁡ ⁣(1,  π(x′)π(x)).\alpha(x, x') = \min\!\left(1,\; \frac{\pi(x')}{\pi(x)}\right).

Это исходный алгоритм Метрополиса 1953 года. Логика интуитивная: если кандидат в более «плотной» области, принимаем всегда; если в менее плотной, принимаем с вероятностью отношения плотностей. Гастингс снял требование симметрии: добавил поправочный множитель q(x∣x′)/q(x′∣x)q(x\mid x')/q(x'\mid x), и стало можно использовать любые пропозиции, в том числе direction-biased (Langevin, independence sampler).

Типовые пропозиции

Random Walk Gaussian (нормальное блуждание). q(x′∣x)=N(x′;x,σ2I)q(x'\mid x) = N(x'; x, \sigma^2 I). Симметрично, простейший выбор. Подбор σ\sigma критичен: слишком маленький - цепь почти всё принимает, но медленно гуляет (высокий autocorrelation); слишком большой - почти всё отвергает и стоит на месте. Оптимальный target acceptance rate для dd-мерного гауссовского таргета - ≈0.234\approx 0.234 (Roberts, Gelman, Gilks 1997), на d=1d = 1 ближе к 0.440.44.

Langevin (MALA - Metropolis-adjusted Langevin algorithm). Пропозиция x′=x+σ22∇log⁡π(x)+σεx' = x + \tfrac{\sigma^2}{2}\nabla \log \pi(x) + \sigma \varepsilon использует градиент log-плотности и сдвигает кандидата в сторону мод. Поправка Метрополиса-Гастингса нужна, потому что дискретизация SDE Ланжевена смещена. Оптимальный target acceptance rate - 0.5740.574.

Hamiltonian Monte Carlo (HMC). Вводится вспомогательный импульс p∼N(0,M)p \sim N(0, M), и цепь движется по гамильтоновой траектории H=−log⁡π(x)+12pTM−1pH = -\log\pi(x) + \tfrac12 p^T M^{-1} p интегратором Верле. Шаг принятия компенсирует ошибку интегратора. На гладких многомерных плотностях HMC даёт ESS на одну итерацию на порядки выше, чем Random Walk, и стандартно используется в Stan, PyMC, NumPyro. Target acceptance - 0.650.65–0.800.80.

Burn-in и проверки сходимости

Цепь стартует из произвольной точки, и первые сотни-тысячи итераций система ещё не «забыла» начальное состояние - это burn-in (или warm-up), и его выкидывают. Длина зависит от шага и от того, насколько x0x_0 далеко от типичных значений π\pi. Эмпирически: 10–50% выборки.

Главные численные диагностики сходимости и качества:

  • R^\hat{R} Гельмана-Рубина. Запускают mm независимых цепей, сравнивают внутрицепную дисперсию WW с межцепной BB и считают R^=(W+B/n)/W\hat{R} = \sqrt{(W + B/n)/W}. Хорошее значение - R^<1.01\hat{R} < 1.01. Если R^\hat{R} заметно больше единицы, цепи ещё не пришли к общему распределению.
  • Autocorrelation ρk\rho_k. Чем медленнее ρk\rho_k убывает с лагом kk, тем сильнее зависимы соседние реализации. Интегральное время автокорреляции τ=1+2∑k≥1ρk\tau = 1 + 2\sum_{k\ge 1}\rho_k показывает, сколько шагов между «эффективно независимыми» сэмплами.
  • Effective sample size. ESS=N/τ\mathrm{ESS} = N/\tau - число «эффективных» независимых наблюдений из NN собранных. Если ESS\mathrm{ESS} мал по сравнению с NN, цепь либо плохо настроена, либо смешивается медленно из-за самой геометрии π\pi (мультимодальность, узкие хребты).

Где применяется

  • Байесовская статистика. Любая нетривиальная апостериорная плотность π(θ∣D)\pi(\theta\mid D), где интеграл нормировки не берётся. Иерархические модели, GLM, спецификации с непрерывно-дискретными смесями.
  • Статистическая физика. Исходная задача 1953 года - расчёт термодинамических средних в модели Изинга по распределению Больцмана π(s)∝e−βH(s)\pi(s) \propto e^{-\beta H(s)}, отсюда же выросло и название.
  • Машинное обучение. Выборка из энергетических моделей (Restricted Boltzmann Machines), регуляризация генеративных моделей, посэмплинг весов в Bayesian Neural Networks.
  • Метрическая теория, теория чисел, биоинформатика. Везде, где нужно усреднить функцию по сложному распределению с явным f(x)f(x).

Типовые задачи

  1. Сгенерировать 10410^4 реализаций из π(x)∝e−x4/4\pi(x) \propto e^{-x^4/4}, оценить E[X2]E[X^2] - целевая плотность из физики, нормировка не выражается в элементарных функциях. Подходит Random Walk с σ≈1.5\sigma \approx 1.5.
  2. Сэмплировать апостериор π(θ∣D)\pi(\theta\mid D) для логистической регрессии с нормальным prior. MALA с σ=0.05\sigma = 0.05 при d=20d = 20 обычно даёт ESS ≥0.3N\ge 0.3 N.
  3. Симулировать конфигурации модели Изинга при β=0.4\beta = 0.4 на решётке 32×3232\times 32 - Метрополис с одиночными flip-ами, acceptance ≈0.3\approx 0.3.

Частые ошибки

  • Забывают, что π\pi нужна только с точностью до константы. Пытаются нормировать π\pi численно - ломают саму причину, по которой MCMC нужен.
  • Не выбрасывают burn-in. Включают начальные итерации в оценки - смещение математического ожидания и недооценка дисперсии.
  • Считают независимыми соседние реализации цепи. ρk\rho_k не нулевой - стандартная ошибка σ/N\sigma/\sqrt{N} занижает реальную неопределённость; вместо NN нужно ESS\mathrm{ESS}.
  • Подгоняют σ\sigma под максимум acceptance rate. Acceptance >0.9> 0.9 - это плохо: цепь почти не двигается. Целиться надо в 0.2340.234 для Random Walk, 0.5740.574 для MALA, 0.650.65–0.80.8 для HMC.
  • Запускают одну цепь и доверяют ей. Без R^\hat{R} по нескольким независимым стартам нельзя обнаружить, что цепь застряла в одной моде мультимодального распределения.

FAQ

Чем отличается Метрополис от Метрополиса-Гастингса? Метрополис требует симметричной пропозиции q(x′∣x)=q(x∣x′)q(x'\mid x) = q(x\mid x'), и тогда α=min⁡(1,π(x′)/π(x))\alpha = \min(1, \pi(x')/\pi(x)). Гастингс добавил поправочный множитель q(x∣x′)/q(x′∣x)q(x\mid x')/q(x'\mid x) и снял ограничение симметрии. На практике под общим именем «Метрополиса-Гастингса» понимают полную версию.

Зачем acceptance ratio именно min⁡(1,⋅)\min(1, \cdot), а не ⋅\cdot напрямую? Чтобы вероятность принятия не превышала единицы. Условие detailed balance выполняется и для не-усечённого отношения, но как вероятность принятия отношение >1> 1 интерпретировать нельзя - берут отсечение.

Можно ли использовать MCMC, если плотность π\pi имеет мультимодальную форму? Можно, но Random Walk будет надолго застревать в одной моде. Помогают tempering-схемы (parallel tempering, simulated annealing), HMC с длинными траекториями или специальные jumps - иначе ESS из моды в моду оказывается катастрофически мал.

Коротко

Алгоритм Метрополиса-Гастингса - это рецепт построения цепи Маркова, чьё стационарное распределение совпадает с заданным π\pi. На каждом шаге генерируется кандидат из пропозиции qq, считается acceptance ratio α=min⁡(1,π(x′)q(x∣x′)/π(x)q(x′∣x))\alpha = \min(1, \pi(x')q(x\mid x')/\pi(x)q(x'\mid x)) и принимается решение принять или отвергнуть. Detailed balance обеспечивает инвариантность π\pi. Метрополис - частный случай с симметричной qq. Качество выборки контролируют autocorrelation, ESS и R^\hat{R} Гельмана-Рубина. Алгоритм стоит в основе байесовской статистики и MCMC-инструментов вроде Stan и PyMC.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также

Генеральная совокупность и выборка в статистике

Генеральная совокупность и выборка в статистике

Генеральная совокупность и выборка в статистике: чем отличаются, как выборка оценивает параметры всей совокупности, виды выборок, репрезентативность, стандартная ошибка и доверительный интервал.

19 июня 20268 минут
Коэффициент вариации выборки: формула и расчёт

Коэффициент вариации выборки: формула и расчёт

Коэффициент вариации выборки простыми словами: формула через среднее и стандартное отклонение, пошаговый расчёт в процентах, порог однородности 33% и где студенты ошибаются в задачах по статистике.

11 июня 20267 минут
Метод Монте-Карло Метрополис: схема, баланс, сходимость

Метод Монте-Карло Метрополис: схема, баланс, сходимость

Метод Монте-Карло Метрополис: выборка из распределения Больцмана через цепь Маркова, вероятность принятия, детальный баланс, расчёт термодинамических средних в модели Изинга и подбор шага.

12 мая 20267 минут
Качественные и количественные методы: сравнение

Качественные и количественные методы: сравнение

Сравнение качественных и количественных методов исследования: вопросы, выборка, данные, анализ, валидность, смешанный дизайн и выбор метода для курсовой работы.

29 сентября 20268 минут
Агрегатные функции SQL: COUNT, SUM, AVG и GROUP BY

Агрегатные функции SQL: COUNT, SUM, AVG и GROUP BY

Как работают агрегатные функции SQL: COUNT, SUM, AVG, MIN и MAX, группировка GROUP BY, порядок выполнения запроса, разница HAVING и WHERE и поведение NULL внутри агрегата.

24 сентября 20269 минут
Интегральный синус Si(x): ряд Тейлора и максимум

Интегральный синус Si(x): ряд Тейлора и максимум

Интегральный синус Si(x): почему интеграл sin t / t не берётся в элементарных функциях, разложение в ряд, предел π/2, максимум Si(π) и выброс Гиббса. С калькулятором.

24 сентября 202610 минут