Яка різниця між алгоритмами вперед-назад та Вітербі?


44

Хочу знати, чим відрізняються алгоритм вперед-назад і алгоритм Вітербі для висновку в прихованих марківських моделях (HMM).


2
Чи опис алгоритмів ( тут і тут ) відповість на ваше запитання чи ви шукаєте щось інше? Вам цікаво, коли використовувати який алгоритм? Шукаєте обговорення їх відповідних достоїнств?
MånsT

Відповіді:


65

Спочатку трішки фону, можливо, це трохи розмиває справи.

Якщо говорити про HMM (Hidden Markov Models), зазвичай, слід враховувати 3 проблеми:

  1. Проблема оцінювання

    • Проблема оцінювання відповідає на питання: яка ймовірність того, що певна послідовність символів виробляється за певною моделлю?
    • Для оцінки використовуємо два алгоритми: алгоритм вперед або алгоритм назад (НЕ плутайте їх з алгоритмом вперед-назад).
  2. Проблема розшифровки

    • Проблема розшифровки відповідає на запитання: Дано послідовність символів (ваші спостереження) та модель, яка найвірогідніша послідовність станів, які створили послідовність.
    • Для розшифровки використовуємо алгоритм Вітербі .
  3. Проблема навчання

    • Проблема з навчанням відповідає на питання: З огляду на структуру моделі та набір послідовностей, знайдіть модель, яка найкраще відповідає даним.
    • Для цієї проблеми ми можемо використовувати наступні 3 алгоритми:
      1. MLE (максимальна оцінка ймовірності)
      2. Тренінг з вітербі (НЕ плутати з розшифровкою Вітербі)
      3. Баум Уелч = алгоритм вперед-назад

Підсумовуючи це, ви використовуєте алгоритм Вітербі для проблеми декодування та Баум Уелч / Вперед-назад, коли ви тренуєте свою модель на наборі послідовностей.


Баум Уелч працює таким чином.

Для кожної послідовності в навчальному наборі послідовностей.

  1. Обчисліть вірогідні ймовірності за допомогою алгоритму вперед
  2. Обчисліть ймовірності зворотного зв'язку за допомогою алгоритму зворотного руху
  3. Обчисліть внески поточної послідовності в переходи моделі, обчисліть внески поточної послідовності у ймовірності випромінювання моделі.
  4. Обчисліть нові параметри моделі (ймовірності початку, перехідні ймовірності, ймовірності випромінювання)
  5. Обчисліть ймовірність нового журналу моделі
  6. Зупиняється, коли вірогідність зміни журналу менша за заданий поріг або коли передано максимальну кількість ітерацій.

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


24

Вперед-назад відбувається гранична ймовірність для кожного окремого стану , Вітербі дає ймовірність найбільш ймовірної послідовності станів . Наприклад, якщо ваше завдання HMM - передбачити сонячну проти дощової погоди на кожен день, Forward Backward скаже вам ймовірність того, що вона буде "сонячною" на кожен день, Вітербі дасть найбільш ймовірну послідовність сонячних / дощових днів і ймовірність цієї послідовності.


15

Ці два наступні слайди з {2} я вважаю дуже гарними для розташування алгоритмів вперед-назад та алгоритму Вітербі серед усіх інших типових алгоритмів, які використовуються з HMM:

введіть тут опис зображення

введіть тут опис зображення

Примітки:

  • xπ
  • шлях = послідовність викидів
  • декодування = умовивід
  • навчання = навчання = оцінка параметрів
  • Деякі статті (наприклад, {1}) стверджують, що Баум – Уелч - це той же самий алгоритм вперед-назад, але я погоджуюсь з Masterfool та Wikipedia: Baum – Welch - алгоритм максимального очікування, який використовує алгоритм вперед-назад. Дві ілюстрації також відрізняють Баума – Вельча від алгоритму «вперед-назад».

Список літератури:


12

Відповідь Мората є помилковою в одному пункті: Баум-Велч - алгоритм очікування-максимізації, який використовується для тренування параметрів HMM. Він використовує алгоритм вперед-назад під час кожної ітерації. Алгоритм вперед-назад дійсно є лише комбінацією алгоритмів вперед та назад: один прохід вперед, один прохід назад. Сам по собі алгоритм вперед-назад використовується не для підготовки параметрів HMM, а лише для згладжування: обчислення граничної ймовірності послідовності станів.

https://en.wikipedia.org/wiki/Forward%E2%80%93backward_algorithm

https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm


2

@Ярослав Булатов мав точну відповідь. Я додав би один приклад цього, щоб розповісти про відмінності між алгоритмами вперед-назад та Вітербі.

Припустимо, у нас є цей HMM (зі сторінки HMM у Вікіпедії). Зауважте, модель вже задана, тому тут немає навчання з даних даних.

введіть тут опис зображення


Припустимо, наші дані - це послідовність довжиною 4. (Walk, Shop, Walk, Clean). Два алгоритми дадуть різні речі.

  • 1

введіть тут опис зображення

  • 24=16SunnyRainy

введіть тут опис зображення


Ось 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))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.