Представление выборки распределений Используя сэмплеры цепи Маркова

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

Используя алгоритм Гастингса столицы

Алгоритм Гастингса Столицы чертит выборки от распределения, которое только известно до константы. Случайные числа сгенерированы от распределения с функцией плотности вероятности, которая равна или пропорциональна функции предложения.

Сгенерировать случайные числа:

  1. Примите начальное значение x (t).

  2. Чертите выборку, y (t), от распределения предложения q (y |x (t)).

  3. Примите y (t) как следующий демонстрационный x (t + 1) с вероятностью r (x (t), y (t)), и сохраните x (t) как следующий демонстрационный x (t + 1) с вероятностью 1 – r (x (t), y (t)), где:

    r(x,y)=min{f(y)f(x)q(x|y)q(y|x),1}

  4. Постепенно увеличьте tt + 1, и повторные шаги 2 и 3, пока вы не получите желаемое количество выборок.

Сгенерируйте случайные числа с помощью метода Гастингса Столицы с mhsample функция. Чтобы произвести качественные выборки эффективно с алгоритмом Гастингса Столицы, крайне важно выбрать хорошее распределение предложения. Если это затрудняет, чтобы найти эффективное распределение предложения, используйте выборку среза (slicesample) или гамильтонов Монте-Карло (hmcSampler) вместо этого.

Используя выборку среза

В экземплярах, где это затрудняет, чтобы найти эффективное распределение предложения Гастингса Столицы, алгоритм выборки среза не требует явной спецификации. Алгоритм выборки среза чертит выборки из области под функцией плотности с помощью последовательности вертикальных и горизонтальных шагов. Во-первых, это выбирает высоту наугад от 0 до функции плотности f (x). Затем это выбирает новое x значение наугад путем выборки от горизонтального “среза” плотности выше выбранной высоты. Подобный алгоритм выборки среза используется для многомерного распределения.

Если функция f (x) пропорциональный функции плотности дана, то сделайте следующее, чтобы сгенерировать случайные числа:

  1. Примите начальное значение x (t) в области f (x).

  2. Чертите действительное значение y однородно от (0, f (x (t))), таким образом, задавая горизонтальный “срез” как S = {x: y <f (x)}.

  3. Найдите интервал I = (L, R) вокруг x (t), который содержит все или большую часть “среза” S.

  4. Чертите новую точку x (t + 1) в этом интервале.

  5. Постепенно увеличьте tt + 1 и повторные шаги 2 - 4, пока вы не получите желаемое количество выборок.

Выборка среза может сгенерировать случайные числа от распределения с произвольной формой функции плотности, при условии, что эффективная числовая процедура доступна, чтобы найти интервал I = (L, R), который является “срезом” плотности.

Сгенерируйте случайные числа с помощью метода выборки среза с slicesample функция.

Используя гамильтонов Монте-Карло

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

Чтобы использовать выборку HMC, необходимо задать, регистрируют f(x) (до аддитивной постоянной) и ее градиент. Можно использовать числовой градиент, но это приводит к более медленной выборке. Все переменные выборки должны быть неограничены, означая, которые регистрируют f(x), и его градиент четко определены для всего действительного x. К ограниченным переменным выборки преобразуйте эти переменные в неограниченные единицы перед использованием сэмплера HMC.

Алгоритм выборки HMC вводит случайный “вектор импульса” z и задает объединенную плотность z и “радиус-вектора” x как P(x,z) = f(x)g(z). Цель состоит в том, чтобы произвести от этого совместного распределения и затем проигнорировать значения z — предельное распределение x имеет желаемую плотность f(x).

Алгоритм HMC присваивает Гауссову плотность с ковариационной матрицей M (“большая матрица”) к z:

g(z)exp(12zTM1z)

Затем это задает “энергетическую функцию” как

E(x,z)=logf(x)+12zTM1z=U(x)+K(z)

с U(x) = – регистрируют f(x) “потенциальная энергия” и K(z) = zTM-1z/2 “кинетическая энергия”. Объединенная плотность дана P(x,z) ∝ exp {-E(x,z)}.

Сгенерировать случайные выборки, алгоритм HMC:

  1. Принимает начальное значение x радиус-вектора.

  2. Генерирует выборку вектора импульса: z ∼ g(z).

  3. Развивает (x, z) состояния для некоторой суммы фиктивного времени τ к новому (x’,z’) состояния с помощью “уравнений движения”:

    dzdτ=Ux

    dxdτ=Kz

    Если бы уравнения движения могли бы быть решены точно, энергия (и следовательно плотность) осталась бы постоянной: E(x,z) = E(x’,z’). На практике уравнения движений должны быть решены численно (обычно использующий так называемое интегрирование чехарды), и энергия не сохраняется.

  4. Принимает x’ как следующую выборку с вероятностью p acc = min (1, exp {E(x,z) – E(x’,z’)}), и сохраняет x как следующую выборку с вероятностью 1 – p acc.

  5. Шаги 2 - 4 повторений, пока это не сгенерировало желаемое количество выборок.

Чтобы использовать выборку HMC, создайте сэмплер с помощью hmcSampler функция. После создания сэмплера можно вычислить MAP (максимум по опыту) точечные оценки, настроить сэмплер, чертить выборки и проверять диагностику сходимости. Для примера этого рабочего процесса смотрите, что Байесова Линейная регрессия Использует гамильтонов Монте-Карло.

Смотрите также

Функции