Как выборки заменяют невозможную сумму по всем вариантам?
MCMC не умеет напрямую вытянуть число из сложного распределения. Вместо
этого метод строит зависимую прогулку, которая достаточно долго живёт в
нужных областях. Из локального правила перехода — сравнить две плотности и
бросить монетку — возникает глобальная статистика. Плата за отказ от
неизвестной нормировки: сто тысяч состояний могут стоить пятисот
независимых.
Когда плотность известна только с точностью до множителя
В байесовской задаче апостериорная плотность параметра θ имеет вид
p(θ∣D)=∫p(D∣u)p(u)dup(D∣θ)p(θ).
Числитель вычислить обычно можно: это правдоподобие, умноженное на prior, —
всё то, что мы уже собирали в уроке 47. А вот многомерный
интеграл в знаменателе не берётся ни аналитически, ни численно: сетка из
десяти узлов по каждой из двадцати координат — это 1020 точек, больше,
чем секунд с начала Вселенной. Обозначим ненормированную плотность
π(θ)=p(D∣θ)p(θ),π(θ)=Zπ(θ),Z=∫π(u)du.
Для ожидания I=Eπf(θ) нужны выборки из π, но
стандартный генератор случайных чисел требует нормированного распределения.
MCMC обходит круг: строит цепь Маркова, стационарное распределение которой
совпадает с π, и оценивает
IN=N1t=1∑Nf(θt).
Выборки θt зависимы — и это не мелкая техническая деталь, а главная
статья расходов всего метода. Базовые свойства стационарности и переходов
были введены в цепях Маркова; теперь они становятся
вычислительным инструментом.
Баланс потоков
Пусть K(x,dy) — переходное правило цепи. Достаточное условие
стационарности называется детальным балансом (обратимостью):
π(x)K(x,dy)=π(y)K(y,dx).
Оно говорит, что в равновесии поток вероятности из x в y в точности
компенсируется обратным потоком. Проинтегрируем по всем x:
∫π(dx)K(x,dy)=π(dy)∫K(y,dx)=π(dy),
потому что полная вероятность перейти хоть куда-нибудь равна единице.
Значит, один такт цепи сохраняет целевое распределение: если
θt∼π, то и θt+1∼π.
В дискретном случае детальный баланс — это равенство потоков по каждой паре
состояний, в непрерывном — равенство мер. Полезно держать в голове картинку
двух сообщающихся сосудов: пока в обе стороны переливается поровну, уровни
не меняются.
Алгоритм Метрополиса–Хастингса
Находясь в x, предложим новую точку y∼q(y∣x) и примем её с
вероятностью
a(x,y)=min(1,π(x)q(y∣x)π(y)q(x∣y)).
Если предложение отклонено, следующее состояние снова равно x. Для
симметричного предложения q(y∣x)=q(x∣y) остаётся исходная формула
Метрополиса:
a(x,y)=min(1,π(x)π(y)).
В программе всё считают в логарифмах: предложение принимается, если
logu<logπ(y)−logπ(x),u∼U(0,1),
и это единственная строка, где встречается случайность помимо самого
предложения.
Движение в область большей плотности принимается всегда, а вниз по
плотности — иногда. Эти редкие спуски и позволяют цепи выбираться из
локального пика. Формула похожа на критерий в
имитации отжига, но цель другая: отжиг ищет единственный
максимум и постепенно замораживает температуру, а MCMC обязан сохранить всё
распределение целиком.
Это одна фраза, и в ней весь метод. Прямое взвешивание безнадёжно: почти
все взятые наугад конфигурации имеют ничтожный вес, и миллион точек несёт
информации как одна. Перенос трудности из веса в способ выбора и есть
изобретение 1953 года.
Хастингс сделал шаг, ради которого метод и попал в статистику: снял
требование симметрии предложения. Множитель q(x∣y)/q(y∣x)
компенсирует несимметричность, и предложение можно проектировать свободно —
хоть тянуть его в сторону области высокой плотности.
Цель — смесь 0,6N(−2,5;0,49)+0,4N(2,5;0,49); точная масса слева равна 0,600. Цепь с
σ=1,2 приняла 56,0% предложений и за 100 000 тактов после
прогрева перешла между модами 469 раз — один переход на 213 тактов.
Гистограмма похожа на цель, но доля x<0 оказалась 0,580: промах
0,020 там, где наивный расчёт по числу тактов,
0,6⋅0,4/100000≈0,0015, обещал больше чем в
десять раз меньше. Причина честно измерена:
τint=187 и Neff=534.
Отказ — это тоже такт
Повторы обязательны. Если записывать в цепь только принятые предложения,
стационарное распределение изменится: области, из которых трудно уйти и в
которые трудно попасть, будут представлены неверно.
Масштаб предложения и цена корреляции
Рассмотрим random-walk Metropolis:
y=x+σε,ε∼N(0,I).
При слишком малом σ почти всё принимается, но цепь ползёт
микроскопическими шагами и остаётся рядом с собой. При слишком большом
σ предложения падают в области ничтожной плотности и отклоняются;
цепь снова почти стоит, только теперь неподвижность выглядит как длинные
плато. Между крайностями есть рабочий масштаб.
Измеряется всё это автокорреляцией функции f(θt) на лаге k:
ρk=Corr(f(θt),f(θt+k)),
интегрированным временем автокорреляции
τint=1+2k≥1∑ρk
и эффективным размером выборки
Neff≈τintN.
Смысл τint прямой: дисперсия среднего по зависимой цепи
равна
Var(fˉ)≈NτintVar(f)=NeffVar(f),
то есть цепь длины N стоит ровно N/τint независимых
наблюдений. Сравнивать методы по длине выходного файла бессмысленно.
Рис. 67.2. Три масштаба предложения: 98,6% принятия дают в 200 раз меньше информации, чем 44,6%
Цель N(0,1), 50 000 состояний после прогрева в каждой колонке.
При σ=0,05 принимается 98,6% предложений, но
τint=892 и Neff=56. При σ=2,4
принимается 44,6%, τint=4,4,
Neff=11457 — в 204 раза больше информации при том же числе
вычислений. При σ=25 принимается лишь 5,2%, цепь стоит длинными
плато, Neff=1651. Доля принятия сама по себе ничего не
значит: худший вариант имел лучшую долю.
Лаборатория цепи
Предложение, доля принятия и перемешивание
График шире экрана — листайте по горизонтали →
Загружается живая иллюстрация…
Начните с двух мод и σ=1,2: посмотрите, как быстро растёт число
тактов и как медленно — число переходов между модами. Затем поставьте
σ=0,05 и убедитесь, что доля принятия почти 100%, а
Neff остаётся двузначным. Затем σ=8: принимается мало,
трасса складывается из ступенек. Наконец, переключите цель на «узкая +
широкая» — настройка, удобная для широкого холма, проскакивает узкий, а
настройка для узкого еле ползёт по широкому. Одной универсальной длины шага
не существует.
Отдельно поставьте старт x=8 при маленьком σ: первые сотни тактов
цепь просто идёт к области высокой плотности, и включать их в среднее
нельзя.
Прогрев, несколько цепей и диагностика
Начальный участок, пока цепь забывает старт, называют warm-up или burn-in.
Правило «отбросить первые десять процентов» — не теорема, а привычка.
Надёжнее запускать несколько цепей из разнесённых точек и сравнивать их
между собой.
Диагностика R сопоставляет разброс между цепями и внутри них.
Если B — межцепная дисперсия средних, W — средняя внутрицепная
дисперсия, а n — длина половины цепи, то
Var=nn−1W+nB,R=WVar.
Эффективный размер выборки при нескольких цепях складывается: если запущено
M цепей длины N с общим τint, то
Neffвсего=τintMN,
и четыре цепи по 25 000 тактов дают ровно столько же информации, сколько
одна длиной 100 000, — зато позволяют вычислить R.
Значение около единицы — необходимый, но не достаточный признак. Цепи могут
дружно застрять в одной моде и показать R≈1,00, честно
согласившись друг с другом в общем заблуждении.
Thinning — сохранение каждого k-го состояния — обычно не создаёт
информацию. Оно уменьшает файл, но выбрасывает уже вычисленные точки. Для
оценки среднего выгоднее учитывать все состояния и корректно оценивать
τint.
Цель — две далеко разнесённые моды равной массы (±6, ширина 0,8).
Четыре цепи по 30 000 тактов после прогрева, две стартовали слева, две
справа. Переходов между модами — ноль. Объединённая доля x<0 равна ровно
0,500, то есть «правильна», но лишь потому, что мы сами поставили
поровну стартов. Split-R=8,05 немедленно выдаёт обман, а
гистограмма — нет.
Проверка на задаче с известным ответом
Перед сложным posterior полезно устроить калибровочный стенд: взять
реальные данные, но такую модель, где ответ известен точно. Возьмём
SMS Spam Collection: 5574 сообщения, из них 747 помечены как
спам. Модель — та же, что в уроке 47: доля спама p с prior
Beta(1,1) и биномиальным правдоподобием. Тогда posterior
известен в замкнутой форме:
p∣D∼Beta(1+747,1+4827),E[p∣D]=5576748=0,13415.
Теперь сделаем вид, что формулы мы не знаем, и запустим random-walk
Metropolis по p с σ=0,02: 120 000 тактов, первые 20 000 в
прогрев. Цепь приняла 27,2% предложений, дала среднее 0,13410,
τint=5,8 и Neff=8645.
Рис. 67.4. Реальный спам: цепь против точного ответа, промах 0,000045 при MCSE 0,000048
Реальные данные SMS Spam Collection (n=5574, спама 747). Слева:
гистограмма цепи и точная плотность Beta(748,4828) — совпадают.
Справа: бегущее среднее по логарифмической оси; после нескольких тысяч
тактов оно оседает на точном значении 0,13415. Промах составил
0,000045 при собственной оценке погрешности
MCSE=0,000048 — метод не только попал, но и правильно
предсказал свою точность. Байесовский интервал цепи
[0,1254;0,1431] совпадает с точным [0,1252;0,1431] до
третьего знака.
Совпадение с известным ответом — не украшение, а обязательный этап.
Программа, которая ошибается в знаке приращения логарифма или забывает
записывать повторы, на такой задаче ловится за минуту, а на реальном
posterior может годами выдавать правдоподобную чепуху.
Геометрия posterior: реальные данные
Возьмём набор Breast Cancer Wisconsin из sklearn: 569 наблюдений, из них
212 злокачественных. Оставим два признака — mean radius и
mean perimeter — и заметим главное: у почти круглого пятна периметр
пропорционален радиусу, поэтому корреляция признаков равна 0,998.
Модель:
Почти дублирующие признаки делают posterior вытянутым: корреляция
коэффициентов равна −0,963, отношение осей эллипса 11,9. Изотропное
предложение обязано быть узким по короткой оси — и потому ползёт вдоль
длинной.
Рис. 67.5. Одинаковая доля принятия, разница в эффективном размере выборки в 23 раза
Реальные данные: 569 наблюдений, два признака с корреляцией 0,998.
Изотропное предложение приняло 35,9% и дало Neff=159;
предложение с ковариацией, пропорциональной ковариации posterior, приняло
почти столько же — 37,8% — но дало Neff=3685, в
23,2 раза больше при том же числе вычислений π. Доля
принятия у обеих цепей практически одинакова: она не видит геометрию.
Интересно, что́ именно posterior знает уверенно. Отдельные коэффициенты
почти не определены: βradius=−2,89 с интервалом
[−5,26;−0,50] шириной 4,76, а βperimeter=6,69
с интервалом [4,26;9,10]. Зато их сумма определена почти вчетверо
точнее: 3,80 с интервалом [3,17;4,47] шириной 1,30.
Энергия, температура и многомодальность
Плотность часто записывают в физической форме
π(x)∝e−E(x)/T,E(x)=−Tlogπ(x).
Энергия E мала в вероятных состояниях, температура T сглаживает
рельеф. При T→0 пики сжимаются к точкам максимума, при больших T
рельеф становится почти плоским. Отношение принятия принимает вид
π(x)π(y)=e−ΔE/T,ΔE=E(y)−E(x),
а вероятность за один шаг пересечь барьер высотой ΔE падает
экспоненциально. Отсюда и берутся нулевые переходы на рис. 67.3.
Tempering-методы запускают несколько цепей при разных температурах и
периодически обменивают их состояния: горячая цепь легко перелезает
барьеры, холодная хранит нужную цель, а обмен принимается по своему
критерию Метрополиса, так что суммарный баланс сохраняется.
Сколько стоит одна честная цифра
Оценив среднее, надо честно сообщить его погрешность. Наивная формула из
урока 46 предполагает независимость и потому в MCMC врёт.
Правильная версия — Monte Carlo standard error:
MCSE(fˉ)≈NeffVar(f)=NτintVar(f).
Проверить её можно так же, как мы проверяли интервалы в
уроке 46: многократно повторить всю процедуру и посчитать,
как часто интервал накрывает известное истинное значение.
Рис. 67.6. Наивный интервал накрывает истину в 34% случаев вместо 95%
Двести независимых запусков, в каждом 4000 состояний после прогрева, цель
N(0,1), истинное среднее равно нулю. Интервал
fˉ±1,96s/N, считающий выборку независимой, накрыл истину
лишь в 34% запусков. Интервал с поправкой на автокорреляцию,
fˉ±1,96s/Neff, дал 93,5% — почти
номинал. Он в 4,1 раза шире, и эта ширина честная.
Отсюда простое правило работы: любое число из цепи публикуется вместе с
Neff и MCSE, а количество значащих цифр в ответе определяется
MCSE, а не тем, сколько их напечатал компьютер.
Другая ветвь Монте-Карло: Соболь и равномерность вместо случайности
У задачи «оценить интеграл» есть и второй путь, и его в 1967 году проложил
Илья Меерович Соболь. В работе «О распределении точек в кубе и приближённом
вычислении интегралов» он построил ЛПτ-последовательности — не
случайные, а нарочито равномерные наборы точек, у которых каждый двоичный
блок координат заполняется без сгущений и пустот. Для гладких функций
ошибка квази-Монте-Карло убывает почти как 1/N вместо 1/N:
IN−I≤V(f)DN∗,DN∗=O(N(logN)d),
где V(f) — вариация функции, а DN∗ — дискрепанс, то есть
отклонение набора точек от идеальной равномерности. Это неравенство
Коксмы–Хлавки: детерминированная оценка, без всяких «с вероятностью
0,95».
Две ветви решают разные задачи, и это стоит помнить. ЛПτ великолепен
для гладкого интеграла умеренной размерности по известной области;
MCMC незаменим там, где область — это сама неизвестная масса вероятности в
двадцатимерном пространстве, и найти её можно, только ползая по отношениям
плотностей. Советская школа вычислительной вероятности разрабатывала обе
ветви: Соболь и Ермаков строили теорию Монте-Карло для интегралов и
интегральных уравнений, тогда как физики пользовались метрополисовскими
цепями. Сегодняшние библиотеки содержат обе кнопки, и выбирать между ними —
часть работы.
Три слоя успешной цепи
Успешная MCMC-работа состоит из трёх слоёв.
Первый — математика: детальный баланс и неприводимость гарантируют, что у
цепи правильное стационарное распределение. Это доказывается на бумаге и не
зависит от данных.
Второй — вычислительная диагностика: несколько цепей из разнесённых
стартов, трассы, split-R, τint,
Neff, MCSE. Она отвечает на вопрос, успела ли цепь исследовать
существенные области за отведённое время. Доля принятия относится сюда — и
только сюда.
Третий — предметная проверка: осмысленна ли сама вероятностная модель,
откуда взяты данные, что означает коэффициент. Идеальная цепь на плохой
модели даёт уверенно неверный ответ, и никакой R этого не
заметит.
Следующий урок о взломе шифра применит ту же механику к
непривычному пространству состояний — перестановкам букв. Там у цепи нет
координат, зато есть локальные обмены и языковая «энергия», и всё, что мы
сегодня считали для чисел, будет считаться для текста.