Вероятностное программирование за тридцать секунд
Если вы уже хорошо знакомы с вероятностным программированием и хотите быстро узнать, как работает синтаксис Turing, или просто хотите получить модель для начала работы, мы предоставили байесовскую модель подбрасывания монеты, с которой можно поиграть.
Этот пример можно запустить на любом компьютере, где установлена среда Julia (см. Начало работы), но вам нужно будет установить пакеты Turing
и StatsPlots
, если это еще не сделано.
Это фрагмент из более формального примера знакомства с вероятностным программированием, который можно найти в виде записной книжки Jupyter здесь или на сайте документации здесь.
# Импортируем библиотеки.
using Turing, StatsPlots, Random
# Задаем истинную вероятность появления стороны с изображением головы на монете.
p_true = 0.5
# Выполняем итерацию от 0 наблюдений до 100 наблюдений.
Ns = 0:100
# Берем данные из распределения Бернулли, т. е. берем орел или решку.
Random.seed!(12)
data = rand(Bernoulli(p_true), last(Ns))
# Объявляем модель Turing.
@model function coinflip(y)
# Наше предположение о вероятности появления стороны с изображением головы на монете.
p ~ Beta(1, 1)
# Количество наблюдений.
N = length(y)
for n in 1:N
# Орел или решка взяты из распределения Бернулли.
y[n] ~ Bernoulli(p)
end
end
# Параметры сэмплера гамильтониана Монте-Карло (HMC).
iterations = 1000
ϵ = 0.05
τ = 10
# Запускаем выборку.
chain = sample(coinflip(data), HMC(ϵ, τ), iterations)
# Строим график сводки по процессу выборки для параметра p, т. е. вероятность появления стороны с изображением головы на монете.
histogram(chain[:p])