八、HMM的三个问题 - 预测问题
问题: 在观测序列已知的情况下,状态序列未知。想找到一个最有可能产生当前观测序列的状态序列。
可以用下面两种办法来求解这个问题:
1、近似算法
2、Viterbi算法
近似算法
直接在每个时刻t时候最优可能的状态作为最终的预测状态,使用下列公式计算概率值:
即发生观测值给定,超参λ给定的情况下: Q、λ;
状态发生的概率 P(it = Si | Q、λ) ;
γt = P(it = Si | Q、λ) ;
这是一个相对近似的算法。
Viterbi算法
Viterbi算法实际是用动态规划的思路求解HMM预测问题,求出概率最大的“路径”,每条“路径”对应一个状态序列。
δPt(i) 表示 it = i号状态的时候,找到(i1 ~ it-1 , qt ~ qt-1)的联合概率的最大值。
δP1(i) = πibiq1 表示i个状态下,观测到对应的状态q1的概率。
δP2(i) = δP1(j) aji biq2
表示: 在第1个时刻节点下,位于第j号状态最有可能的值,乘以,j到i转化的概率,乘以,在i号状态下观测到q2的概率;
就好比我们可以从1→1,2→1,3→1,1<=j<=n 就是分别判断这3种情况中的最大值,即:
计算δP1(j) aji biq2 的最大值,找到最大值时的j,就是最有可能出现观测值的状态j;
下面看个例子来深入理解这个公式。
HMM案例-Viterbi
在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”,求出最优的隐藏状态序列。