и цепь Маркова Монте-Карло

Предисловие: следующий пост предназначен для введения в математику. Предполагается некоторое знакомство со статистикой. Хотя он включает в себя математику, я ни в коем случае не эксперт. Я изо всех сил пытался изучить основы вероятностного программирования, и, надеюсь, это поможет кому-то еще разобраться в этом мире. Если вы обнаружите какие-либо ошибки, оставьте комментарий и помогите нам научиться. Ваше здоровье!

В науке о данных нас часто интересует понимание того, как были созданы данные, главным образом потому, что это позволяет нам отвечать на вопросы о новых и / или неполных наблюдениях. В частности, мы хотим смоделировать процесс, с помощью которого и в какой степени входные данные в наблюдаемых данных повлияли на выходные данные. Но для любого данного набора данных существует бесконечное количество возможных структур модели, которые могли бы разумно объяснить, как был сгенерирован набор данных. Но не все модельные структуры сделаны одинаково, то есть одни модельные структуры более реалистичны, чем другие, исходя из наших предположений о том, как устроен мир. Разработчик модели должен выбрать тот, который лучше всего описывает наблюдаемый им мир.

ЦЕЛЬ: Найдите модель M, которая лучше всего объясняет, как был создан набор данных D.

Даже после того, как мы выбрали, какие предположения о влиянии на мир мы сделали (то есть структура модели), сама структура модели пока остается абстрактной. Например, мы могли бы подумать, что модель, которая предсказывает вероятность того, что я буду есть мороженое, будет подходящей, если мы настроим ее так, чтобы дата и мое местоположение влияли на температуру, что, в свою очередь, влияет на шансы того, что я съеду темный шоколад. джелато (лучший вид). Но это дает нам только структуру модели. В идеале мы хотели бы иметь функцию, которая может назначать вероятности для любого возможного результата мороженого для заданной даты и места. Для этого нам также необходимо знать, насколько каждый вход влияет на каждый уровень модели - это фиксируется параметрами модели θ.

ПЕРЕСМОТРЕННАЯ ЦЕЛЬ: для данной структуры модели M, которая охватывает наши предположения о структуре мира (т. е. процесс влияния, посредством которого, по нашему мнению, были созданы данные), какие являются ли значения параметров модели θ, которые лучше всего объясняют наблюдаемые данные D, если они были получены в рамках этой выбранной модели?

Другими словами, нам может быть интересно найти значения θ, которые максимизируют вероятность наблюдения y s, которые мы сделали при X мы сделали (другими словами: максимизировали вероятность наблюдаемых данных D). Это называется оценкой максимального правдоподобия.

Вернемся к мороженому: представьте, что вы записываете каждый день, где я был и ел ли я мороженое или нет (странно, но, возможно, мой врач обеспокоен тем, что я ем слишком много мороженого). Оценщик максимального правдоподобия выведет θ s , который максимизирует функцию правдоподобия. Функция правдоподобия - это вероятность того, что мы наблюдали бы y (мое потребление мороженого) и X (дата и мое местоположение), если бы эти y действительно были созданы с этими θ и этими X. Увеличение вероятности дает нам комбинацию θ, которая, по-видимому, лучше всего работала при объяснении данных.

Часто мы пытаемся просмотреть каждую комбинацию значений параметров модели θ s и вычислить вероятность того, что модель с этим конкретным набором значений параметров модели сгенерировала наши наблюдаемые данные D . Конечно, невозможно выполнить поиск по КАЖДОЙ комбинации θ в большинстве практических сценариев, поэтому в традиционном машинном обучении мы вместо этого оптимизируем этот поиск с помощью таких алгоритмов, как градиентный спуск, которые выбирают, какие значения θ для проверки, учитывая, насколько хорошо эта текущая комбинация значений объясняет наблюдаемые данные. Затем мы выбираем и сообщаем комбинацию θ, которая максимизировала вероятность наших данных.

Одна из проблем с этим подходом заключается в том, что мы указываем единственную комбинацию θ s как нашу наилучшую оценку, но кто-то другой, увидев этот отчет, не поймет, насколько мы уверены. для каждого сообщаемого значения параметра. Это проблема, потому что наблюдаемые данные почти всегда являются выборкой истинной совокупности и заведомо зашумлены, независимо от того, сколько данных мы собираем; мы никогда не должны быть на 100% уверены в какой-либо точечной оценке параметра модели. Подумайте, наблюдали бы мы другую или ограниченную выборку населения (например, что, если бы я не забывал записывать свое потребление мороженого только в 75% случаев или только тогда, когда я был в Нью-Йорке?), Будет ли наш отчет θ s меняются кардинально или минимально? Знание вероятного интервала для каждого значения θ включает информацию о том, насколько репрезентативной, по нашему мнению, является наша оценка для данного параметра модели на основе данных, которые мы видели, которые часто могут отражать эффект истинного физического явления. . Мы также очень мало знаем о том, как знание о моем потреблении мороженого может повлиять на вероятность того, что это была определенная температура или я нахожусь в определенном городе (т. Е. Вывод в обратном направлении).

Байесовский вывод

Чтобы решить эти проблемы, я хотел бы представить байесовский вывод, где правило Байеса является нашей мантрой:

Давайте посмотрим, как это можно применить к нашей цели. Напомним, что было бы идеально знать распределение вероятностей значения параметра θ в рамках выбранной нами структуры модели, учитывая наблюдаемые нами данные: P_M (θ | D). Подключаем это к правилу Байеса:

Теперь мы можем переписать уравнение 2 как:

Если мы выберем значения θ для проверки нашей предварительно выбранной модели, будет действительно легко вычислить P_M (D | θ), потому что мы знаем все входные / выходные / параметры этой функции моделирования (напомним, это называется вероятностью), и мы также знаем априорное значение P (θ), потому что оно представляет наши убеждения относительно определенного θ (например, для кажущейся справедливой монеты θ, вероятно, нормальное значение с центром на 0,5, и в зависимости от наших убеждений о том, насколько справедлива монета, мы можем увеличить или уменьшить дисперсию этой нормы) . Числитель EQN 4 довольно просто вычислить для выбранного θ.

Спросите нас об этих количествах для каждого возможного θ, и мы быстро поймем, что сталкиваемся с той же проблемой, что и раньше при традиционном машинном обучении: мы не можем выбрать каждый отдельный θ! Другими словами, знаменатель EQN 4 почти невозможно вычислить.

MCMC

Методы Монте-Карло с цепью Маркова (MCMC) были разработаны для того, чтобы разумно выбирать θ, а не напрямую суммировать вероятность и априорность для каждого возможного θ. Основная идея, лежащая в основе этих методов, аналогична методам обновления θ, которые мы видели в традиционном машинном обучении: мы «обновляем» с новым набором значений θ на основе нашей оценки вероятность текущего набора значений θ. Большая разница здесь в том, что мы делаем выборку, а не обновляем - другими словами, нас интересует история значений, которые мы исследовали. Это важно, потому что нас больше не интересует единственная наилучшая оценка каждого из параметров (что мы и делаем при градиентном спуске), а нам интересно знать набор «хороших» оценок для каждого из параметров. параметры и насколько они вероятны. (т. е. распределение вероятностей θ при заданном D).

Давайте углубимся в общий обзор алгоритмов MCMC и того, почему они здесь работают. MCMC заботится об отслеживании двух вещей:

θ_current: единственный θ, который нас сейчас интересует
trace_θ: список всех θ_current s чтобы

MCMC начинается с выбора случайного начального значения θ:

θ_current = θ_0
trace_θ = [θ_0]

