Байесовская статистика: принцип выборки Гиббса на практике

машинное обучение
Байесовская статистика: принцип выборки Гиббса на практике

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

Поскольку Toutiao не очень хорошо поддерживает Markdown, вы можете перейти по исходной ссылке для просмотра: https://www.zybuluo.com/zhuanxu/note/1027270.

Что ж, давайте начнем знакомить с выборкой Гиббса.

Выборка Гиббса

В предыдущей статье я представил подробное стационарное состояние, а именно:

Алгоритм выборки Гиббса следующий:

Покажем, что алгоритм выборки Гиббса также удовлетворяет подробному условию стационарности.

Предполагая, что x = x1,...,xD, когда мы выбираем k-е данные,

На данный момент наша скорость принятия составляет:

Ключевой частью приведенной выше формулы является:

Приведение может получить 1, то есть выборка Гиббса является некой приемлемой выборкой.

Возьмем пример, как обычно.

пример

Предположим, у нас есть данные x1,x2...xN, где числа 1-n следуют одному распределению Пуассона, а числа n+1-N следуют другому распределению Пуассона.

Хотя параметры распределения Пуассона подчиняются гамма-распределению, мы резюмируем текущие предыдущие предположения:

Тогда апостериорная вероятность равна:

Давайте начнем нашу выборку дальше, сначала рассчитаем logP:

Затем, чтобы попробовать

Мы берем здесь только элементы, относящиеся к текущим параметрам выборки, потому что остальные являются некоторыми константами, которые только нормализуют распределение вероятностей и не влияют на выборку.

Здесь все они подчиняются гамма-распределению.

И, наконец, н:

Информация о распределении для n не показана, но мы просто считаем, что это полиномиальное распределение.

Вот ключевой код Python:

Полный код см. в Gibbs.

Результат после выборки следующий:

LDA

Теперь давайте возьмем самую захватывающую модель LDA и посмотрим, как использовать выборку Гиббса для ее решения.

Первый взгляд на модель LDA:

Весь процесс можно описать как

  1. Для документа d образец из раздачи, т.е. тема раздачи документа d

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

  3. Для темы k выборка из нее, то есть словораспределение темы k

  4. Для каждого слова выберите конкретное слово t из тематического распределения.

Во всей приведенной выше модели параметры модели следующие:

Чтобы сделать выборку Гиббса, мы сначала рассмотрим совместное распределение этих параметров.

Приведенная выше формула представляет собой полиномиальное распределение, но распределение Дира Мы знаем, что распределение Дир и мультиномиальное распределение являются сопряженными распределениями, поэтому апостериорное распределение легче написать.

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

Давайте сначала посчитаем распределение вероятностей первой темы:

в

Представляет количество слов, принадлежащих каждой теме в m-м документе. 

Затем рассчитайте распределение слов по каждой теме.

в

Количество каждого слова в m-м документе, относящемся к k темам, всего (1-V) слов. Наконец, оцените тему каждого слова.

Мы можем видеть, что p(zmj=k) является полиномиальным распределением, вероятность каждого элемента равна бета*тета, и сами они должны быть выбраны из распределения Dir, естественная идея состоит в том, что мы можем использовать оценочное значение. Вместо этого мы можем легко вычислить вероятность из распределения Dir.

Необходимую математическую основу можно увидеть в тематической модели в заголовке: Математическая основа LDA.

Точка внутри — это распределение Dir и его математическое ожидание.

В приведенной выше выборке Гиббса мы рассчитали, что ожидание распределения Dir можно использовать в качестве нового значения параметра для каждой выборки.

кодирование

После введения математической основы мы можем увидеть, как это реализовать.Ниже приведен псевдокод.

Полный код можно увидеть в Play Point Advanced -- Тематическая модель LDA (небольшое улучшение + исходный код прилагается)

реализация pymc3

Далее давайте воспользуемся pymc3 для его реализации.

Можно сказать, что код, написанный pymc3, действительно лаконичен. но. Это слишком медленно, полный код можно увидеть в gibbs-lda.

Суммировать

В этой статье вводится выборка Гиббса, частный случай алгоритма mh, и дается доказательство того, почему работает выборка Гиббса Наконец, мы используем выборку Гиббса для решения задачи оценки параметров LDA.

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