Как бы вы объяснили Маркову цепь Монте-Карло (MCMC) непрофессионалу?


240

Может быть, концепция, почему она используется, и пример.


14
Вот моя любимая статья на эту тему: citeseerx.ist.psu.edu/viewdoc/...

На этом сайте вы найдете хорошее графическое представление MCMC и несколько полезных ссылок.
Сергей

3
Чтобы понять алгоритм MCMC, вы должны понимать, для чего он на самом деле используется и как он сходится к данному распределению. Я написал в блоге обо всей интуиции и приложениях для нее. Вы можете посетить их здесь: mlwhiz.com/blog/2015/08/19/MCMC_Algorithms_Beta_Distribution mlwhiz.com/blog/2015/08/21/MCMC_Algorithms_Cryptography
Рахул Агарвал

Пожалуйста, обратитесь к следующему репо, где представлено подробное объяснение MCMC. github.com/bashhwu/Sampling-based-inference/blob/master/...
Башар Мохаммад

Ответы:


223

Во-первых, нам нужно понять, что такое цепь Маркова. Рассмотрим следующий пример погоды из Википедии. Предположим, что погоду в любой день можно классифицировать только по двум штатам: солнечная и дождливая. Исходя из прошлого опыта, мы знаем следующее:

P(Next day is Sunny|Given today is Rainy)=0.50

Поскольку на следующий день погода солнечная или дождливая, следует следующее:

P(Next day is Rainy|Given today is Rainy)=0.50

Аналогично, пусть:

P(Next day is Rainy|Given today is Sunny)=0.10

Следовательно, следует, что:

P(Next day is Sunny|Given today is Sunny)=0.90

Вышеприведенные четыре числа могут быть компактно представлены в виде матрицы перехода, которая представляет вероятности перехода погоды из одного состояния в другое состояние следующим образом:

P=[SRS0.90.1R0.50.5]

Мы могли бы задать несколько вопросов, ответы на которые следуют:


Q1: Если погода сегодня солнечная, то какая погода будет завтра?

A1: Поскольку мы точно не знаем, что произойдет, лучшее, что мы можем сказать, это то, что есть вероятность что будет солнечно, и , что будет дождливо.10 %90%10%


Q2: как насчет двух дней с сегодняшнего дня?

A2: прогноз на один день: солнечного, дождливого. Поэтому через два дня:10 %90%10%

В первый день может быть солнечно, а на следующий день также может быть солнечно. Вероятность этого: .0.9×0.9

Или же

Первый день может быть дождливым, а второй - солнечным. Шансы на это: .0.1×0.5

Поэтому вероятность того, что погода будет солнечной через два дня, равна:

