Алгоритм Баума-Велша — различия между версиями
(→Пример) |
|||
Строка 58: | Строка 58: | ||
== Пример == | == Пример == | ||
+ | Предположим, у нас есть курица, с которой мы собираем яйца. Куриные ли яйца отложены для сбора зависит от некоторых неизвестных факторов. Для простоты предположим, что существуют лишь два состояния, которые определяют куриные ли это яйца. В начальный момент нам неизвестно текущее состояние, также нам неизвестна вероятность перехода из одного состояния в другое. Для начала возьмем произвольные матрицы переходов и состояний. | ||
+ | |||
+ | <center> | ||
+ | {| border="0" style="background:transparent;" | ||
+ | |- | ||
+ | | | ||
+ | {| class="wikitable" | ||
+ | |+Переходы | ||
+ | |- | ||
+ | ! !! Состояние 1 !! Состояние 2 | ||
+ | |- | ||
+ | ! Состояние 1 | ||
+ | |0.5 || 0.5 | ||
+ | |- | ||
+ | ! Состояние 2 | ||
+ | |0.3 || 0.7 | ||
+ | |} | ||
+ | || | ||
+ | {| class="wikitable" | ||
+ | |+ Состояния | ||
+ | |- | ||
+ | ! !! Яйца не отложены !! Яйца отложены | ||
+ | |- | ||
+ | ! Состояние 1 | ||
+ | |0.3 || 0.7 | ||
+ | |- | ||
+ | ! Состояние 2 | ||
+ | |0.8 || 0.2 | ||
+ | |} | ||
+ | || | ||
+ | {| class="wikitable" | ||
+ | |+ Начальное состояние | ||
+ | |- | ||
+ | ! Состояние 1 | ||
+ | |0.2 | ||
+ | |- | ||
+ | ! Состояние 2 | ||
+ | |0.8 | ||
+ | |} | ||
+ | |} | ||
+ | </center><br /> | ||
+ | |||
+ | Рассмотрим набор наблюдений (E - яйца отложены, N - яйца не отложены): NN, NN, NN, NN, NE, EE, EN, NN, NN. | ||
+ | |||
+ | Следующим шагом оценим новую матрицу переходов: | ||
+ | |||
+ | <center> | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Последовательность !! Вероятность последовательности и состояний S1 и S2 !! Наибольшая вероятность наблюдения | ||
+ | |- | ||
+ | | NN || 0.024 || 0.3584 S2,S2 | ||
+ | |- | ||
+ | | NN || 0.024 || 0.3584 S2,S2 | ||
+ | |- | ||
+ | | NN || 0.024 || 0.3584 S2,S2 | ||
+ | |- | ||
+ | | NN || 0.024 || 0.3584 S2,S2 | ||
+ | |- | ||
+ | | NE || 0.006 || 0.1344 S2,S1 | ||
+ | |- | ||
+ | | EE || 0.014 || 0.0490 S1,S1 | ||
+ | |- | ||
+ | | EN || 0.056 || 0.0896 S2,S2 | ||
+ | |- | ||
+ | | NN || 0.024 || 0.3584 S2,S2 | ||
+ | |- | ||
+ | | NN || 0.024 || 0.3584 S2,S2 | ||
+ | |- | ||
+ | ! Итого | ||
+ | | 0.22 || 2.4234 | ||
+ | |} | ||
+ | </center><br /> | ||
+ | |||
== Псевдокод == | == Псевдокод == | ||
== Применение == | == Применение == |
Версия 22:23, 21 декабря 2014
Алгоритм Баума-Велша — алгоритм для нахождения неизвестных параметров скрытой Марковской модели. Использует алгоритм прямого-обратного хода.
Содержание
История
Скрытые_Марковские_модели(HMMs) и алгоритм Баума-Велша впервые были описаны в заметках Леонарда Баума и его сверстников в конце 1960х. Одно из первых основных приложений на основе HMMs было использовано в области обработки речи. В 1980х HMMs стало эффективным инструментом в анализе биологических систем и информации, особенно в генном анализе.
Описание алгоритма
Пусть
- это дискретная случайная переменная, принимающая одно из значений . Будем полагать, что данная модель Маркова, определенная как однородна по времени, то есть независима от . Тогда можно задать как независящую от времени стохастическую матрицу перемещений . Особый случай для времени определяется начальным распределением .Будем считать, что мы в состоянии
в момент времени , если . Последовательность заданных состояний определяется как , где является состоянием в момент времени .Наблюдение может иметь одно из
возможных значений, . Вероятность заданного вектора наблюдений в момент времени для состояния определяется как - это матрица на . Заданная последовательность наблюдений выражается как .Следовательно, мы можем описать скрытую модель Маркова с помощью
. При заданном векторе наблюдений алгоритм Баума-Велша находит . максимизирует вероятность наблюдений .
Исходные данные:
со случайными начальными условиями. Алгоритм итеративно обновляет параметр до схождения в одной точке.
Прямая процедура
, что является вероятностью получения заданной последовательности для состояния в момент времени .
можно вычислить рекурсивно:
1.
;2.
.Обратная процедура
Данная процедура позволяет вычислить вероятность конечной заданной последовательности
при условии, что мы начали из исходного состояния , в момент времени .можно вычислить рекурсивно:
1.
;2.
.Обновление переменных
Определим временные переменные:
.
Имея
и , можно определить:,
,
.
Используя новые переменные
итерации продолжаются до схождения.Пример
Предположим, у нас есть курица, с которой мы собираем яйца. Куриные ли яйца отложены для сбора зависит от некоторых неизвестных факторов. Для простоты предположим, что существуют лишь два состояния, которые определяют куриные ли это яйца. В начальный момент нам неизвестно текущее состояние, также нам неизвестна вероятность перехода из одного состояния в другое. Для начала возьмем произвольные матрицы переходов и состояний.
|
|
|
Рассмотрим набор наблюдений (E - яйца отложены, N - яйца не отложены): NN, NN, NN, NN, NE, EE, EN, NN, NN.
Следующим шагом оценим новую матрицу переходов:
Последовательность | Вероятность последовательности и состояний S1 и S2 | Наибольшая вероятность наблюдения |
---|---|---|
NN | 0.024 | 0.3584 S2,S2 |
NN | 0.024 | 0.3584 S2,S2 |
NN | 0.024 | 0.3584 S2,S2 |
NN | 0.024 | 0.3584 S2,S2 |
NE | 0.006 | 0.1344 S2,S1 |
EE | 0.014 | 0.0490 S1,S1 |
EN | 0.056 | 0.0896 S2,S2 |
NN | 0.024 | 0.3584 S2,S2 |
NN | 0.024 | 0.3584 S2,S2 |
Итого | 0.22 | 2.4234 |
Псевдокод
Применение
Источники
1. https://ru.wikipedia.org/wiki/Алгоритм_Баума_-_Велша
2. http://logic.pdmi.ras.ru/~sergey/teaching/asr/notes-09-hmm.pdf
3. http://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm