exponenta event banner

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

Для более сложных распределений вероятностей могут потребоваться более расширенные методы генерации выборок, чем методы, описанные в Common Pseudorandom Number Generation Methods. Такие распределения возникают, например, в байесовском анализе данных и в больших комбинаторных задачах марковской цепной симуляции Монте-Карло (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) = мин {f (y) f (x) q (x 'y) q (y' x), 1}

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

Генерировать случайные числа с помощью метода Метрополиса-Гастингса с помощью mhsample функция. Для эффективного получения образцов качества с помощью алгоритма Metropolis-Hastings важно выбрать хорошее распределение предложений. Если трудно найти эффективное распределение предложений, используйте выборку срезов (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 необходимо указать log f (x) (вплоть до аддитивной константы) и ее градиент. Можно использовать численный градиент, но это приводит к более медленной выборке. Все переменные выборки должны быть неограниченными, что означает, что log 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 (12zTM − 1z)

Затем он определяет «энергетическую функцию» как

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

при U (x) = - log 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τ=−∂U∂x

    dxdτ=∂K∂z

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

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

  5. Повторяет шаги 2-4 до тех пор, пока не сформирует требуемое количество выборок.

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

См. также

Функции