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

Алгоритм Метрополиса-Гастингса - базовый и до сих пор самый часто упоминаемый метод MCMC (Markov chain Monte Carlo). Его придумали Николас Метрополис с соавторами в 1953 году для расчётов в статистической физике, а в 1970 году Уилфред Кит Гастингс обобщил схему до несимметричных пропозиций - отсюда двойное название. Идея простая: построить цепь Маркова, чьё стационарное распределение совпадает с целевым , и собирать из неё реализации. Это нужно, когда плотность известна только с точностью до нормировочной константы - то есть мы умеем считать , но не интеграл .
Зачем сэмплировать из
Типовая постановка приходит из байесовской статистики. Апостериорная плотность параметра при наблюдаемых данных записывается через формулу Байеса:
Числитель считается явно - это произведение правдоподобия и априорного распределения. А знаменатель - интеграл по всему пространству параметров - может быть многомерным и аналитически не браться. Прямое сэмплирование (inverse-CDF, rejection sampling) либо требует нормировки, либо плохо масштабируется по размерности. MCMC обходит проблему: строит цепь, чьё инвариантное распределение и есть , не вычисляя нормировку.
Если ты уже определился с конкретной целью и хочешь подобрать шаг и пропозицию - заполни поля ниже, и мы соберём acceptance ratio, подскажем sigma и проверим autocorrelation.
Общая схема: пропозиция и шаг принятия
Пусть текущее состояние цепи - . На каждом шаге:
- Сгенерировать кандидата из произвольного пропозиционного распределения , из которого мы умеем сэмплировать.
- Посчитать acceptance ratio
- Бросить и принять кандидата (), если . Иначе остаться: .
Важный момент: входит в только отношением . Если , то нормировочная константа сокращается - поэтому достаточно считать . Это ключ ко всему MCMC: мы никогда не интегрируем плотность, мы только сравниваем её значения в двух точках.
Стационарность через detailed balance
Цепь имеет инвариантным распределение , если выполнено условие детального баланса (detailed balance):
где - вероятность перехода. Проверим. Без ограничения общности пусть - тогда и . Подставляем:
Условие detailed balance выполнено, значит - инвариантная мера цепи. При неприводимости и апериодичности (для это почти всегда так) цепь эргодична и распределение при стремится к .
Частный случай: алгоритм Метрополиса
Если пропозиция симметрична - , как у нормального шага , - отношение пропозиций сокращается, и формула упрощается до
Это исходный алгоритм Метрополиса 1953 года. Логика интуитивная: если кандидат в более «плотной» области, принимаем всегда; если в менее плотной, принимаем с вероятностью отношения плотностей. Гастингс снял требование симметрии: добавил поправочный множитель , и стало можно использовать любые пропозиции, в том числе direction-biased (Langevin, independence sampler).
Типовые пропозиции
Random Walk Gaussian (нормальное блуждание). . Симметрично, простейший выбор. Подбор критичен: слишком маленький - цепь почти всё принимает, но медленно гуляет (высокий autocorrelation); слишком большой - почти всё отвергает и стоит на месте. Оптимальный target acceptance rate для -мерного гауссовского таргета - (Roberts, Gelman, Gilks 1997), на ближе к .
Langevin (MALA - Metropolis-adjusted Langevin algorithm). Пропозиция использует градиент log-плотности и сдвигает кандидата в сторону мод. Поправка Метрополиса-Гастингса нужна, потому что дискретизация SDE Ланжевена смещена. Оптимальный target acceptance rate - .
Hamiltonian Monte Carlo (HMC). Вводится вспомогательный импульс , и цепь движется по гамильтоновой траектории интегратором Верле. Шаг принятия компенсирует ошибку интегратора. На гладких многомерных плотностях HMC даёт ESS на одну итерацию на порядки выше, чем Random Walk, и стандартно используется в Stan, PyMC, NumPyro. Target acceptance - –.
Burn-in и проверки сходимости
Цепь стартует из произвольной точки, и первые сотни-тысячи итераций система ещё не «забыла» начальное состояние - это burn-in (или warm-up), и его выкидывают. Длина зависит от шага и от того, насколько далеко от типичных значений . Эмпирически: 10–50% выборки.
Главные численные диагностики сходимости и качества:
- Гельмана-Рубина. Запускают независимых цепей, сравнивают внутрицепную дисперсию с межцепной и считают . Хорошее значение - . Если заметно больше единицы, цепи ещё не пришли к общему распределению.
- Autocorrelation . Чем медленнее убывает с лагом , тем сильнее зависимы соседние реализации. Интегральное время автокорреляции показывает, сколько шагов между «эффективно независимыми» сэмплами.
- Effective sample size. - число «эффективных» независимых наблюдений из собранных. Если мал по сравнению с , цепь либо плохо настроена, либо смешивается медленно из-за самой геометрии (мультимодальность, узкие хребты).
Где применяется
- Байесовская статистика. Любая нетривиальная апостериорная плотность , где интеграл нормировки не берётся. Иерархические модели, GLM, спецификации с непрерывно-дискретными смесями.
- Статистическая физика. Исходная задача 1953 года - расчёт термодинамических средних в модели Изинга по распределению Больцмана , отсюда же выросло и название.
- Машинное обучение. Выборка из энергетических моделей (Restricted Boltzmann Machines), регуляризация генеративных моделей, посэмплинг весов в Bayesian Neural Networks.
- Метрическая теория, теория чисел, биоинформатика. Везде, где нужно усреднить функцию по сложному распределению с явным .
Типовые задачи
- Сгенерировать реализаций из , оценить - целевая плотность из физики, нормировка не выражается в элементарных функциях. Подходит Random Walk с .
- Сэмплировать апостериор для логистической регрессии с нормальным prior. MALA с при обычно даёт ESS .
- Симулировать конфигурации модели Изинга при на решётке - Метрополис с одиночными flip-ами, acceptance .
Частые ошибки
- Забывают, что нужна только с точностью до константы. Пытаются нормировать численно - ломают саму причину, по которой MCMC нужен.
- Не выбрасывают burn-in. Включают начальные итерации в оценки - смещение математического ожидания и недооценка дисперсии.
- Считают независимыми соседние реализации цепи. не нулевой - стандартная ошибка занижает реальную неопределённость; вместо нужно .
- Подгоняют под максимум acceptance rate. Acceptance - это плохо: цепь почти не двигается. Целиться надо в для Random Walk, для MALA, – для HMC.
- Запускают одну цепь и доверяют ей. Без по нескольким независимым стартам нельзя обнаружить, что цепь застряла в одной моде мультимодального распределения.
FAQ
Чем отличается Метрополис от Метрополиса-Гастингса? Метрополис требует симметричной пропозиции , и тогда . Гастингс добавил поправочный множитель и снял ограничение симметрии. На практике под общим именем «Метрополиса-Гастингса» понимают полную версию.
Зачем acceptance ratio именно , а не напрямую? Чтобы вероятность принятия не превышала единицы. Условие detailed balance выполняется и для не-усечённого отношения, но как вероятность принятия отношение интерпретировать нельзя - берут отсечение.
Можно ли использовать MCMC, если плотность имеет мультимодальную форму? Можно, но Random Walk будет надолго застревать в одной моде. Помогают tempering-схемы (parallel tempering, simulated annealing), HMC с длинными траекториями или специальные jumps - иначе ESS из моды в моду оказывается катастрофически мал.
Коротко
Алгоритм Метрополиса-Гастингса - это рецепт построения цепи Маркова, чьё стационарное распределение совпадает с заданным . На каждом шаге генерируется кандидат из пропозиции , считается acceptance ratio и принимается решение принять или отвергнуть. Detailed balance обеспечивает инвариантность . Метрополис - частный случай с симметричной . Качество выборки контролируют autocorrelation, ESS и Гельмана-Рубина. Алгоритм стоит в основе байесовской статистики и MCMC-инструментов вроде Stan и PyMC.
Читайте также

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

Алгоритм Рабина-Карпа: поиск подстроки за O(n+m)
Разбираем алгоритм Рабина-Карпа: как полиномиальный хеш и скользящее окно ускоряют поиск подстроки до O(n+m) в среднем, почему бывают ложные совпадения и при чём тут плагиат.

Распределение Фишера критические значения: как искать F-квантили
Распределение Фишера и его критические значения: что такое F-распределение, как читать таблицу критических значений по двум степеням свободы, как применять F-квантили в F-тесте на равенство дисперсий и в дисперсионном анализе.