02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题相关的知识,希望对你有一定的参考价值。
参考技术A01 隐马尔可夫模型 - 马尔可夫链、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;
在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少?
这个时候,我们不知道隐含条件,即不知道状态值:①→③→②→②→③ ;
我们如何根据π、A、B求出测序列为“白黑白白黑”的概率?
下面给出解决方案。
前向-后向算法 给定模型λ=(A,B,π)和观测序列Q=q1,q2,...,qT,计算模型λ下观测到序列Q出现的概率P(Q|λ);
回顾上面的案例 ,λ=(A,B,π)已知。观测到序列 Q=白→黑→白→白→黑,但我们不知道 状态序列 I=①→③→②→②→③;我们要求解 P(Q|λ) ,即Q=白→黑→白→白→黑 这个观测序列发生的概率。 可以用前向-后向算法来实现 。
Baum-Welch算法(状态未知) 已知观测序列Q=q1,q2,...,qT,估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(Q|λ)最大。
Baum-Welch算法是EM算法的一个特例,专门用来 求解 隐马尔科夫中隐状态参数 λ=(A,B,π) 。即:根据已知的 观测到序列 Q=白→黑→白→白→黑,去寻找整个模型的一组隐状态参数λ=(A,B,π),使得在模型中 观测序列 发生的可能性P(Q|λ)最大。
Viterbi算法 给定模型λ=(A,B,π)和观测序列Q=q1,q2,...,qT,求给定观测序列条件概率P(I|Q,λ)最大的状态序列I。
已知 观测到序列 Q=白→黑→白→白→黑,当我们得到λ=(A,B,π)后,我们用 Viterbi算法 求出在哪一种 状态序列 发生的可能性最大,即,求出 状态序列 I=①→③→②→②→③;即,抽取什么样的盒子顺序,更可能得到白→黑→白→白→黑这种结果。
1、直接计算法(暴力算法)
2、前向算法
3、后向算法
类似KNN计算最近邻时候的算法。《 01 KNN算法 - 概述 》
也就是说, 暴力算法 需要一个个遍历所有的状态去计算当前状态发生的概率。
按照概率公式,列举所有可能的长度为T的状态序列I=i1,i2,...,iT,求各个状态序列I与观测序列Q=q1,q2,...,qT的联合概率P(Q,I;λ),然后对所有可能的状态序列求和,从而得到最终的概率P(Q;λ);
分析: 先思考这样一个问题:生成“白-黑-白-白-黑”这样的结果,是不是会有很多种盒子组合的序列来抽取,都会生成这样一个结果?我把这些可能出现“白-黑-白-白-黑”结果的盒子序列的联合概率求出来-P(Q,I;λ),即∑P(Q,I) = P(Q) ,P(Q) 是我们观测到“白-黑-白-白-黑”结果时,符合这个结果的所有状态序列I出现的概率。
公式运用:
设状态序列 I=③→②→①→①→②; T=5;
P(I;λ) = π 3 a 32 a 21 a 11 a 12
因为: 在给定状态序列I后,Q中的每个观测值都独立。(贝叶斯网络原理) 贝叶斯网络
所以: P(Q|I;λ)可以用联乘的方式表示 (独立可以使用联合概率)
I = ③→②→①→①→②
Q=白→黑→白→白→黑
P(Q|I;λ) = b 3白 b 2黑 b 1白 b 1白 b 2黑
P(Q,I;λ) = P(Q|I;λ) × P(I;λ)
= b 3白 b 2黑 b 1白 b 1白 b 2黑 × π 3 a 32 a 21 a 11 a 12
若:
I 1 = ③→②→①→①→②
I 2 = ①→②→③→①→②
...
I T = ②→②→①→③→②
都能得出:
Q = 白→黑→白→白→黑
因为我所有的盒子都能取出黑球和白球,所以T的值=3 5 ;
∑P(Q,I;λ) 计算的是 I 1 ~ I T 这些状态序列情况下,求出的P(Q,I;λ)的和。
前向 和 后向 算法是运用某种递归(递推)的方式,帮助我们尽快得求解最终结果。
解析: 如果 t 这一时刻观察到的状态是 q t = 雨天;其中y=干,湿,湿... 湿共t个状态。
先不考虑λ。
α t 是 1时刻~t时刻 所有观测值y1,y2,...yt ,qt 出现的联合概率。
β t 是 t+1时刻~T时刻 所有观测值y t+1 ,y t+2 ,...y T 出现的联合概率。
前向概率-后向概率 指的其实是在一个观测序列中,时刻t对应的状态为si的概率值转换过来的信息。
分析2~3步的推导: 因为q 1 ~ q t 这些条件对 q t+1 ~ q T 的产生没有影响 (理由:贝叶斯网络),所以这些条件可以去掉。
定义:给定λ,定义到时刻t部分观测序列为q1,q2,...,qt且状态为si的概率为 前向概率 。
记做:
在给定参数π、A、B的时候,得到观测序列为“白黑白白黑”的概率是多少?
定义:给定λ,定义到时刻t状态为si的前提下,从t+1到T部分观测序列为qt+1,qt+2,...,qT的概率为 后向概率 。
记做:
分析上面的公式:
如果一共只有t个时间点,t+1的时刻不存在。那么t+1以后发生的是必然事件。
所以 β t (i) = P(q t+1 ,q t+2 ,...,q T ) = 1;
如果实在不理解也没关系,我们姑且认为认为定义了一个初始值,即 β T (i) = 1 ;
从T-1时刻,倒推到1时刻。
首先,β t+1 (j)是什么?是t+1时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。
β t (j)是什么?是t时刻,在状态sj的前提下,下图中圈起来这部分的联合概率。
求给定模型λ和观测序列Q的情况下,在时刻t处于状态si的概率,记做:
单个状态概率的意义主要是用于判断在每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果。
求给定模型λ和观测序列Q的情况下,在时刻t处于状态si并时刻t+1处于状态sj概率,记做:
03 隐马尔可夫模型 - HMM的三个问题 - 学习问题
以上是关于02 隐马尔可夫模型 - HMM的三个问题 - 概率计算问题的主要内容,如果未能解决你的问题,请参考以下文章