Гамильтоново Монте-Карло
Гамильтоново Монте-Карло (Hamiltonian Monte Carlo, HMC) — это метод марковских цепей Монте-Карло (MCMC) для генерации выборок из непрерывных распределений вероятностей, особенно эффективный в задачах байесовской статистики и машинного обучения. В отличие от классических методов случайных блужданий (например, алгоритма Метрополиса — Гастингса), HMC использует градиенты логарифма целевой плотности для построения траекторий, что позволяет значительно ускорить сходимость и уменьшить корреляцию между последовательными выборками. Метод основан на моделировании динамики физической системы с помощью уравнений Гамильтона, где целевое распределение интерпретируется как потенциальная энергия, а вспомогательные импульсные переменные — как кинетическая энергия.
История
Идея использования гамильтоновой динамики для выборки из распределений была впервые предложена физиками Саймоном Дуэйном, Аланом Кеннеди и Брайаном Пендлтоном в 1987 году в работе «Hybrid Monte Carlo» (HMC). Первоначально метод разрабатывался для задач квантовой хромодинамики на решётке, где требовалось эффективно интегрировать по многомерным конфигурациям полей. В 1990-е годы метод был адаптирован для статистического вывода, но его широкое распространение началось только в 2010-х годах с ростом популярности байесовского анализа и появлением автоматических библиотек дифференцирования (например, Stan, PyMC, TensorFlow Probability). Ключевой вклад в популяризацию HMC внёс Радул Нил, который в 2011 году опубликовал обзор «MCMC Using Hamiltonian Dynamics», систематизировавший теорию и практические рекомендации.
Физическая аналогия
Гамильтоново Монте-Карло опирается на формализм классической механики. Рассматривается система с позиционной переменной \( q \) (соответствует параметрам модели) и импульсной переменной \( p \) (вспомогательные переменные, не имеющие прямого статистического смысла). Полная энергия системы (гамильтониан) записывается как сумма потенциальной и кинетической энергий:
\[ H(q, p) = U(q) + K(p), \]
где \( U(q) = -\log \pi(q) \) — потенциальная энергия, связанная с целевым распределением \( \pi(q) \), а \( K(p) = \frac{1}{2} p^T M^{-1} p \) — кинетическая энергия с массовой матрицей \( M \) (обычно диагональной или единичной). Эволюция системы во времени описывается уравнениями Гамильтона:
\[ \frac{dq}{dt} = \frac{\partial H}{\partial p} = M^{-1} p, \quad \frac{dp}{dt} = -\frac{\partial H}{\partial q} = \nabla_q \log \pi(q). \]
Интегрирование этих уравнений на некоторый временной интервал \( \tau \) даёт новое состояние \( (q', p') \), которое затем принимается или отклоняется по правилу Метрополиса — Гастингса. Благодаря сохранению энергии в идеальной системе, вероятность принятия шага близка к 1, что обеспечивает высокую эффективность.
Алгоритм
Основные шаги
- Инициализация: Задать начальное значение \( q_0 \).
- Генерация импульса: Сэмплировать импульс \( p \sim \mathcal{N}(0, M) \) из многомерного нормального распределения.
- Интегрирование: Применить численный интегратор (обычно метод «перепрыг-лягушка» — leapfrog) для приближённого решения уравнений Гамильтона на \( L \) шагов с шагом \( \epsilon \):
- Полушаг импульса: \( p \leftarrow p + \frac{\epsilon}{2} \nabla_q \log \pi(q) \)
- Полный шаг позиции: \( q \leftarrow q + \epsilon M^{-1} p \)
- Полушаг импульса: \( p \leftarrow p + \frac{\epsilon}{2} \nabla_q \log \pi(q) \)
- Принятие/отклонение: Вычислить изменение гамильтониана \( \Delta H = H(q', p') - H(q, p) \) и принять новое состояние с вероятностью \( \min(1, \exp(-\Delta H)) \). Если отклонено, возвращается предыдущее состояние \( q \).
- Повторение: Повторить шаги 2–4 для получения необходимого числа выборок.
Параметры настройки
- Шаг интегрирования \( \epsilon \): Малый шаг повышает точность, но увеличивает вычислительные затраты. Слишком большой шаг приводит к высокой частоте отклонений.
- Число шагов \( L \): Определяет длину траектории. Оптимальное значение зависит от геометрии целевого распределения. Для многомерных задач часто используется адаптивная настройка (например, в алгоритме No-U-Turn Sampler, NUTS).
- Массовая матрица \( M \): Влияет на масштабирование импульсов. В стандартной реализации \( M = I \), но для улучшения сходимости может быть оценена по апостериорной ковариации.
Преимущества и недостатки
Преимущества
- Высокая эффективность: HMC генерирует менее коррелированные выборки по сравнению с алгоритмами случайного блуждания, особенно в пространствах высокой размерности (десятки и сотни параметров).
- Использование градиентов: Метод эксплуатирует информацию о локальной геометрии целевого распределения, что позволяет быстро исследовать области с высокой плотностью.
- Сохранение энергии: Вероятность принятия шага близка к 1 при точном интегрировании, что минимизирует потери вычислительных ресурсов.
Недостатки
- Вычислительная сложность: Требует вычисления градиента логарифма целевой плотности на каждом шаге, что может быть дорого для моделей с большим числом параметров или сложными функциями правдоподобия.
- Чувствительность к настройке: Неправильный выбор \( \epsilon \) и \( L \) приводит к низкой эффективности или высокой частоте отклонений.
- Неприменимость к дискретным пространствам: HMC работает только с непрерывными переменными. Для дискретных параметров требуются модификации (например, использование вспомогательных переменных).
- Требования к гладкости: Целевое распределение должно быть дифференцируемым по параметрам.
Применение
Байесовская статистика
HMC является стандартным методом для апостериорного вывода в сложных байесовских моделях, таких как:
- Иерархические модели (например, в анализе клинических испытаний).
- Модели с нелинейными связями (например, в экологии и эпидемиологии).
- Модели с большим числом параметров (например, в нейросетях с байесовским обучением).
Машинное обучение
- Байесовские нейронные сети: HMC используется для оценки апостериорного распределения весов, что позволяет учитывать неопределённость прогнозов.
- Генеративные модели: В вариационных автокодировщиках и нормализующих потоках HMC может применяться для сэмплирования из скрытых распределений.
- Оптимизация: В некоторых задачах HMC используется как инструмент для глобальной оптимизации (например, в методе «Гамильтоновой оптимизации»).
Физика и инженерия
- Квантовая хромодинамика: Исходная область применения — интегрирование по конфигурациям калибровочных полей.
- Обратные задачи: В геофизике и медицинской томографии HMC применяется для восстановления параметров по зашумлённым данным.
Сравнение с другими методами MCMC
| Метод | Скорость сходимости | Корреляция выборок | Вычислительные затраты | Применимость |
|---|---|---|---|---|
| Метрополис — Гастингс | Низкая | Высокая | Низкие | Универсальный, но неэффективен в высоких размерностях |
| Сэмплирование Гиббса | Средняя | Средняя | Средние | Требует условных распределений в явном виде |
| HMC | Высокая | Низкая | Высокие | Непрерывные, гладкие распределения |
| NUTS (адаптивный HMC) | Высокая | Низкая | Средние | Автоматическая настройка, широко применяется в Stan |
Реализации и программное обеспечение
- Stan: Вероятностный язык программирования, в котором HMC (в форме NUTS) является основным алгоритмом сэмплирования.
- PyMC: Библиотека Python для байесовского моделирования, поддерживает HMC и NUTS.
- TensorFlow Probability: Инструмент для вероятностного программирования на основе TensorFlow, включает реализацию HMC.
- NumPyro: Библиотека на базе JAX, обеспечивающая высокопроизводительный HMC с автоматическим дифференцированием.
Интересные факты
- Название «Hybrid Monte Carlo» отражает сочетание детерминированной гамильтоновой динамики и стохастического принятия решений.
- Алгоритм No-U-Turn Sampler (NUTS), предложенный Мэттью Хоффманом и Эндрю Гельманом в 2014 году, автоматически выбирает длину траектории \( L \), что устраняет необходимость ручной настройки.
- HMC лежит в основе многих современных систем байесовского вывода, используемых в научных исследованиях, от астрофизики до экономики.
- В 2020 году группа исследователей из Google предложила «Гамильтоново Монте-Карло с римановой метрикой», которое учитывает кривизну целевого распределения для ещё более эффективной выборки.
Источники
- Duane, S., Kennedy, A. D., Pendleton, B. J., & Roweth, D. (1987). «Hybrid Monte Carlo». Physics Letters B, 195(2), 216–222.
- Neal, R. M. (2011). «MCMC Using Hamiltonian Dynamics». In Handbook of Markov Chain Monte Carlo (Chap. 5). CRC Press.
- Hoffman, M. D., & Gelman, A. (2014). «The No-U-Turn Sampler: Adaptively Setting Path Lengths in Hamiltonian Monte Carlo». Journal of Machine Learning Research, 15(1), 1593–1623.
- Betancourt, M. (2017). «A Conceptual Introduction to Hamiltonian Monte Carlo». arXiv:1701.02434.
- Carpenter, B., et al. (2017). «Stan: A Probabilistic Programming Language». Journal of Statistical Software, 76(1).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →