隐马尔科夫链

3.1 隐马尔科夫链的概念

定义 如果随机过程 {(Xn,Sn),n>0} 满足以下条件, 则称为 隐马尔科夫链,

  1. 状态序列 {Xn,n>0} 是马尔科夫链并且不可观测, 状态空间为 S.

  2. 信号序列 {Sn,n>0} (非马尔科夫链) 是可观测的, 信号空间为 S.

  3. 进入状态 j 时以概率 p(s∣j) 发出信号 s, 其中 ∀j∈S:∑s∈Sp(s∣j)=1.

  4. 给定状态 j 时, p(s∣j) 独立于先前的状态与信号.

问题 0 已知信号序列, 计算状态的概率.

Fn(j):=P{Sn=sn,Xn=j}={pjp(s1∣j),n=1,p(sn∣j)∑iFn−1(i)Pij,n>1.

 

3.2 问题 1:计算产生信号序列的概率

问题 1 计算产生信号序列的概率.

思路 1.1 遍历算法

P{Sn=sn}=∑i1,⋯,inp(s1∣i1)⋯p(sn∣in)pi1Pi1i2⋯Pin−1in.

备注 计算量大, 约 2nNn 次.

思路 1.2 向前递推

P{Sn=sn}=∑iFn(i).

备注 计算量较小, 约 nN 次.

思路 1.3 向后递推(略)

Bk(i):=P{Sk+1=sk+1,⋯,Sn=sn∣Xk=i}={∑jPijp(sn∣j),k=n−1,∑jPij⋅p(sk+1∣j)⋅Bk+1(j),k<n−1.

于是有 P{Sn=sn}=∑ipip(s1∣i)B1(i).

思路 1.4 前后递推; Forward-Backward 算法(略)

P{Sn=sn}=∑jFk(j)Bk(j)

 

3.3 问题 2:由信号序列预测状态序列

问题 2 已知信号序列, 预测前 n 个状态.

思路 2.1 预测单个状态, 使得到该状态的概率最大.(略)

P{Xk=j∣Sn=sn}=P{Sn=sn,Xk=j}P{Sn=sn}=Fk(j)Bk(j)∑jFk(j)Bk(j).

于是 j^=argmaxjFk(j)Bk(j).

备注 这样可以使预测对的状态数的期望最大, 但是得到的未必是最可能状态序列.

思路 2.2 预测状态序列, 使得到整个轨迹的概率最大.

思路 2.2.1 遍历算法

P{Xn=(i1,⋯,in)∣Sn=sn}=P{Xn=(i1,⋯,iN),Sn=sn}P{Sn=sn}

于是 (i1,⋯,in)=argmaxi1,⋯,inP{Xn=(i1,⋯,in)∣Sn=sn}.

备注 这样可以得到最可能状态序列, 但是计算量大.

思路 2.2.2 Viterbi 算法

Vk(j):=maxi1,⋯ik−1P{Xk−1=(i1,⋯,ik−1),Xk=j,Sk=sk}={pjp(s1∣j),k=1,p(sk∣j)maxiPijVk−1(i),1<k≤n.

欲求最可能的状态序列, 先对每个 j 确定 V1(j), 再依次确定 Vn(j).

之后令 in=argmaxiVn(i), 再依次令 ik=argmaxiPi,ik+1Vk(i).