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

Метод Монте-Карло Метрополис - это способ оценивать средние по сложному вероятностному распределению, когда прямое интегрирование невозможно, а плотность известна только с точностью до нормировки. Его предложили Николас Метрополис, Арианна и Маршалл Розенблют и Эдвард и Августа Теллер в 1953 году для расчётов в статистической физике: нужно было считать термодинамические средние в системе многих частиц, где число конфигураций астрономически велико. Идея - не перебирать все состояния, а построить случайное блуждание (цепь Маркова), которое посещает конфигурации с частотой, пропорциональной их вероятности. Тогда обычное среднее вдоль траектории сходится к среднему по распределению.
Зачем нужен метод Монте-Карло Метрополис
Классический Монте-Карло оценивает интеграл , генерируя точки из распределения и усредняя . Проблема в том, что в физике и байесовской статистике обычно имеет вид - распределение Больцмана, где - статистическая сумма (partition function). Считать - значит просуммировать по всем состояниям, а их, например для модели Изинга на решётке , уже . Прямая выборка из такого невозможна.
Метод Метрополиса обходит это: вероятность принятия зависит только от отношения , в котором нормировка сокращается. Нам достаточно уметь считать энергию - а не статистическую сумму.
Если у тебя уже есть конкретное распределение или физическая система - выбери ниже целевое распределение и тип задачи, и мы соберём корректную формулу вероятности принятия, подскажем шаг и проверим сходимость.
Распределение Больцмана и принцип выборки по важности
Случайная выборка из равномерного распределения по конфигурациям почти бесполезна: подавляющее большинство состояний имеет ничтожный больцмановский вес , и оценка получается из единичных «удачных» точек с огромной дисперсией. Метод Монте-Карло Метрополис реализует выборку по важности (importance sampling): он генерирует конфигурации сразу с частотой, пропорциональной . Тогда среднее по выборке
не требует весов - каждый посещённый уже учтён с правильной частотой. Здесь - обратная температура: при больших (низкая ) распределение концентрируется около минимумов энергии, при малых становится почти равномерным.
Общая схема алгоритма Метрополиса
Пусть текущее состояние цепи - . Один шаг (Monte Carlo step) состоит из трёх действий:
- Предложить кандидата симметричным пробным ходом - например, перевернуть случайный спин в модели Изинга или сдвинуть координату , .
- Вычислить изменение энергии и вероятность принятия
- Сгенерировать . Если - принять кандидата (), иначе остаться ().
Логика прозрачна: ход «вниз» по энергии () принимается всегда, ход «вверх» () - с вероятностью . Именно эти редкие подъёмы дают системе возможность выбираться из локальных ям и исследовать всё пространство. Это исходный метод Монте-Карло Метрополис; обобщение на несимметричные пробные ходы - алгоритм Метрополиса-Гастингса с дополнительным множителем .
Почему это работает: детальный баланс
Чтобы цепь Маркова имела стационарным распределением именно , достаточно выполнения условия детального баланса (detailed balance):
где - вероятность перехода, а симметрична: . Пусть , тогда и . Подставляем:
Равенство выполнено, значит - инвариантная мера. Если вдобавок цепь неприводима (из любого состояния достижимо любое) и апериодична, она эргодична: распределение при стремится к независимо от старта. Детальный баланс - достаточное, но не необходимое условие; на нём держится корректность всего метода.
Модель Изинга: канонический пример
Историческое и до сих пор учебное применение - модель Изинга. Спины на решётке, энергия
где сумма по соседним парам, - обменное взаимодействие, - внешнее поле. Метод Монте-Карло Метрополис здесь работает так: выбираем случайный спин, считаем от его переворота (зависит только от ближайших соседей - это локально и дёшево), принимаем переворот с вероятностью . Усредняя намагниченность и энергию вдоль траектории, получаем термодинамические средние. Вблизи критической температуры цепь резко замедляется (критическое замедление) - соседние конфигурации сильно скоррелированы, и тут переходят к кластерным алгоритмам (Вольфа, Свендсена-Ванга).
Burn-in, автокорреляция и оценка погрешности
Цепь стартует из произвольной конфигурации и первые шаги ещё «помнит» начало - этот участок (burn-in, или термализация) выбрасывают: система должна сначала прийти в типичные для состояния. Дальше важны две вещи:
- Автокорреляция. Соседние зависимы, поэтому оценивают интегральное время автокорреляции . Эффективное число независимых выборок много меньше . Стандартная ошибка среднего - не , а .
- Acceptance rate. Доля принятых ходов. Слишком высокая (близко к 1) - шаг мал, цепь еле движется; слишком низкая - шаг велик, почти всё отвергается. Для гауссовых пробных ходов оптимум около в многомерном случае и в одномерном.
Чтобы поймать застревание в одной моде мультимодального распределения, запускают несколько независимых цепей и сравнивают их статистику ( Гельмана-Рубина ).
Связь с имитацией отжига
Если медленно увеличивать (понижать «температуру») по ходу выборки, метод Метрополиса превращается в имитацию отжига (simulated annealing) - алгоритм оптимизации. При высокой система свободно гуляет и не застревает в локальных минимумах энергии; при постепенном охлаждении она «оседает» в глобальном минимуме. Это прямое следствие того, что распределение Больцмана при концентрируется на состояниях с минимальной . Один и тот же шаг принятия служит и для расчёта средних, и для поиска оптимума.
Частые ошибки
- Пытаются вычислить статистическую сумму . Весь смысл метода в том, что сокращается в отношении - её считать не нужно и обычно невозможно.
- Не отбрасывают burn-in. Начальные нетермализованные конфигурации смещают оценку средних, особенно если старт далёк от равновесия.
- Считают шаги цепи независимыми. Используют для погрешности, игнорируя автокорреляцию, - реальная неопределённость занижается в раз.
- Гонятся за высоким acceptance rate. Приём означает, что цепь почти стоит на месте; целиться надо в умеренный диапазон, а не в максимум.
- Запускают одну цепь у критической точки. Вблизи из-за критического замедления одиночная цепь не успевает разойтись - нужны кластерные методы или несколько стартов.
FAQ
Чем метод Монте-Карло Метрополис отличается от обычного Монте-Карло? Обычный Монте-Карло генерирует независимые точки из распределения напрямую и усредняет. Метод Метрополиса строит зависимую цепь Маркова - это нужно, когда напрямую сэмплировать нельзя, а известно лишь с точностью до нормировки.
Почему ход с ростом энергии вообще принимается? Иначе цепь скатилась бы в ближайший локальный минимум и осталась там. Подъёмы с вероятностью обеспечивают неприводимость и дают правильный больцмановский вес высокоэнергетическим состояниям при конечной температуре.
В чём разница между методом Метрополиса и Метрополиса-Гастингса? Метрополис требует симметричной пробной плотности , и тогда . Гастингс снял это ограничение, добавив поправку , что позволяет использовать любые пробные распределения.
Коротко
Метод Монте-Карло Метрополис оценивает средние по распределению Больцмана , строя цепь Маркова: предлагается симметричный пробный ход, кандидат принимается с вероятностью . Нормировка при этом сокращается, поэтому достаточно считать только энергию. Корректность гарантирует детальный баланс, а оказывается стационарным распределением цепи. Канонический пример - расчёт термодинамических средних в модели Изинга; качество выборки контролируют burn-in, автокорреляция и acceptance rate, а понижение температуры превращает метод в имитацию отжига.
Читайте также

Алгоритм Метрополиса-Гастингса: как работает MCMC
Алгоритм Метрополиса-Гастингса позволяет сэмплировать из сложного распределения через цепь Маркова. Разбираем шаг принятия, detailed balance и сходимость на понятных примерах.

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

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