在马尔科夫模型简述的最后说到,隐马尔科夫模型用来解决三个问题:评估、解码和学习。
在隐马尔科夫模型中,前向算法是用来评估,而维特比算法则是用来解码。
评估:计算某个观察序列的概率
对于一个隐马尔可夫模型,设其隐藏状态个数为N,其观察序列数为T。
显然,对于某个观察序列,其隐藏状态序列共有N^T中可能情况,若采用穷举法求概率,其复杂度则为N^T。我们可以采用递归的方法来降低问题的复杂度,这就是前向算法。
首先,定义:在t时刻,处于状态j的概率为α_t (j),α_t (j) = P(观察序列 | q_j) * P(t时刻所有到达状态j的路径);
然后进行前向递归: