HMM数学推导—Evaluation问题
本章涉及到的知识点清单:
1、前向概率的定义
2、前向概率的递推关系推导
3、前向概率求解
4、Forward算法流程
5、后向概率的定义
6、后向概率的递推关系推导
7、后向概率求解
8、Backward算法流程
9、案例演示
10、Evaluation问题总结
一、前向概率的定义
![](https://img.haomeiwen.com/i8576381/e67710c6bedb7c10.png)
为了解决Evaluation问题的高时间复杂度,我们引入一个前向概率,如上图所示,
表示
时刻的观测
,以及
时刻的隐变量状态
,在给定参数
下的联合概率,即
![](https://img.haomeiwen.com/i8576381/dda5ec9f7ed83ed4.png)
易知:可以用
的矩阵表示
二、前向概率的递推关系推导
通过前向概率的定义,可以推导出它的递推关系
由可得到
的表达
![](https://img.haomeiwen.com/i8576381/d625d65f9ec2eea0.png)
将展开化简得:
![](https://img.haomeiwen.com/i8576381/dc751678ae0068f8.png)
(PS:由于HMM中隐变量是离散序列,故)
上述化简使用了观测独立假设和齐次Markov假设,可见和
之间存在着具体的递推关系。且根据前向概率的定义,当处于初始时刻
时,前向概率
为:
![](https://img.haomeiwen.com/i8576381/ec295b1df91bd900.png)
则利用这个递推关系和,就可以从前向后分别求出
三、前向概率求解
回归Evaluation问题,很自然的引入隐变量,经过简单的化简得:
![](https://img.haomeiwen.com/i8576381/74ba772ca48bb8d1.png)
以上就是利用前向概率的定义和递推关系,逐步向前递推,最终计算出
,即Forward算法,显然,其时间复杂度已经降低至
四、Forward算法流程
输入:模型参数
,观测序列
输出:
概率值
Step1:初始值赋值
![](https://img.haomeiwen.com/i8576381/6be6b0aff286fbe4.png)
Step2:递推计算
![](https://img.haomeiwen.com/i8576381/662812402a727c7d.png)
Step3:计算
![](https://img.haomeiwen.com/i8576381/238446754f4a82bc.png)
五、后向概率的定义
受前向概率定义的启发,我们可以从另一个角度定义出后向概率
![](https://img.haomeiwen.com/i8576381/84cdbb817ed9f5cb.png)
如上图所示,我们引入后向概率,表示
时刻的观测
,以及
时刻的隐变量状态
,在给定参数
下的联合概率,即
![](https://img.haomeiwen.com/i8576381/e33291c07e4c2dd9.png)
同理,易知可以用
的矩阵表示
六、后向概率的递推关系推导
通过后向概率的定义,可以推导出它的递推关系
由可以得到
的表达式
![](https://img.haomeiwen.com/i8576381/9f72cb9ff786142a.png)
将展开化简得:
![](https://img.haomeiwen.com/i8576381/68f0ccd040b75314.png)
上述蓝色部分的化简,利用了概率图D-Seperation中的head-to-tail,可见与
之间存在着具体的递推关系。且根据后向概率定义,当处于末尾时刻
时,后向概率
为:
![](https://img.haomeiwen.com/i8576381/bed8432787f95f0d.png)
则利用这个递推关系和,就可以从后往前分别求出
七、后向概率求解
同前向概率一样,回归Evaluation问题,很自然的引入隐变量,经过简单的化简得:
![](https://img.haomeiwen.com/i8576381/2670f20317d4cfca.png)
以上就是利用后向概率的定义和递推关系,逐步向后递推,最终计算出
,即Backward算法,显然,其时间复杂度依然已经降低至
八、Backward算法流程
输入:模型参数,观测序列
输出:
概率值
Step1:初始值赋值
![](https://img.haomeiwen.com/i8576381/0e8e962e4486daac.png)
Step2:递推计算
![](https://img.haomeiwen.com/i8576381/274174921d85ca02.png)
Step3:计算
![](https://img.haomeiwen.com/i8576381/a2b744a77f5faa93.png)
九、案例演示
最后我们使用李航老师——《统计学方法》中的例子:
例:考虑盒子和球模型
,状态集合
,观测集合
,
,
设观测序列长度
,观测序列为:
,求:
根据Forward算法理论,我们可以很方便的使用Python语言编程实现求解Evaluation问题
![](https://img.haomeiwen.com/i8576381/0d8c12304d3b8f37.png)
Forward算法计算出的
![](https://img.haomeiwen.com/i8576381/25e6f5061eb61918.png)
同理,Backward算法也很容易实现
![](https://img.haomeiwen.com/i8576381/2b0487f3419287f6.png)
Backward算法计算出的
![](https://img.haomeiwen.com/i8576381/4dd9a9a095b7ce47.png)
十、Evaluation问题总结
(1)Forward和Backward两个算法利用HMM的两个假设:齐次Markov假设和观测独立假设,可以非常有效的简化概率推导
(2)利用Forward和Backward算法可将Evaluation问题的时间复杂度由
,降低至
(3)利用前向概率和后向概率的定义,对HMM后续的Learning问题的推导有着极大的帮助
案例代码参加:HMM数学推导—Evaluation问题