李航《统计学习方法》之HMM隐马尔可夫模型
文章目录
- 前言
- 一、基本概念
- 1、语言描述:
- 2、符号表示
- 3、基本假设
- 4、例子
- 5、隐马尔可夫模型解决的三个基本问题
- 二、概率计算算法
- 1、向前算法
- 算法:
- 例题
- 2、向后算法
- 三、学习算法
- 1、监督学习算法
- 背景
- 方法
- 2、无监督学习
- Baum-Welch算法
- 四、预测算法
- 1、近似算法
- 2、维特比算法
前言
隐马尔可夫在语音识别、自然语言处理、生物信息、模式识别有广泛的应用,然而对于隐马尔科夫的流程需要深入的学习和探究,才好对马尔科夫场,条件随机场有更深入的掌握的理解。
一、基本概念
1、语言描述:
该模型是关于时序的概念模型,由一个隐藏的马尔科夫链随机生成不可观测的状态序列,再由状态生成观测,随后产生观测随机序列的过程。
- 序列的每一个位置又可以看成一个时刻
2、符号表示
(1)Q表示所有状态集合,q表示某一状态;
(2)V表示所有可能的观测集合,v表示每一次具体观测。
(可以直观看到,比如观测红白球问题,V就是红球白球两种观测可能)
(3)I表示状态序列,i表示具体状态;
(4)O表示对应状态序列的观测序列,o表示具体;
- 以上四项问题中已知
(5)A状态转移矩阵(方阵),aij是矩阵元素表示在前一时刻是qi的条件下,当前时刻为qj的概率。(前面状态为qi后面状态为qj)
(6)B观测概率矩阵(不一定是方阵),bj(k)为其中元素表示在状态是qj的条件下,生成观测是vk的概率。
(7)π是初始状态概率矩阵,等于时刻一时状态是qi的概率。
- 隐马尔可夫模型λ=(A, B, π)(A和π决定了隐藏的马尔科夫链,生成状态序列,B决定如何从状态到观测)
3、基本假设
(1)齐次马尔科夫:在任意时刻的状态只依赖于前一时刻的状态,与其他时刻无关
(2)观测独立性:任意时刻的观测只依赖于当前时刻,与其他时刻无关。
4、例子
说明:四个盒子随机选一个盒子,在在该盒子中随机选一个球,记录颜色,放回;下一步重复,重复五次以后得到一个观测序列O=(红,红,白,白,红)
- 解答过程:
确定状态集合Q={盒子1,盒子2,盒子3,盒子4}
观测集合V={红,白}
观测序列和观测序列长度为5
初始概率分布为π=(0.25, 0.25,0.25, 0.25)转置
状态转移概率分布A=
备注:行数表示上次对应的状态数,列数表示本次对应的状态数。
5、隐马尔可夫模型解决的三个基本问题
(1)概率问题:模型λ下观测序列O出现的概率P(O|λ)(2)学习问题:观测序列概率P(O|λ)最大,用极大似然估计的方法估计参数。
(3)预测问题:给定观测序列,求最有可能的对应的状态序列。
二、概率计算算法
- 观测序列的向前算法、向后算法
1、向前算法
算法:
-
输入模型λ,观测序列O
-
输出观测序列概率P(O|λ)
(1)初始化前向概率,是初始状态和初始观测的联合概率
(2)递推式,计算到下一时刻部分观测序列,且在下一时刻处于状态qi的前向概率
其中
表示到t时刻观测到O1,O2…Ot并在t时刻处于状态qj而在t+1时刻处于qi的联合概率。
继而求和是为了在时刻t的所有可能N个状态qj求和。
例题
考虑盒子和球模型λ,状态集合Q={1,2,3} 观测集合V={红,白}
A=
a11(0.5)表示上次选中了盒1,这次又选中盒1,
a12(0.2)表示上次选中了盒1,这次选中了盒2
…
aij中i表示上次选中哪个,j表示本次选哪个
B=
0.5表示盒子1里面是红球的概率,剩下的0.5是白球的概率
0.4是盒2中红球,0.6是盒2中的白球
0.7是盒3中红球,0.3是盒3中的白球
π=
初始选中各个盒子的概率。
T=3;O =(红,白,红),用前向算法计算P(O|λ )。
解答过程:
已知状态集合、观测集合、状态转移矩阵,初始状态π阵
(1) [说明:下标表示时刻,括号內部表示状态,盒1盒2盒3]
a1(1)=0.20.5=0.1
a1(2)=0.40.4=0.16
a1(3)=0.4*0.7=0.28
(2) [备注:a21表示上次是盒2这次转向盒1,整个大括号里面表示的是在第一次是红球条件下第二次又抽到相应的盒子的概率]
a2(1)=[a1(1)*a11+a1(2)a21+a1(3)a31]b1(2)=
[0.10.5+0.160.3+0.280.2]*0.5=0.077
a2(2)=[a1(1)*a12+a1(2)a22+a1(3)a32]b2(2)=
[0.10.5+0.160.3+0.280.2]*0.6=0.1104
a2(3)=[a1(1)*a13+a1(2)a23+a1(3)a33]b3(2)=
[0.10.5+0.160.3+0.280.2]*0.3=0.0606
(3)a3(1)=[a2(1)*a11+a2(2)*a21+a2(3)*a31]*b1(1)=0.04187
a3(2)=[a2(1)*a12+a2(2)*a22+a2(3)*a32]*b2(1)=0.03551
a3(3)=[a2(1)*a13+a2(2)*a23+a2(3)*a33]*b3(1)=0.05284
(4)P(O|λ)=0.04187+0.03551+0.05284=0.13022
总结:前向算法的核心就是已知最终呈现的结果,既要考虑每次试验的所有可能结果,又要考虑每次试验场景状态的转换,例如上个例子中的3个盒子的转换。每一次递推,要保证当下结点的状态是与所要求得所的某一概率所对应的状态是一致的,这样,当求马尔科夫模型下观测序列所出现的概率时,只需要对最后一步的迭代进行求和即可。
2、向后算法
于后向算法,直接以盒子(隐)和球(观测)的实例为例推导:
(1)初始化第三次取球为红球时候,即最终时刻所有状态的概率为1
(2)逆推迭代倒数第二次观察情况为白球的情况
备注:表达式少打了一个Σ符号。
注意状态转移阵中的元素aij对应的下标的对应关系,每个表达式固定的是i,这是与前向算法不同的地方,比如第一个式子中,aij i=1表示从盒1转移到某盒,而前向算法中固定的是j,j=1表示的则是从某盒转移到盒1.观测概率矩阵则是对应T次(最后一次)所观测的值,也就是说第二次的后向概率要满足第三次的观测概率。也要乘以满足下次观测的后向概率。
逆推迭代倒数第一次观察情况为红球的情况
(3)计算加和
可以发现前向算法和后向算法的结果相同
————————————————
后向算法例题来自
原文链接:https://blog.csdn.net/asdfsadfasdfsa/article/details/80913187
三、学习算法
1、监督学习算法
背景
已知的训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2)…(Os,Is)},接下来用极大似然估计法来估计隐马尔可夫模型的参数
方法
1、转移概率aij的估计:样本在t时刻处于状态i,时刻t+1转移到状态j的频数/所有频数之和
2、观测概率bj(k)估计:样本中状态为j并观测为k的频数/所有频数之和
3、初始状态概率Πi的估计为s个样本中初始状态为qi的频率
注🐖:因为需要人工标注,代价较大,所以就会使用无监督学习