Скрытая марковская модель для нескольких наблюдаемых переменных - программирование
Подтвердить что ты не робот

Скрытая марковская модель для нескольких наблюдаемых переменных

Я пытаюсь использовать скрытую марковскую модель (HMM) для задачи, где у меня есть M различных наблюдаемых переменных (Yti) и одна скрытая переменная (Xt) в каждый момент времени t. Для ясности предположим, что все наблюдаемые переменные (Yti) категоричны, где каждый Yti передает различную информацию и как таковая может иметь разные мощности. Иллюстративный пример приведен на рисунке ниже, где M = 3.

enter image description here

Моя цель - обучить переход, эмиссию и предыдущие вероятности HMM, используя алгоритм Баума-Уэлша, из моих наблюдаемых переменных последовательностей (Yti). Пусть, скажем, Xt изначально будет иметь 2 скрытых состояния.

Я прочитал несколько руководств (включая знаменитую бумагу Рабинера) и просмотрел коды нескольких пакетов программного обеспечения HMM, а именно " HMM Toolbox в MatLab" и " пакет hmmpytk в Python. В целом, я сделал обширный веб-поиск, и все ресурсы, которые я мог найти, охватывают только случай, когда в каждый момент времени имеется только одна наблюдаемая переменная (M = 1). Это все больше заставляет меня думать, что HMM не подходят для ситуаций с несколькими наблюдаемыми переменными.

  • Можно ли моделировать проблему, изображенную на рисунке, как HMM?
  • Если это так, то как можно модифицировать алгоритм Баума-Уэлша для обучения по параметрам HMM на основе вероятностей множественного наблюдения (излучения)?
  • Если нет, знаете ли вы о методологии, которая более подходит для ситуации, изображенной на рисунке?

Спасибо.

Edit: В этой статье ситуация, изображенная на рисунке, описывается как Dynamic Naive Bayes, которая в терминах алгоритмов обучения и оценки требует небольшое расширение к алгоритмам Баума-Уэлша и Витерби для одномоментного HMM.

4b9b3361

Ответ 1

Самый простой способ сделать так, чтобы модель оставалась генеративной, - сделать y_is условно независимым с учетом x_is. Это приводит к тривиальным оценкам и относительно небольшому количеству параметров, но в некоторых случаях является довольно ограничительным предположением (в основном это HMM-форма классификатора Наивного Байеса).

РЕДАКТИРОВАТЬ: что это значит. Для каждого временного шага я у вас есть многомерное наблюдение y_i = {y_i1...y_in}. Вы рассматриваете y_ij как условно независимое заданное x_i, так что:

p(y_i|x_i) = \prod_j p(y_ij | x_i)

Затем вы эффективно изучаете наивный байесовский классификатор для каждого возможного значения скрытой переменной x. (Здесь важны условно независимые: есть зависимости в безусловном распределении ys). Это можно узнать с помощью стандартного EM для HMM.

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

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

Ответ 2

Я обнаружил, что это может быть достигнуто путем моделирования системы как Dynamic Naive Bayes classifier (DNB), который является небольшим расширением обычной (однопеременной) HMM, которая может обслуживать мульти сценарии наблюдения, как показано на рисунке.

Следует помнить, что DNB по-прежнему имеет скрытое состояние и поэтому не следует рассматривать как прямое последовательное расширение исходного классификатора Naive Bayes. "Наивный" в названии алгоритма исходит из того, что все наблюдаемые переменные независимы друг от друга, учитывая переменную скрытого состояния.

Подобно HMM, оценки параметров этой модели могут быть достигнуты с помощью алгоритма Baum Welch (или EM, какой бы вы предпочитаете его назвать). Поскольку распределение излучения на каждом временном шаге является теперь произведением P (Yti | Xt) каждой наблюдаемой переменной Yti, необходимо слегка модифицировать уравнения прямой, обратной и совместной переменных, как описано в разделе 3 этого бумага от Aviles-Arriaga и др.

Ответ 4

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

Matlab предоставляет тензорную панель инструментов.

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

Ответ 5

Вы можете попробовать скрытую полумарковскую модель, которая является расширением hmm. Он позволяет каждому состоянию в течение нескольких периодов времени.