0.前排提示
csdn有些数学公式编辑不出来,所以本博用容易书写的表达式来表示专业数学公式,如:
(1) 在本博客中用α<T>(i)来表示
(2)在本博客中用[i=1, N]∑来表示
注:这是为了表示一些无法编辑出来的数学公式而本博自己想出来的表示方法,不是专业使用,在离开此博客时请忘记他们~~
1.隐马尔可夫模型简介
隐马尔可夫模型的详细讲解,请详见:【机器学习】【隐马尔可夫模型-1】基本概念+观测序列的生成算法+示例讲解
2.前向算法简介
2.1前向算法的需求背景
首先简要介绍下前向算法的需求背景。
隐马尔可夫模型有3个问题:概率计算问题,学习问题,预测问题。前向算法就是为了解决概率计算问题的。
概率计算问题描述如下:
已知一个隐马尔可夫模型λ=(A,B,λ),已知一个观测序列O=(o1, o2,……,oT)
问题:请计算在模型λ下观测序列O出现的概率P(O|λ)
HMM的这个概率计算问题有前向算法和后向算法,本博客介绍前向算法,后向算法在后面博客介绍。
到此前向算法的需求背景讲解完了,下面开始详解前向算法。
2.2前向概率
已知隐马尔可夫模型λ=(A, B, π),定义到时刻t(t<T),观测序列为o1, o2, ……,ot,状态为qi的概率为前向概率,记作:
用博主自己定义的书写表达式就是:
α<t>(i) = P(o<1>,o<2>,……,o<t>,i<t> = q<i> | λ)
看似比较难理解,举个例子:
在时刻t=2,我们得到观测序列(红, 白),且状态为盒1的概率,就是一个前向概率,记作:
在时刻t=2,观测序列为(红,白),状态为盒2的概率,就是一个前向概率,记作:
2.3观测序列概率的前向算法
可以递推得前向概率以及观测序列概率P(O|λ)
输入:隐马尔卡夫模型λ=(A, B, π),观测序列O
输出:观测序列概率P(O | λ)
核心是通过模型λ=(A, B, π)以及α<t>(i)来递推得到后一个前向概率α<t+1>(i).直到递推得到α<T>(i)
上面前向算法的步骤比较容易理解,如果看不懂,可以借助下面的示例来理解就变得很容易啦。
话不多说,直接上例子。
3.观测序列概率的前向算法示例
3.1模型λ
从前面介绍的内容可知,模型λ由三个对象确定表示:λ=(A, B, π)=(状态转移概率分布,观测概率分布,初始状态概率分布)
考虑盒子和球模型λ=(A, B, π),此模型相关信息我们假设给定为:
1)状态集合Q={盒子1, 盒子2, 盒子3},N=3
2)观测集合V={红,白},M=2
3)状态转移概率分布 A = [0.5,0.2,0.3