转载自简书——隐马尔可夫模型 - HMM的三个问题 - 概率计算问题,把其中的有些公式排版做了简单修改!其中的后向概率算法有点难度!
目录
一、HMM案例回顾
假设有三个盒子,编号为1,2,3;每个盒子都装有黑白两种颜色的小球,球的比例。如下:
按照下列规则的方式进行有放回的抽取小球,得到球颜色的观测序列:
1、按照π给出的初始概率选择一个盒子,从盒子中随机抽取出一个球,记录颜色后放回盒子中;
2、按照某种条件概率选择新的盒子,从盒子中随机抽取出一个球,记录颜色后放回盒子中,重复该操作;
3、最终得到观测序列:“白黑白白黑”
例如: 每次抽盒子按一定的概率来抽,也可以理解成随机抽。
第1次抽了1号盒子①,第2次抽了3号盒子③,第3次抽了2号盒子②.... ; 最终如下:
①→③→②→②→③ 状态值
白→黑→白→白→黑 观测值
1、状态集合: S={盒子1,盒子2,盒子3}
2、观测集合: O={白,黑}
3、状态序列和观测序列的长度 T=5 (我抽了5次)
4、初始概率分布: π 表示初次抽时,抽到1盒子的概率是0.2,抽到2盒子的概率是0.5,抽到3盒子的概率是0.3。
5、状态转移概率矩阵 A:a11=0.5 表示当前我抽到1盒子,下次还抽到1盒子的概率是0.5;
6、观测概率矩阵 - 混淆矩阵 - 为了不和之前的混淆矩阵概念冲突,可以称之为发射矩阵,即从一个状态发射到另一个状态: B:如最初的图,b11=第一个盒子抽到白球概率0.4,b12=第一个盒子抽到黑球概率0.6;
OK现在给出问题:在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少?
解释一下,这里我们不知道的是一个隐含条件——不知道状态值序列是什么样的:①→③→②→②→③ ——也就是不清楚每个球到底是从哪个盒子里取出来的。
二、HMM典型的3个问题
在给出解决方案之前,引入HMM典型的3个问题:
1、概率计算问题
前向-后向算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},计算模型λ下观测到序列Q出现的概率P(Q|λ);
回顾上面的案例,λ=(A,B,π)已知。观测到序列 Q=白→黑→白→白→黑,但我们不知道 状态序列 I=①→③→②→②→③;我们要求解P(Q|λ),即Q=白→黑→白→白→黑 这个观测序列发生的概率。可以用前向-后向算法来实现。
2、学习问题
Baum-Welch算法(状态未知) 已知观测序列Q={q1,q2,...,qT},估计模型λ=(A,B,π)的参数——也就是参数λ是未知的,使得在该模型下观测序列P(Q|λ)最大。
3、预测问题
Viterbi算法 给定模型λ=(A,B,π)和观测序列Q={q1,q2,...,qT},求给定观测序列条件概率P(I|Q,λ)最大的状态序列I。
已知观测到序列 Q=白→黑→白→白→黑,当我们得到λ=(A,B,π)后,我们用Viterbi算法 求出在哪一种状态序列发生的可能性最大,即,求出状态序列 I=①→③→②→②→③;即,抽取什么样的盒子顺序,更可能得到白→黑→白→白→黑这种结果。
三、概率计算问题解决方案
在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少?
1、暴力直接计算法
这里的思路就是穷举法,把所有能够得到观测序列结果的状态序列列举出来,然后计算每一种情况的可能性,最后把他们加起来,然后就得到了最终的结果。看看具体的公式:
具体的求解过程,假定状态序列是: I=③→②→①→①→②; T=5:
首先求解P(I;λ)
然后求解P(Q,I;λ)
因为:在给定状态序列I后,Q中的每个观测值都独立。(贝叶斯网络原理)贝叶斯网络
所以: P(Q|I;λ)可以用联乘的方式表示 (独立可以使用联合概率)
I = ③→②→①→①→②
Q=白→黑→白→白→黑
P(Q|I;λ) = b3白b2黑b1白b1白b2黑
P(Q,I;λ) = P(Q|I;λ) × P(I;λ)
= b3白b2黑b1白b1白b2黑 × π3a32a21a11a12
若:
I1 = ③→②→①→①→②
I2 = ①→②→③→①→②
...
IT = ②→②→①→③→②
都能得出:
Q = 白→黑→白→白→黑
因为我所有的盒子都能取出黑球和白球,所以T的值=35;
∑P(Q,I;λ) 计算的是 I1 ~ IT 这些状态序列情况下,求出的P(Q,I;λ)的和。
以上就是暴力穷举所有可能状态序列的算法的详细过程。缺陷就是这个过程中计算量是非常庞大的!
2、前向-后向算法
前向和后向算法是运用某种递归(递推)的方式,帮助我们尽快得求解最终结果。
解析: 如果 t 这一时刻观察到的状态是 qt = 雨天;其中y={干,湿,湿... 湿}共t个状态。
先不考虑λ。
αt 是1时刻~t时刻 所有观测值y1,y2,...yt ,qt 出现的联合概率——前向概率
βt 是t+1时刻~T时刻 所有观测值yt+1,yt+2,...yT出现的联合概率——后向概率
前向概率-后向概率指的其实是在一个观测序列中,时刻t对应的状态为si的概率值转换过来的信息。
分析2~3步的推导: 因为q1 ~ qt 这些条件对 qt+1 ~ qT的产生没有影响 (理由:贝叶斯网络),所以这些条件可以去掉。
2.1 前向算法:
定义:给定λ,定义到时刻t的状态为si且部分观测序列为q1,q2,...,qt的概率是前向概率。如下图公式:
注意公式中的i表示状态,T表示序列长度;关于递推结果的推导:
2.2HMM案例-前向算法
在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少?
最后把所有的概率值加起来,就是最后的答案了!
2.3 后向算法
定义:给定λ,定义到时刻t状态为si的前提下,从t+1到T部分观测序列为qt+1,qt+2,...,qT的概率为后向概率。
记做:
分析上面的公式:
如果一共只有t个时间点,t+1的时刻不存在。那么t+1以后发生的是必然事件。
所以 βt(i) = P(qt+1,qt+2,...,qT) = 1;
如果实在不理解也没关系,我们姑且认为认为定义了一个初始值,即βT(i) = 1;
然后得一步一步往前推导!从T-1时刻,倒推到1时刻。
首先,βt+1(j)是什么?是t+1时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。
βt(j)是什么?是t时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。
2.4求单个状态的概率
求给定模型λ和观测序列Q的情况下,在时刻t处于状态si的概率,记做:
单个状态概率的意义主要是用于判断在每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果。具体求解公式如下:
2.5求两个状态的联合概率:
求给定模型λ和观测序列Q的情况下,在时刻t处于状态si并时刻t+1处于状态sj概率,记做: