目录
隐马尔可夫模型
Viterbi算法
马尔可夫性质
设是一个随机过程,为其状态空间,若对于任意,任意的,随机变量在已知变量之下的条件分布函数只与有关,而与无关,即条件分布函数满足下列等式,此性质称为马尔可夫行;如果随机过程满足马尔可夫性,则该过程称为马尔可夫过程
马尔科夫链
- 马尔可夫链是指具有马尔可夫性质的随机过程。在过程中,在给定当前信息的情况下,过去的信息状态对应预测将来的状态是无关的
- 在马尔科夫链的每一步,系统根据概率分布,可以从一个状态变成另一个状态,也可以保持当前状态不变。状态的改变叫做转移,状态改变的相关概率叫做转移概率
- 马尔可夫链中的三元素:状态空间,转移概率矩阵,初始概率分布。
- 示意图
马尔科夫链案例
- 设将天气状态分为晴,阴,雨三种状态,将顶某天的天气状态之和上一天的天气状态有关,状态使用1(晴),2(阴),3(雨)表示,状态概率矩阵P如下
|
- 第天天气状态为j的概率为:
- 因此,矩阵P即为条件概率的转移矩阵
- 矩阵的第i行元素表示,在上一个状态为i的时候的分布概率,即每行元素的和必须为1
- 初始概率,转移矩阵的计算过程
1 | C | D | E | |
2 | P | 0.75 | 0.125 | 0.125 |
3 | 0.5 | 0.25 | 0.25 | |
4 | 0.25 | 0.5 | 0.25 | |
5 | ||||
6 | ||||
7 | 第n天 | 晴 | 阴 | 雨 |
8 | 0
| 0.5 | 0.3 | 0.2 |
9 | 1 | C2*C8+C3*D8+C4*E8=0.575 | D2*C8+D3*D8+D4*E8=0.2375 | E2*C8+E3*D8+E4*E8=0.1875 |
10 | 2 | C2*C9+C3*D9+C4*E9=0.5969 | D2*C9+D3*D9+D4*E9=0.225 | E2*C9+E3*D9+E4*E9=0.1781 |
11 | 3 | C2*C10+C3*D10+C4*E10=0.6047 | D2*C10+D3*D10+D4*E10=0.2199 | E2*C10+E3*D10+E4*E10=0.1754 |
12 | 4 | C2*C11+C3*D11+C4*E11=0.6073 | D2*C11+D3*D11+D4*E11=0.2183 | E2*C11+E3*D11+E4*E11=0.1744 |
13 | 5 | C2*C12+C3*D12+C4*E12=0.6082 | D2*C12+D3*D12+D4*E12=0.2177 | E2*C12+E3*D12+E4*E12=0.1741 |
14 | 6 | C2*C13+C3*D13+C4*E13=0.6085 | D2*C13+D3*D13+D4*E13=0.2175 | E2*C13+E3*D13+E4*E13=0.174 |
15 | 7 | C2*C14+C3*D14+C4*E14=0.6086 | D2*C14+D3*D14+D4*E14=0.2174 | E2*C14+E3*D14+E4*E14=0.1739 |
16 | 8 | C2*C15+C3*D15+C4*E15=0.6087 | D2*C15+D3*D15+D4*E15=0.2174 | E2*C15+E3*D15+E4*E15=0.1739 |
17 | 9 | C2*C16+C3*D16+C4*E16=0.6087 | D2*C16+D3*D16+D4*E16=0.2174 | E2*C16+E3*D16+E4*E16=0.1739 |
18 | 10 | C2*C17+C3*D17+C4*E17=0.6087 | D2*C17+D3*D17+D4*E17=0.2174 | E2*C17+E3*D17+E4*E17=0.1739 |
HMM
- 隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,在语音识别,行为识别,NLP,故障诊断等领域具有高效的性能
- HMM是关于时序的概率模型,描述一个含有未知参数的马尔可夫链所生成的不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。HMM是一个双重随机过程---具有一定状态的隐马尔可夫链和随机的观测序列。
- HMM随机生成的状态随机序列被称为状态序列;每个状态生成一个观测,由此产生的观测随机序列,被称为观测序列。
- HMM图
- 是不可观测的状态,是可观测的序列
- 在不可观测的情况下,在确定的情况下和独立,在确定的情况下和独立。
- HMM由隐含状态S,可观测状态O,初始状态概率矩阵,隐含状态转移矩阵A,可观测转移矩阵B(又称混淆矩阵,Confusion Matrix)
-
和A决定了状态序列,B决定了观测序列,因此HMM可以用三元符号表示,称为HMM的三元素
HMM参数-A(隐含状态转移矩阵)
- A是隐含状态转移矩阵:
- 其中
- 是在时刻处于状态的条件下时刻转移到状态的概率
HMM参数-B(可观测值转移概率矩阵)
- B是可观测值转移概率矩阵:
- 其中
- 是在时刻处于状态的条件下生成观测值的概率
HMM的两个基本性质
HMM案列
- 假设有三个盒子,编号为1,2,3;每个盒子都装有黑白两种颜色的小球,球的比例如下:
编号 白球 黑球 1 4 6 2 8 2 3 5 5 - 按照下列规则的方式进行又放回的抽取小球,得到球颜色的观测序列:
- 第一次随机从盒子1(选择概率0.2),盒子2(选择概率0.5),盒子3(选择概率0.3)中随机抽取一个小球,记录颜色后,放回盒子中
- 按照以下规则重新随机抽取一个小球,记录颜色后,放回盒子中,重复该操作
- 如果上一个球是从盒子1抽取的话,这次重新从盒子1(选择概率0.5),盒子2(选择概率0.4),盒子3(选择概率0.1)中随机抽取一个小球
- 如果上一个球是从盒子2抽取的话,这次重新从盒子1(选择概率0.2),盒子2(选择概率0.2),盒子3(选择概率0.6)中随机抽取一个小球
- 如果上一个球是从盒子3抽取的话,这次重新从盒子1(选择概率0.2),盒子2(选择概率0.5),盒子3(选择概率0.3)中随机抽取一个小球
- 最终得到观测序列:白黑白白黑
- 状态集合:S={盒子1,盒子2,盒子3}
- 观测集合:O={白,黑}
- 状态序列和观测序列的长度T=5
- 初始概率分布
- 状态转移概率矩阵
- 观测概率矩阵
- 思考
- 在给定参数的时候,得到观测序列为白黑白白黑的概率是多少?
HMM的三个问题
- 概率计算问题:直接-向前-向后算法
- 给定模型和观测序列,计算模型下观测到序列出现的概率
- 学习问题:Baum-Welch算法(状态未知)
- 已知观测序列,估计计算模型的参数,是的在该模型下观测序列最大
- 预测问题:Viterbi算法
- 给定模型和观测序列,求给定观测序列条件概率最大的状态序列
概率计算问题
- 直接计算法
- 暴力计算
- 前向算法
- 后向算法
直接计算法
- 按照概率公式,列举所有可能的长度为的状态序列,求各个状态序列的和观测序列的联合概率,然后对所有可能的状态序列求和,从而得到最终的概率
- 伪代码如下
//初始化为0,为之后累加计算
//已知集合
//已知集合
//已知观测序列,
//未知序列,需要列举左右可能性计算,
//列举取中所有值,次循环
//列举取中所有值,次循环
//列举取中所有值,次循环
//根据状态概率转移矩阵计算该被列举状态序列的概率
//根据观测概率矩阵计算和确定的情况下观测的概率
//根据贝叶斯公式,,
//计算
//将所有列举的状态序列后计算得到的观测序列的概率累加得到最终概率
//
前向概率-后向概率
- 前向概率-后向概率指的其实是在一个观测序列中,时刻应的状态为的概率值转换过来的信息
//隐马尔可夫
前向算法
- 定义:给定,定义到时刻部分观测序列为,且状态为的概率为前向概率。记作:
- 公式理解
- 公式推导
- //贝叶斯
- //马尔可夫
- //贝叶斯
- //马尔可夫
前向算法案例
- HMM模型参数,观测到的序列为
- 计算
-
-
-
-
-
- 计算最终概率
-
后向算法
- 定义:给定,定义时刻状态为的前提下,从到部分观测序列为的概率为后向概率,记作
- 公式理解
- 初值:
- 当时
- 递推:对于
- 最终:
- 初值:
- 公式推导
- //全概率公式
- //贝叶斯
- //马尔可夫
后向算法案例
- HMM模型参数,观测到的序列为
- 计算
-
-
-
-
-
- 最终
-
前向后向算法总结
- 前向后向算出来的结果是一样的,如果不一样是计算有误
- 这个是前向后向的计算模板,如果实在算不出来可以参考这个,只有黄色的需要修改
- 关于状态转移矩阵
- 前向算法是从前往后算,所以是多个前状态转换成一个后状态,所以在计算一个时用的时状态转移矩阵的一列
- 后向算法时从后往前算,所以是一个前状态转换成多个后状态,所以在计算一个时 用的时状态转移矩阵的一行
-
关于观测概率矩阵
-
前向算法迭代计算时,每次新增的观测是前向概率最后一个观测值,是t时刻的,所以前向算法每次增加计算时,用的是t时刻状态转换成观测概率值,即t时刻的B
-
后向算法迭代计算时,每次新增的观测是后向概率第一个观测值,是t+1时刻的,所以后向算法每次增加计算时,用的是t+1时刻状态转换成观测概率值,即t+1
-
- 关于初始化
- 前向算法t=1时刻的初值是由和计算出来的
- 前向概率的定义(T=1):状态序列且观测序列的概率
- 即
- 状态序列 :
- 观测序列:
- 即
- 前向概率的定义(T=1):状态序列且观测序列的概率
- 后向算法t=T时刻的初值为1
- 这个比较难理解,先把代入公式
- 是什么序列?一个不存在得序列
- 到的序列是不存在的,因为在前面,没有 到的序列,所有变成了一个不存在的序列不存在的概率,那是多少,当然是1
- 如果觉得不好理解就按公式推导,记住它是1
- 是什么序列?一个不存在得序列
- 这个比较难理解,先把代入公式
- 前向算法t=1时刻的初值是由和计算出来的
- 关于迭代计算
- 前向算法
- 定义:,所以就是多个t-1时刻的状态转移到t时刻的状态时 状态为 , 观测值为 的概率,并且联合(乘以)的概率
- 计算其中一个t-1时刻的状态为的概率
- 前一次概率
- t-1时刻的状态转移到t时刻状态的概率
- 发生的概率,
- 上述三者累乘就得到一个t-1时刻的状态为时,前向序列发生的概率
- 把t-1时刻所有状态(即)的概率累加起来即为的概率
- 计算其中一个t-1时刻的状态为的概率
- 定义:,所以就是多个t-1时刻的状态转移到t时刻的状态时 状态为 , 观测值为 的概率,并且联合(乘以)的概率
- 后向算法
- 定义:,所以就是在t时刻的状态转移到多个t+1时刻的状态时,观测值为的概率,并且联合(乘以)的概率
- 前一次概率
- t时刻的状态转移到t+1时刻状态的概率
-
t+1时刻的状态为时,观测值为的概率
-
上述三者累乘就得到一个t+1时刻的状态为时,后向序列发生的概率
-
把t+1时刻所有状态(即)的概率累加起来即为的概率
- 定义:,所以就是在t时刻的状态转移到多个t+1时刻的状态时,观测值为的概率,并且联合(乘以)的概率
-
关于最终计算
-
前向算法
-
先看t=T时刻的公式,和我们要求的唯一的差别是多了,根据全概率公式,把所有的可能性,即所有的可能性累加起来就是所求的概率,所以也就是把
-
-
后向算法
-
先看t=1时刻的公式,也就是,这个公式和我们要求的概率的差别有两点
-
多了
-
这个好办和前向一样,如果有 的话做累加即可
-
-
状态还未计算
-
根据公式计算即可
-
-
-
-
- 前向算法
单个状态概率
- 求给定模型和观测序列Q的情况下,在时刻t处于状态的概率,记作
- 公式的分子说明
- 公式的分母说明
- 单个状态的意义主要是用于判断在每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果