【机器学习】隐马尔可夫模型及其三个基本问题(二)观测序列概率计算算法及python实现
隐马尔可夫(HMM)模型的第一个基本问题是评估观测序列概率:
给定模型 λ = [ A , B , ∏ ] \lambda = \left[ {A,B,\prod } \right] λ=[A,B,∏]和观测序列 X = { x 1 , x 2 , ⋯   , x n } X = \left\{ { {x_1},{x_2}, \cdots ,{x_n}} \right\} X={ x1,x2,⋯,xn},计算模型 λ \lambda λ下观测序列 X X X出现的概率 P ( X ∣ λ ) P\left( {X\left| \lambda \right.} \right) P(X∣λ)。
一、前向算法
1、前向概率:给定隐马尔可夫模型 λ \lambda λ,到时刻 t t t为止,观测序列为 { x 1 , x 2 , ⋯   , x t } \left\{ {
{x_1},{x_2}, \cdots ,{x_t}} \right\} {
x1,x2,⋯,xt},且时刻 t t t的隐藏状态 y t = q i y_t=q_i yt=qi的概率为前向概率,记为:
α t ( i ) = P ( x 1 , x 2 , ⋯   , x t , y t = q i ∣ λ ) {\alpha _t}\left( i \right) = P\left( {
{x_1},{x_2}, \cdots ,{x_t},{y_t} = {q_i}\left| \lambda \right.} \right) αt(i)=P(x1,x2,⋯,xt,yt=qi∣λ)
2、前向算法是一个递推过程,具体步骤如下:
输入:隐马尔可夫模型 λ \lambda λ,观测序列 X X X。
输出:观测序列概率 P ( X ∣ λ ) P\left( {X\left| \lambda \right.} \right) P(X∣λ)。
(1)初始化: α 1 ( i ) = π i b i ( x 1 ) {\alpha _1}(i) = {\pi _i}{b_i}({x_1}) α1(i)=πibi(x1), i = 1 , 2 , ⋯   , N i = 1,2, \cdots ,N i=1,2,⋯,N
(2)递推: t t t f r o m from from 1 1 1 t o to to n − 1 n-1 n−1
α t + 1 ( i ) = [ ∑ j = 1 N α t