Я хочу знать , что разница между вперед-назад алгоритма и алгоритма Витерби для вывода в скрытых марковских моделей (СММ) являются.
Я хочу знать , что разница между вперед-назад алгоритма и алгоритма Витерби для вывода в скрытых марковских моделей (СММ) являются.
Ответы:
Сначала немного фона, может быть, это немного прояснит ситуацию.
Говоря о HMM (скрытых марковских моделях), обычно нужно учитывать 3 проблемы:
Проблема оценки
Проблема декодирования
Проблема обучения
Подводя итог, вы используете алгоритм Витерби для задачи декодирования и Baum Welch / Forward-backward, когда тренируете свою модель на наборе последовательностей.
Баум Уэлч работает следующим образом.
Для каждой последовательности в обучающем наборе последовательностей.
Если вам нужно полное описание уравнений для декодирования Витерби и алгоритма обучения, дайте мне знать, и я могу указать вам правильное направление.
Вперед-назад дает предельную вероятность для каждого отдельного состояния , Витерби дает вероятность наиболее вероятной последовательности состояний . Например, если ваша задача HMM состоит в том, чтобы предсказать солнечную или дождливую погоду для каждого дня, Forward Backward сообщит вам вероятность того, что она будет «солнечной» для каждого дня, Viterbi даст наиболее вероятную последовательность солнечных / дождливых дней, а вероятность этой последовательности.
Я считаю, что эти два следующих слайда из {2} действительно хороши для размещения алгоритмов прямого-обратного и Витерби среди всех других типичных алгоритмов, используемых с HMM:
Заметки:
Ссылки:
Ответ Мората неверен в одном: Баум-Уэлч - это алгоритм ожидания-максимизации, используемый для обучения параметров HMM. Он использует алгоритм «вперед-назад» во время каждой итерации. Алгоритм прямого-обратного хода - это просто комбинация прямого и обратного алгоритмов: один прямой проход, один обратный проход. Сам по себе алгоритм прямого и обратного хода используется не для обучения параметров HMM, а только для сглаживания: вычисления предельных вероятностей последовательности состояний.
https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm
@ Ярослав Булатов дал точный ответ. Я хотел бы добавить один пример, чтобы показать различия между алгоритмами прямого-обратного и Витерби.
Предположим, у нас есть этот HMM (со страницы Википедии HMM). Обратите внимание, что модель уже дана, поэтому здесь нет задачи изучения данных.
Предположим, что наши данные представляют собой последовательность длиной 4. (Walk, Shop, Walk, Clean)
, Два алгоритма дадут разные вещи.
Sunny
Rainy
Вот R
код для демонстрации
library(HMM)
# in education setting,
# hidden state: Rainy and Sunny
# observation: Walk, Shop, Clean
# state transition
P <- as.matrix(rbind(c(0.7,0.3),
c(0.4,0.6)))
# emission prob
R <- as.matrix(rbind(c(0.1, 0.4, 0.5),
c(0.6,0.3, 0.1)))
hmm = initHMM(States=c("Rainy","Sunny"),
Symbols=c("Walk","Shop", "Clean"),
startProbs=c(0.6,0.4),
transProbs=P,
emissionProbs=R)
hmm
obs=c("Walk","Shop","Walk", "Clean")
print(posterior(hmm,obs))
print(viterbi(hmm, obs))