Алгоритм Баума — Велша используется в информатике и статистике для нахождения неизвестных параметров скрытой марковской модели (HMM). Он использует алгоритм прямого-обратного хода и является частным случаем обобщённого EM-алгоритма.
Алгоритм Баума — Велша оценки скрытой модели Маркова
Скрытая модель Маркова — это вероятностная модель множества случайных переменных
. Переменные
— известные дискретные наблюдения, а
— «скрытые» дискретные величины. В рамках скрытой модели Маркова есть два независимых утверждения, обеспечивающих сходимость данного алгоритма:
-
-я скрытая переменная при известной
-ой переменной независима от всех предыдущих
переменных, то есть
;
-
-е известное наблюдение зависит только от
-го состояния, то есть не зависит от времени,
.
Далее будет предложен алгоритм «предположений и максимизаций» для поиска максимальной вероятностной оценки параметров скрытой модели Маркова при заданном наборе наблюдений. Этот алгоритм также известен как алгоритм Баума — Велша.
— это дискретная случайная переменная, принимающая одно из
значений
. Будем полагать, что данная модель Маркова, определённая как
, однородна по времени, то есть независима от
. Тогда можно задать
как независящую от времени стохастическую матрицу перемещений
. Вероятности состояний в момент времени
определяется начальным распределением
.
Будем считать, что мы в состоянии
в момент времени
, если
. Последовательность состояний выражается как
, где
является состоянием в момент
.
Наблюдение
в момент времени
может иметь одно из
возможных значений,
. Вероятность заданного вектора наблюдений в момент времени
для состояния
определяется как
(
— это матрица
на
). Последовательность наблюдений
выражается как
.
Следовательно, мы можем описать скрытую модель Маркова с помощью
. При заданном векторе наблюдений
алгоритм Баума — Велша находит
.
максимизирует вероятность наблюдений
.
Алгоритм
Исходные данные:
со случайными начальными условиями.
Алгоритм итеративно обновляет параметр
до схождения в одной точке.
Прямая процедура
Определим
, что является вероятностью получения заданной последовательности
для состояния
в момент времени
.
можно вычислить рекурсивно:
![{\displaystyle \alpha _{i}(1)=\pi _{i}\cdot b_{i}(y_{1});}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d67de25bf8cc692c6f0ed17c34150a6d2669e0ee)
![{\displaystyle \alpha _{j}(t+1)=b_{j}(y_{t+1})\sum _{i=1}^{N}{\alpha _{i}(t)\cdot a_{ij}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b6e6d3d58998ac327f19220364a719b888e6c3f9)
Обратная процедура
Данная процедура позволяет вычислить
вероятность конечной заданной последовательности
при условии, что мы начали из исходного состояния
, в момент времени
.
Можно вычислить
:
![{\displaystyle \beta _{i}(T)=p(Y_{T}=y_{T}\mid Q_{t}=i,\lambda )=1;}](https://wikimedia.org/api/rest_v1/media/math/render/svg/76cd105ad421359df7281028e25063dcd834e064)
![{\displaystyle \beta _{i}(t)=\sum _{j=1}^{N}{\beta _{j}(t+1)a_{ij}b_{j}(y_{t+1})}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/963b7ba2aff88eff9e5d03db71a8b1c361171f0f)
Используя
и
можно вычислить следующие значения:
![{\displaystyle \gamma _{i}(t)\equiv p(Q_{t}=i\mid y,\;\lambda )={\frac {\alpha _{i}(t)\beta _{i}(t)}{\displaystyle \sum _{j=1}^{N}\alpha _{j}(t)\beta _{j}(t)}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f21a70cc367204b618f89a42fc50e672c2e87e73)
![{\displaystyle \xi _{ij}(t)\equiv p(Q_{t}=i,\;Q_{t+1}=j\mid y,\;\lambda )={\frac {\alpha _{i}(t)a_{ij}\beta _{j}(t+1)b_{j}(y_{t+1})}{\displaystyle \sum _{i=1}^{N}\displaystyle \sum _{j=1}^{N}\alpha _{i}(t)a_{ij}\beta _{j}(t+1)b_{j}(y_{t+1})}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6fba1e43d5ef0ccc969879777b0af9e04e105c6a)
Имея
и
, можно вычислить новые значения параметров модели:
![{\displaystyle {\bar {\pi }}_{i}=\gamma _{i}(1),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/70241608ff045120eeedcc45fdfd460362809f9f)
![{\displaystyle {\bar {a}}_{ij}={\frac {\displaystyle \sum _{t=1}^{T-1}\xi _{ij}(t)}{\displaystyle \sum _{t=1}^{T-1}\gamma _{i}(t)}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b64bfa5f81202209b6afff34cc101f1254d9fb9f)
-
,
где
![{\displaystyle \delta _{y_{t},\;o_{k}}={\begin{cases}1&{\text{если }}y_{t}=o_{k},\\0&{\text{иначе}}\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/285c9d69aaf64d664463436924a9eb95bb341e08)
индикативная функция, и
ожидаемое количество значений наблюдаемой величины, равных
в состоянии
к общему количеству состояний
.
Используя новые значения
,
и
, итерации продолжаются до схождения.
Источники