и вычисляет вероятность и априор (т.е. числитель уравнения 4). Суть создания MCMC заключалась в том, что, хотя знаменатель постоянен для всех вариантов θ, мы не можем вычислить сумму в знаменателе напрямую, поэтому оставим это пока в стороне. На данный момент мы не знаем, является ли выбранный нами θ_0 хорошим выбором. Вместо этого мы выбираем предложение θ_1 (на данный момент считаем, что оно выбрано волшебно, но мы вернемся к этому очень скоро), и если оно дает больший числитель в EQN 4, мы можем согласиться, что это лучший выбор для θ. Это связано с тем, что в EQN 4 знаменатель постоянен, независимо от нашего выбора θ для вставки в EQN 4. Поскольку мы знаем, что θ_1 лучше, давайте добавим его в нашу трассировку. , обновите наш текущий θ и вычислите вероятность и априор (т. е. числитель EQN 4):

θ_current = θ_1
trace_θ = [θ_0, θ_1]

Теперь мы можем выбрать новый θ_2 для предложения (пока это все еще магический процесс), и если он не так хорош в объяснении данных (то есть дает меньший числитель уравнения 4), тогда мы не будем t немедленно принять его на этот раз, вместо этого мы принимаем его в наши θ_current и trace_θ с вероятностью 𝛼:

Причина этого в том, что мы можем предположить, что θ_2 только на 𝛼 так хорошо, как θ_current. Это означает, что в нашей истории выборки мы должны ожидать, что количество выборок θ_2 будет множителем 𝛼 от количества выборок θ_current:

В этом режиме после достаточной выборки у вас должно быть интуиция, что мы изучим множество значений θ и сохраним их в переменной трассировки с частотой, пропорциональной тому, насколько хорошо θ значение объясняет данные относительно других θ. Это именно то распространение, которое нас интересовало!

И наконец, мы возвращаемся к вопросу о том, как создать хорошее предложение θ s. Если у нас нет метода и мы выберем θ для предложения случайным образом среди всех возможных значений θ, мы отклоним слишком много выборок (учитывая истинную плотность θ, вероятно, относительно узко распределен). Вместо этого мы извлекаем θ из распределения предложения q (θ_proposed | θ_current). Например, мы можем сделать q нормальным с фиксированной дисперсией и средним значением θ_current.

В этом суть одного из самых популярных алгоритмов MCMC под названием Metropolis-Hastings (MH). Мы включаем это в наш коэффициент приемлемости 𝛼 следующим образом:

Если мы выберем симметричное распределение предложений (например, нормальное распределение), то:

и отсюда _ r = 𝛼. Это называется алгоритмом случайного блуждания MH, и в итоге вы получите такие графики:

Слева - график KDE (по сути, сглаженная гистограмма) для параметра «intercept_mu», а справа - график с течением времени для каждой цепочки выборки. Мы могли бы сделать вывод, что, хотя наиболее вероятное значение параметра (режим трассировки, также известный как MAP) составляет 0,16, достоверный интервал параметра, вероятно, находится между 0,1 и 0,21.

Приложение:

  • Чтобы наглядно объяснить этот процесс, посмотрите это видео.
  • Большинство пакетов, которые помогают вам выполнить MCMC, обычно запускают 3 или более трассировки (также известные как «цепочки») с разными случайными инициализациями, чтобы гарантировать «схождение» цепочек. Это важно, потому что сходящиеся цепи указывают на то, что ваша цепь Маркова стабилизировалась.
  • Я обычно учитываю период приработки, который отбрасывает первые несколько тысяч выборок, которые могут зависеть от случайной инициализации тета.
  • Выбор априора влияет на результат выборки. Не выбирайте слишком узкие априорные значения (поскольку ваша предвзятость помешает правильному исследованию пространства параметров и ваши цепочки не смогут сходиться) или слишком широкие априорные значения (называемые неинформативными априорными значениями, ваши шансы на схождение также уменьшаются, поскольку вы потратите слишком много времени отвергать бесполезные образцы).
  • Я обычно использую режим или среднее значение кривой, чтобы сообщить наиболее вероятное значение, и интервал HPD (самая высокая апостериорная плотность), чтобы установить достоверный интервал.