P(Sunny 2 days from now=0.9×0.9+0.1×0.5=0.81+0.05=0.86

Точно так же вероятность, что это будет дождливо:

P(Rainy 2 days from now=0.1×0.5+0.9×0.1=0.05+0.09=0.14


В линейной алгебре (матрицы переходов) эти вычисления соответствуют всем перестановкам при переходах от одного шага к следующему (солнечно-солнечно ( ), солнечно-дождливо ( ), дождливо-солнечно ( ) или от дождя к ( )) с их рассчитанными вероятностями:S 2 R R 2 S R 2 RS2SS2RR2SR2R

введите описание изображения здесь

В нижней части изображения мы видим, как рассчитать вероятность будущего состояния ( или ) с учетом вероятностей (функция вероятности массы, ) для каждого состояния (солнечно или дождливо) в нулевое время (сейчас или ) как простое умножение матриц.t + 2 P M F t 0t+1t+2PMFt0

Если вы продолжаете прогнозировать погоду, подобную этой, вы заметите, что в конечном итоге прогноз на день, где очень большое (скажем, ), соответствует следующим вероятностям «равновесия»:n 30nn30

P(Sunny)=0.833

а также

P(Rainy)=0.167

Другими словами, ваш прогноз на день и день остается прежним. Кроме того, вы также можете проверить, что «равновесные» вероятности не зависят от погоды сегодня. Вы получите такой же прогноз для погоды, если начнете с предположения, что погода сегодня солнечная или дождливая.n + 1nn+1

Приведенный выше пример будет работать только в том случае, если вероятности перехода состояний удовлетворяют нескольким условиям, которые я не буду здесь обсуждать. Но обратите внимание на следующие особенности этой «хорошей» цепи Маркова (nice = вероятности перехода удовлетворяют условиям):

Независимо от начального начального состояния мы в конечном итоге достигнем равновесного распределения вероятностей состояний.

Марковская цепь Монте-Карло использует вышеуказанную функцию следующим образом:

Мы хотим генерировать случайные ничьи из целевого распределения. Затем мы определяем способ построения «хорошей» цепочки Маркова так, чтобы ее распределение вероятностей равновесия было нашим целевым распределением.

Если мы можем построить такую ​​цепь, то мы произвольно начнем с некоторой точки и повторяем цепь Маркова много раз (например, как мы прогнозируем погоду раз). В конце концов, сгенерированные нами дро будут выглядеть так, как будто они исходят от нашего целевого дистрибутива.n

Затем мы аппроксимируем интересующие величины (например, среднее), беря среднее значение выборки по ничьим после отбрасывания нескольких начальных ничьих, которые являются компонентом Монте-Карло.

Существует несколько способов построения «хороших» цепей Маркова (например, сэмплер Гиббса, алгоритм Метрополиса-Гастингса).


2
Это красиво написанный ответ. Хотя это, вероятно, потеряло бы внимание непрофессионала в том месте, где обсуждаются переходные матрицы.
rraadd88

1
Отличный ответ. Я думаю, что было бы полезно объяснить ранее (или более подробно) о том факте, что конечной целью является определение некоторого количества интереса (например, среднее значение или режим предполагаемых параметров). Это правильно, верно?
Остин Шин

101

Я думаю, что есть хорошая и простая интуиция, которую можно получить из алгоритма (цепочки независимости) Метрополиса-Гастингса.

Во-первых, какова цель? Целью MCMC является отбор образцов из некоторого распределения вероятности без необходимости знать его точную высоту в любой точке. Способ, которым MCMC достигает этого, состоит в том, чтобы «блуждать» по этому распределению таким образом, чтобы количество времени, проведенного в каждом местоположении, было пропорционально высоте распределения. Если процесс «блуждания» настроен правильно, вы можете убедиться, что эта пропорциональность (между затраченным временем и высотой распределения) достигнута.

Интуитивно понятно, что нам нужно ходить по какой-то (кусковой) поверхности таким образом, чтобы количество времени, которое мы проводим (или # выборок) в каждом местоположении, было пропорционально высоте поверхности в этом месте. Так, например, мы бы хотели провести на вершине холма на высоте 100 м вдвое больше времени, чем на соседнем холме на высоте 50 м. Приятно то, что мы можем сделать это, даже если мы не знаем абсолютных высот точек на поверхности: все, что нам нужно знать, это относительные высоты. Например, если одна вершина холма A в два раза выше вершины холма B, то мы хотели бы провести в A вдвое больше времени, чем мы проводим в B.

Простейший вариант алгоритма Метрополиса-Гастингса (выборка по цепочке независимости) позволяет добиться этого следующим образом: предположим, что на каждом (дискретном) временном шаге мы выбираем случайное новое «предложенное» местоположение (выбранное равномерно по всей поверхности). Если предложенное местоположение выше, чем там, где мы сейчас находимся, перейдите к нему. Если предлагаемое местоположение ниже, то переместитесь в новое местоположение с вероятностью p, где p - отношение высоты этой точки к высоте текущего местоположения. (то есть подбрасываете монету с вероятностью p получения голов; если она поднимается головой, двигайтесь в новое место; если она поднимается хвостом, оставайтесь там, где мы есть). Сохраняйте список местоположений, в которых вы были на каждом временном шаге, и этот список будет (асимптотически) иметь правильную пропорцию времени, проведенного в каждой части поверхности.

Существуют более сложные схемы предложения новых местоположений и правила их принятия, но основная идея все еще заключается в следующем: (1) выбрать новое «предложенное» местоположение; (2) выяснить, насколько выше или ниже это местоположение по сравнению с вашим текущим местоположением; (3) вероятностно оставаться на месте или перемещаться в это место таким образом, чтобы это соответствовало общей цели проведения времени, пропорционального высоте места.

Для чего это нужно? Предположим, у нас есть вероятностная модель погоды, которая позволяет нам оценить A * P (погоду), где A - неизвестная постоянная. (Это часто случается - многие модели удобно формулировать так, что вы не можете определить, что такое A). Таким образом, мы не можем точно оценить P («дождь завтра»). Однако мы можем некоторое время запустить пробоотборник MCMC и затем спросить: какая часть проб (или «местоположений») оказалась в состоянии «завтрашнего дождя». Эта доля будет (на основе модели) вероятностного прогноза погоды.


6
+1. На мой взгляд, «блуждающий» является наиболее интуитивной аналогией среди тех, что перечислены на этой странице.
Жубарб

«без необходимости знать его точную высоту в любой точке» Это не основное ограничение MCMC.
JeremyKun

Мне бы очень хотелось, чтобы это объяснение было в учебниках, чтобы нам не приходилось тратить время на то, чтобы колотить по голове, чтобы понять, что делает МЗ.
Пн

89

Я бы сказал что-то вроде этого:

«В любое время, когда мы хотим поговорить о вероятностях, мы действительно интегрируем плотность. В байесовском анализе многие плотности, которые мы придумаем, не поддаются аналитическому анализу: вы можете только интегрировать их - если можете вообще их интегрировать - с большим страданием. Так что вместо этого мы много моделируем случайную переменную, а затем вычисляем вероятности из наших смоделированных случайных чисел. Если мы хотим узнать вероятность того, что X меньше 10, мы считаем пропорция смоделированной случайной величины дает менее 10 и использует ее в качестве нашей оценки. Это часть «Монте-Карло», это оценка вероятности, основанная на случайных числах. При достаточном количестве смоделированных случайных чисел оценка очень хорошая, но она все еще по своей природе случайный.

«Так почему же« цепь Маркова »? Потому что при определенных технических условиях вы можете сгенерировать процесс без памяти (он же марковский), который имеет такое же предельное распределение, что и случайная переменная, которую вы пытаетесь смоделировать. количество различных видов процессов моделирования, которые генерируют коррелированные случайные числа (основанные только на текущем значении этих чисел), и вы гарантированно, что, как только вы соберете достаточно результатов, вы получите кучу чисел, которые выглядят " как будто «вам каким-то образом удалось взять независимые образцы из сложного дистрибутива, о котором вы хотели знать.

«Так, например, если я хочу оценить вероятность того, что стандартная нормальная случайная величина была меньше 0,5, я мог бы сгенерировать десять тысяч независимых реализаций из стандартного нормального распределения и подсчитать число менее 0,5; скажем, я получил 6905, которые были менее 0,5 из 10000 общих выборок, моя оценка P (Z <0,5) будет 0,6905, что не так уж далеко от фактического значения. Это будет оценка Монте-Карло.

список чисел, которые я получаю из процедуры, будет распределен как большое количество ничьих из чего-то, что генерирует нормальные случайные величины. Это дало бы мне симуляцию Маркова с цепью Монте-Карло для стандартной нормальной случайной величины. Если бы я использовал это для оценки вероятностей, это была бы оценка MCMC ».


7
Это хорошее объяснение, но не для нетехнического непрофессионала. Я подозреваю, что ОП хотел знать, как это объяснить, скажем, МВА, который нанял вас для статистического анализа! Как бы вы описали MCMC для того, кто, в лучшем случае, вроде бы понимает концепцию стандартного отклонения (хотя дисперсия может быть слишком абстрактной)?
Харлан

10
@ Харлан: Это трудная линия, чтобы колебаться; если кто - то не по крайней мере знать , что случайная величина, почему мы могли бы оценить вероятности, и есть смутное представление о функции плотности, то я не думаю , что это можно осмысленно объяснить , как и почему из MCMC для них только «что», которое в этом случае сводилось бы к «это способ численного решения невозможной в противном случае задачи путем симуляции, например, подбрасывание монеты много, чтобы оценить вероятность того, что она упадет на головы».
Рич

1
+1 за последний абзац. С минимумом технических деталей это хорошо передает идею.
whuber

Классное объяснение. Я думаю, что это отлично подходит для нетехнического человека.
SmallChess

Сомнение - почему в последнем абзаце список чисел выглядит как нормальное распределение? Это из-за центральной предельной теоремы? Кроме того, что если мы хотим смоделировать какой-то другой дистрибутив?
Манодж Кумар

37

Представьте, что вы хотите найти лучшую стратегию, чтобы побить своих друзей в настольной игре Monopoly. Упростите материал, который имеет значение в игре, и задайте вопрос: на какие свойства люди чаще всего попадают? Ответ зависит от структуры доски, правил игры и бросков двух кубиков.

Один из способов ответить на вопрос заключается в следующем. Просто следуйте одной фигуре по доске, бросая кости, и следуйте правилам. Посчитайте, сколько раз вы приземлились на каждое имущество (или запрограммируйте компьютер, чтобы сделать работу за вас). В конце концов, если у вас достаточно терпения или вы достаточно хорошо запрограммировали правила на своем компьютере, вы получите хорошее представление о том, какие свойства приносят наибольшую прибыль. Это должно помочь вам побеждать чаще.

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


1
Объяснение звучит как простая симуляция Монте-Карло, но как насчет цепи Маркова? Как цепь Маркова связана с этим моделированием Монте-Карло?
Эмран Хуссейн

@ Ответ Эмрана Грэма Куксона, кажется, уже объясняет связь между цепями Монополии и Маркова.
Glen_b

Монополия может быть смоделирована как цепь Маркова, где каждое свойство / пространство является узлом / состоянием. Когда вы находитесь в каком-либо конкретном пространстве, у вас есть различные вероятности перехода в следующие 12 пространств (если использовать 2 кубика) - это ребра / соединения в цепочке Маркова. Легко определить вероятность каждого ребра / соединения: gwydir.demon.co.uk/jo/probability/calcdice.htm#sum

32

Хорошо, вот моя лучшая попытка неформального и грубого объяснения.

Марковская цепь - это случайный процесс, обладающий тем свойством, что будущее зависит только от текущего состояния процесса, а не от прошлого, т. Е. Без памяти. Примером случайного процесса может служить фондовая биржа. Примером цепочки Маркова может служить настольная игра, такая как «Монополия» или «Змеи и лестницы», где ваша будущая позиция (после броска кубика) будет зависеть только от того, с чего вы начали до броска, а не от ваших предыдущих позиций. Учебным примером цепочки Маркова является «прогулка пьяницы». Представьте себе человека, который пьян и может двигаться только влево или вправо на один шаг. Пьяница движется влево или вправо с равной вероятностью. Это цепь Маркова, где будущее / следующее положение пьяного зависит только от того, где он находится в настоящее время.

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

Эти две концепции могут быть объединены, чтобы решить некоторые сложные проблемы в таких областях, как байесовский вывод, вычислительная биология и т. Д., Где для решения общих задач необходимо рассчитать многомерные интегралы. Идея состоит в том, чтобы построить цепь Маркова, которая сходится к желаемому распределению вероятности после ряда шагов. Состояние цепи после большого количества шагов затем используется в качестве выборки из желаемого распределения, и процесс повторяется. Существует много разных алгоритмов MCMC, которые используют разные методы для генерации цепи Маркова. Общие из них включают Метрополис-Гастингс и Образец Гиббса.


1
Действительно хорошее объяснение. Только одна путаница не устранена. Как вы сказали, «идея состоит в том, чтобы построить цепь Маркова, которая сходится к желаемому распределению вероятностей». Похоже, мы уже знаем Распределение вероятностей стационарных состояний для состояний, тогда зачем нам строить цепочку Маркова. Целью марковской цепочки является обеспечение нас устойчивым распределением состояний, которое у нас уже есть на первом месте, не так ли? Если вы не имели в виду, получение цепи Маркова по-прежнему необходимо для вычисления вероятности состояния n + 1 на основе текущего состояния.
Эмран Хуссейн

16

Выдержка из байесовских методов для хакеров

Байесовский пейзаж

NNp1p2

Exp(3)Exp(10)

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

введите описание изображения здесь

Это простые примеры в 2D-пространстве, где наш мозг может хорошо понимать поверхности. На практике пространства и поверхности, порожденные нашими априорами, могут быть намного более размерными.

XXподталкивает первоначальную поверхность, чтобы сделать высокие горы . Величина подталкивания сопротивляется предыдущей вероятности, так что меньшая предварительная вероятность означает большее сопротивление. Таким образом, в приведенном выше случае с двойным экспоненциальным предшествованием гора (или несколько гор), которая может прорваться около (0,0) угла, будет намного выше, чем горы, простирающиеся ближе к (5,5), поскольку вблизи (5,5). Гора, или, возможно, в более общем смысле, горные цепи, отражают заднюю вероятность того, где могут быть найдены истинные параметры.

λ

введите описание изображения здесь

Uniform(0,5)

Черная точка представляет истинные параметры. Даже с 1 точкой выборки, как это было смоделировано выше, горы пытаются содержать истинный параметр. Конечно, вывод с размером выборки 1 невероятно наивен, и выбор такого небольшого размера выборки был только иллюстративным.

Изучение ландшафта с помощью MCMC

NNNиз заднего распределения, а не самого распределения. Протягивая нашу горную аналогию до ее предела, MCMC выполняет задачу, аналогичную повторяющемуся вопросу «Насколько вероятен этот камешек, который я нашел с горы, которую я ищу?», И завершает свою задачу, возвращая тысячи принятых камешков в надежде восстановить оригинальная гора. В MCMC и PyMC lingo возвращаемая последовательность «камешков» - это образцы, чаще называемые следами .

Когда я говорю, что MCMC осуществляет интеллектуальный поиск, я имею в виду, что MCMC, как мы надеемся, будет сходиться к областям высокой апостериорной вероятности. MCMC делает это, исследуя близлежащие позиции и перемещаясь в области с более высокой вероятностью. Опять же, возможно, «сходиться» не является точным термином, чтобы описать прогресс MCMC. Сходство обычно подразумевает движение к точке в пространстве, но MCMC движется к более широкой области в пространстве и случайным образом перемещается в этой области, отбирая образцы из этой области.

Во-первых, возвращение тысяч сэмплов пользователю может показаться неэффективным способом описания апостериорных распределений. Я бы сказал, что это чрезвычайно эффективно. Рассмотрим альтернативные возможности:

  1. Возвращение математической формулы для «горных цепей» будет включать описание N-мерной поверхности с произвольными пиками и долинами.
  2. Возвращение «пика» ландшафта, в то время как математически возможно и разумная вещь, поскольку высшая точка соответствует наиболее вероятной оценке неизвестных, игнорирует форму ландшафта, что, как мы ранее доказывали, очень важно при определении апостериорной уверенности в неизвестности.

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

Алгоритмы выполнения MCMC

Существует большое семейство алгоритмов, которые выполняют MCMC. Проще говоря, большинство алгоритмов можно выразить на высоком уровне следующим образом:

1. Start at current position.
2. Propose moving to a new position (investigate a pebble near you ).
3. Accept the position based on the position's adherence to the data 
and prior distributions (ask if the pebble likely came from the mountain).
4. If you accept: Move to the new position. Return to Step 1.
5. After a large number of iterations, return the positions.

Таким образом, мы движемся в общем направлении к регионам, где существуют апостериорные распределения, и бережно собираем образцы в пути. Как только мы достигнем апостериорного распределения, мы можем легко собрать образцы, поскольку они, вероятно, все принадлежат апостериорному распределению.

Если текущая позиция алгоритма MCMC находится в области с чрезвычайно низкой вероятностью, что часто имеет место, когда алгоритм начинается (обычно в случайном месте в пространстве), алгоритм будет перемещаться в положениях , которые, вероятно, не сзади но лучше, чем все остальное поблизости. Таким образом, первые шаги алгоритма не отражают апостериор.


2
Я понимаю, что проблема была связана именно с MCMC, а не с байесовским выводом, но в контексте байесовских ландшафтов я считаю MCMC очень понятным.
Cam.Davidson.Pilon

10

Таким образом, здесь есть множество ответов, перефразированных из учебников по статистике / вероятности, Википедии и т. Д. Я считаю, что у нас есть «непрофессионалы», где я работаю; Я думаю, что они в отделе маркетинга. Если мне когда-нибудь придется объяснять им что-то техническое, я применяю правило «покажи не говори». Имея это в виду, я бы, наверное, показал им что-то вроде этого.

Идея здесь состоит в том, чтобы попытаться написать алгоритм, который я могу научить писать - не изучая все сотни (тысячи?) Правил, таких как При добавлении окончания к слову, заканчивающемуся тихой буквой e, опускаем последнюю букву e если окончание начинается с гласной . Одна из причин, по которой это не сработает, это то, что я не знаю этих правил (я даже не уверен, что то, что я только что прочитал, является правильным). Вместо этого я собираюсь научить его писать по буквам, показывая ему кучу правильно написанных слов и позволяя ему извлекать правила из этих слов, что является более или менее сущностью машинного обучения, независимо от алгоритма - извлечения и распознавания образов. ,

Критерием успеха является правильное написание слова, которого алгоритм никогда раньше не видел (я понимаю, что это может произойти по чистой случайности, но этого не случится с маркетологами, поэтому я проигнорирую - плюс у меня будет алгоритм попытаться произнести не одно слово, а много, поэтому маловероятно, что мы будем обмануты несколькими удачными догадками).

Примерно час назад я скачал (в виде простого текстового файла) с превосходного сайта «Проект Гутенберг» роман Германа Гессе « Сиддхартха» . Я буду использовать слова в этом романе, чтобы научить алгоритм написанию.

Поэтому я кодировал алгоритм ниже, который сканировал этот роман, по три буквы за раз (у каждого слова есть один дополнительный символ в конце, который является «пробелом», или концом слова). Трехбуквенные последовательности могут многое вам рассказать - например, за буквой «q» почти всегда следует «u»; последовательность 'ty' обычно встречается в конце слова; Z редко делает, и так далее. (Примечание: я мог бы так же легко снабдить его целыми словами, чтобы научить его говорить целыми предложениями - точно такая же идея, всего лишь несколько настроек кода).

Однако это не касается MCMC, что происходит после обучения, когда мы даем алгоритму несколько случайных букв (в качестве начального числа), и он начинает формировать слова. Как алгоритм строит слова? Представьте, что у него есть блок 'qua'; какое письмо это добавляет дальше? Во время обучения алгоритм построил массивную матрицу * частотных последовательностей * из всех тысяч слов в романе. Где-то в этой матрице находится трехбуквенный блок 'qua' и частоты для символов, которые могут следовать последовательности. Алгоритм выбирает букву на основе тех частот, которые могут за ней следовать. Таким образом, буква, которую алгоритм выбирает следующим, зависит - и исключительно от - последних трех в своей очереди построения слова.

Так что это алгоритм цепей Маркова Монте-Карло.

Я думаю, что, пожалуй, лучший способ показать, как это работает, - показать результаты, основанные на разных уровнях обучения. Уровень обучения варьируется путем изменения количества проходов, которые делает алгоритм, хотя в романе - чем больше проходов, тем выше точность его частотно-матричных матриц. Ниже приведены результаты - в виде 100-символьных строк, выведенных алгоритмом - после обучения роману «Сиддхарта».


Один проход через роман, Сиддхартха :

тогда, кто, гер, вайф, все мотанди, встань, ты, злой, тот, кто запятнан.

(Сразу же, он научился говорить почти идеально на валлийском языке; я этого не ожидал.)


После двух проходов по роману:

Ack WOR Prenskinith шоу было двухлетним, увиденным thehein theatin Land Rhatingle был ov там


После 10 проходов:

Несмотря на то, что должен молиться с Ack теперь у воды ее собака рычаг боли ноги каждый не слабая память


А вот код (в Python я почти уверен, что это можно сделать в R, используя пакет MCMC, из которых их несколько, всего за 3-4 строки)

def create_words_string(raw_string) :
  """ in case I wanted to use training data in sentence/paragraph form; 
      this function will parse a raw text string into a nice list of words;
      filtering: keep only words having  more than 3 letters and remove 
      punctuation, etc.
  """
  pattern = r'\b[A-Za-z]{3,}\b'
  pat_obj = re.compile(pattern)
  words = [ word.lower() for word in pat_obj.findall(raw_string) ]
  pattern = r'\b[vixlm]+\b'
  pat_obj = re.compile(pattern)
  return " ".join([ word for word in words if not pat_obj.search(word) ])

def create_markov_dict(words_string):
  # initialize variables
  wb1, wb2, wb3 = " ", " ", " "
  l1, l2, l3 = wb1, wb2, wb3
  dx = {}
  for ch in words_string :
    dx.setdefault( (l1, l2, l3), [] ).append(ch)
    l1, l2, l3 = l2, l3, ch
  return dx

def generate_newtext(markov_dict) :
  simulated_text = ""
  l1, l2, l3 = " ", " ", " "
  for c in range(100) :
    next_letter = sample( markov_dict[(l1, l2, l3)], 1)[0]
    simulated_text += next_letter
    l1, l2, l3 = l2, l3, next_letter
  return simulated_text

if __name__=="__main__" :
  # n = number of passes through the training text
  n = 1
  q1 = create_words_string(n * raw_str)
  q2 = create_markov_dict(q1)
  q3 = generate_newtext(q2)
  print(q3)

12
Вы создали марковскую модель для написания на английском языке и подгоняли ее под данные. Но выборка из подобранной модели не MCMC. (Из какого «желаемого распределения» он выбирает? Очевидно, что это не распределение по «правильно написанным словам на английском языке», так как модель все еще допускает ошибки после обучения). Я не хочу критиковать это упражнение; Это хорошая демонстрация модели цепей Маркова для языка. Но ключевая идея MCMC - спроектировать цепь Маркова так, чтобы ее равновесное распределение соответствовало некоторому распределению, которое вы имеете в виду, и не очевидно, что это достигается этим.
jpillow

2

MCMC обычно используется в качестве альтернативы грубым методам моделирования Монте-Карло. Как MCMC, так и другие методы Монте-Карло используются для оценки сложных интегралов, но MCMC можно использовать более широко.

Например, общая проблема в статистике - вычисление среднего результата, относящегося к некоторой вероятностной / стохастической модели. Методы как MCMC, так и метода Монте-Карло могли бы решить эту проблему, создав последовательность смоделированных результатов, которые мы могли бы использовать для оценки истинного среднего значения.

Как MCMC, так и грубые методы Монте-Карло работают, так как долгосрочная доля симуляций, равных данному результату, будет равна * смоделированной вероятности этого результата. Поэтому, генерируя достаточное количество симуляций, результаты, полученные обоими методами, будут точными.

* Я говорю « равный», хотя в целом я должен говорить об измеримых множествах. Мирянин, однако, вероятно, не будет заинтересован в этом *

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

Поэтому уловка MCMC заключается в выборе случайного блуждания, которое будет «посещать» каждый результат с желаемыми долгосрочными частотами.

Простым примером может быть симуляция из модели, которая говорит, что вероятность результата «А» равна 0,5, а результата «В» - 0,5. В этом случае, если я начал случайное блуждание в положении «А» и предписал, чтобы на каждом шаге он переключался в другое положение с вероятностью 0,2 (или любой другой вероятностью, превышающей 0), я мог быть уверен, что после большого количество шагов, которое случайное блуждание посетило бы каждый из «A» и «B» примерно за 50% шагов - в соответствии с вероятностями, предписанными нашей моделью.

Это, очевидно, очень скучный пример. Однако оказывается, что MCMC часто применяется в ситуациях, в которых трудно применять стандартные методы Монте-Карло или другие методы.

Вы можете найти статью, которая охватывает основы того, что это такое и почему это работает здесь:

http://wellredd.uk/basics-markov-chain-monte-carlo/


Мы пытаемся создать постоянное хранилище высококачественной статистической информации в форме вопросов и ответов. Мы стараемся избегать ответов только по ссылкам, на которые может ссылаться ссылка; как таковой, это скорее комментарий, чем ответ сам по себе. Если вы можете, можете ли вы расширить ее, возможно, предоставив сводную информацию по ссылке (или мы можем преобразовать ее в комментарий для вас).
Glen_b

1

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

Справочная информация: в программном обеспечении используется метрополия Hastings MCMC и биологическая модель, которая имитирует известное поведение профилей ДНК (модель построена на основе данных валидации, полученных в результате лабораторного анализа многих профилей ДНК из известных условий, представляющих диапазон, встречающийся в неизвестном случае). Есть 8 независимых цепочек, и мы оцениваем сходимость, чтобы определить, нужно ли повторно запускать увеличение записи и принятия после записи (по умолчанию запись в 100k принимает, а запись в 400k принимает)

На вопрос прокурора / защиты о MCMC: мы объясняем, что это обозначает цепочку Маркова Монте-Карло и представляет особый класс / вид алгоритма, используемого для комплексного решения проблем, и что алгоритм - это просто причудливое слово, относящееся к серии процедур или рутины выполняется компьютером ... алгоритмы mcmc работают, предлагая решение, моделируя это решение, а затем оценивая, насколько хорошо это моделирование отражает фактические данные доказательства, наблюдаемые ... моделирование, которое хорошо подходит для наблюдения доказательства, имеет более высокую вероятность, чем моделирование, которое не соответствует наблюдению ... во многих повторяющихся выборках / предположениях предлагаемых решений цепи Маркова отходят от решений с низкой вероятностью к решениям с высокой вероятностью, которые лучше соответствуют / объясняют наблюдаемый профиль доказательства, пока в конечном итоге не наступит равновесие достигнуты,Это означает, что алгоритм имеет ограниченную возможность выборки новых предложений, дающих значительно увеличенные вероятности

Когда спрошено о мегаполисе Гастингсе: мы объясняем, что это уточнение алгоритма MCMC, описывающего процесс принятия решения, принимающего или отклоняющего предложение ... обычно это объясняется аналогией "горячей / холодной" детской игры, но я, возможно, подумал об использовании " проведите пальцем вправо или влево ", когда присяжные особенно молоды !! : p Но используя нашу горячую / холодную аналогию, мы всегда принимаем горячее предположение и иногда принимаем холодное предположение за небольшую долю времени и объясняем, что цель иногда принять холодное предположение состоит в том, чтобы обеспечить цепочку выборки более широкого диапазона возможностей, как против застрять вокруг одного конкретного предложения до фактического равновесия

Отредактировано, чтобы добавить / уточнить: по аналогии с горячей / холодной водой мы объясняем, что в детской игре лидер выбирает целевой объект / область в комнате, а игроки по очереди делают предположения, в каком направлении двигаться относительно их текущего положения / положения. Лидер говорит им изменить свою позицию / сделать ход, если это горячая догадка, и они теряют свой ход / остаться в позиции, если это холодная догадка. Аналогичным образом, в нашем программном обеспечении решение о перемещении / принятии зависит только от вероятности предложения по сравнению с вероятностью занимаемой в настоящее время позиции ... ОДНАКО цель заранее определена / известна руководителю детской игры, тогда как цель в нашем программном обеспечении не определена заранее - она ​​полностью неизвестна (и почему

Как я уже сказал, супер супер базовый и абсолютно не хватает технических деталей для улучшения понимания - мы стремимся объяснить примерно на уровне средней школы. Не стесняйтесь вносить предложения. Я включу их.


0

Этот вопрос является широким, но ответы на него часто бывают довольно случайными. Кроме того, вы можете увидеть эту статью, которая дает краткое математическое описание широкого класса алгоритмов MCMC, включая алгоритмы Метрополиса-Гастингса, выборку Гиббса, методы Метрополиса-в-Гиббсе и вспомогательных переменных, выборку срезов, рекурсивные предложения, выборочную выборку, Ланжевена и Гамильтониан Монте-Карло, выборка NUTS, псевдомаргинальные алгоритмы Метрополиса-Гастингса и псевдо-маргинальный гамильтониан Монте-Карло, как обсуждалось авторами.

Достоверный отзыв дается здесь

Я найду больше времени, чтобы проработать его контент в формате stackexchange.


0

f(x,y)=z=x2+2xy(x,y)f(x,y)f(x,y)

f(x,y,z,t,s,...,zzz)

Это видео (начиная с 5:50) содержит очень хорошую интуицию.

Представьте, что вы хотите выбрать точки, которые находятся на зеленых (многомерных) ветвях на этом рисунке. Если вы бросаете точки по всему черному суперпространству и проверяете их значение, вы ТРАТИТЕ много энергии для поиска (поиска). Поэтому было бы более разумно контролировать свою стратегию отбора проб (которая может быть автоматизирована), чтобы выбирать точки ближе к зеленым ветвям (там, где это важно). Зеленые ветви могут быть обнаружены при случайном попадании (или контроле), а остальная часть усилия по сэмплированию (красные точки) будет сгенерирована позже. Причина, по которой красный цвет притягивается к зеленой линии, заключается в том, что матрица цепных переходов Маркова работает как ваш двигатель выборки.

Итак, с точки зрения непрофессионала, MCMC - это энергосберегающий (недорогой) метод отбора проб, особенно при работе в массивном и «темном» (многомерном) пространстве.

введите описание изображения здесь


1
Я думаю, что у нас есть другое определение «мирянина»
Нил Макгиган

хахаха. Я могу добавить Монте-Карло для «непрофессионала», но выборка / Монте-Карло не была вопросом.
Амир
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.