Hmm 模型(hidden markov model)(前向后向算法)

 

HMM的问题一是:已知HMM模型的参数$\lambda = (A, B, \Pi)$。其中𝐴是隐藏状态转移概率的矩阵,𝐵是观测状态生成概率的矩阵, $\Pi$是隐藏状态的初始概率分布。同时我们也已经得到了观测序列$O ={o_1,o_2,…o_T}$。 现在我们要求观测序列𝑂在模型λ下出现的条件概率𝑃(𝑂|𝜆)。

暴力求解

根据HMM的第二个假设,我们知道观测序列肯定是与$I$相关的, 我们需要在原始公式$𝑃(𝑂|𝜆)$中加入变量$I$,根据联合概率公式

其中

根据HMM的第一个假设其中 $p(i_T|i_{T-1},i_{T-2},…i_1|\lambda) = p(i_T|i_{t-1})$, 因此

同理,使用HMM的第二个假设可得:

因此:

观察到我们序列的长度为T,每个时间点取值的可能性为N,因此直接穷举的话时间复杂度为$O(N^T)$。

前向算法

前向算法本质上属于动态规划的算法,也就是我们要通过找到局部状态递推的公式,这样一步步的从子问题的最优解拓展到整个问题的最优解。

在前向算法中,通过定义”前向概率“来定义动态规划的这个局部转改。什么是前向概率呢,其实定义很简单:定义时刻t时刻的隐藏状态为$q_c$,观测状态的序列为$o_1,o_2,…o_t$ 的概率为前向概率,记为:

既然是动态规划,我们就要递推了,现在我们假设我们已经找到了在时刻𝑡t时各个隐藏状态的前向概率,现在我们需要递推出时刻t+1时各个隐藏状态的前向概率。其中:

现在开始找$a_{t+1}$和 $a_t$的关系。

根据HMM的假设:

因此$a_{t+1}$ 和 $a_t$ 的递推关系可以表示为:

我们的动态规划从时刻1开始,到时刻𝑇结束,由于$a_T(i)$表示在时刻𝑇T观测序列为$o_1,o_2,…o_T$,并且时刻𝑇T隐藏状态$q_i$的概率,我们只要将所有隐藏状态对应的概率相加,即$\sum\limits_{i=1}^N\alpha_T(i)$就得到了在时刻𝑇T观测序列为$o_1,o_2,…o_T$的概率。

后向算法

后向算法和前向算法非常类似,都是用的动态规划,唯一的区别是选择的局部状态不同,后向算法用的是“后向概率”,定义时刻t时隐藏状态为$ q_c $, 从时刻t+1到最后时刻𝑇的观测状态的序列为$o_{t+1},o_{t+2},…o_T$的概率为后向概率。记为:

后向概率的动态规划递推公式和前向概率是相反的。现在我们假设我们已经找到了在时刻t+1时各个隐藏状态的后向概率$\beta_{t+1}(j)$

现在开始找$\beta_t$ 和$\beta_{t+1}$ 的关系:

找到递推关系式后, 我们看$P(O|\lambda)$ 与 $\beta$ 的关系

1.https://www.cnblogs.com/pinard/p/6955871.html (刘建平的微博)

2.https://www.bilibili.com/video/av32471608?p=6 (白板机器学习推导)