理解隐马尔可夫模型

其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。

书的购买链接
书的勘误,优化,源代码资源

在这里插入图片描述

作者简介:SIGAI人工智能平台
全文PDF下载:http://www.tensorinfinity.com/paper_99.html

隐马尔可夫模型(Hidden Markov Model,简称HMM)由Baum等人在1966年提出[1],是一种概率图模型,用于解决序列预测问题,可以对序列数据中的上下文信息建模。所谓概率图模型,指用图为相互依赖的一组随机变量进行建模,图的顶点为随机变量,边为变量之间的概率关系。

在隐马尔可夫模型中,有两种类型的节点,分别为观测值序列与状态值序列,后者是不可见的,它们的值需要通过从观测值序列进行推断而得到。很多现实应用可以抽象为此类问题,如语音识别,自然语言处理中的分词、词性标注,计算机视觉中的动作识别。隐马尔可夫模型在这些问题中得到了成功的应用。本文作为已经出版的《机器学习与应用》,清华大学出版社,雷明著第16章“循环神经网络”中隐马尔可夫模型一节的扩充,已经被独立成一章,在第二版中出版。为降低阅读与理解难度,本文尽量不过多涉及概率图模型的概念,而是从序列建模的角度对HMM进行解释。

马尔可夫过程与马尔可夫模型

马尔可夫过程是随机过程的典型代表。所谓随机过程,是指一个系统的状态随着时间线随机的演化。这种模型可以计算出系统每一时刻处于各种状态的概率以及这些状态之间的转移概率。首先定义状态的概念,在 t t t时刻系统的状态为 z t z_t zt,在这里是一个离散型随机变量,取值来自一个有限集
S = { s 1 , . . . , s n } S=\left \{ s_{1},...,s_{n} \right \} S={ s1,...,sn}
例如我们要为天气进行建模,需观察每一天的天气,则状态集为
S = { 晴 天 , 阴 天 , 雨 天 } S=\left \{ 晴天,阴天,雨天 \right \} S={ }
为简化表示,将状态用整数编号,可以写成
S = { 1 , 2 , 3 } S=\left \{ 1,2,3 \right \} S={ 1,2,3}
1 1 1时刻开始到 T T T时刻为止,系统所有时刻的状态值构成一个随机变量序列
Z = { z 1 , . . . , z T } Z=\left \{ z_{1},...,z_{T} \right \} Z={ z1,...,zT}
系统在不同时刻可以处于同一种状态,但在任一时刻只能有一种状态。不同时刻的状态之间是有关系的。例如,如果今天是阴天,明天下雨的可能性会更大,在时刻 t t t的状态由它之前时刻的状态决定,可以表示为如下的条件概率
p ( z t ∣ z t − 1 , . . . , z 1 ) p\left ( z_{t}\mid z_{t-1},...,z_{1} \right ) p(ztzt1,...,z1)
即在从 1 1 1 t − 1 t-1 t1时刻系统的状态值分别为 z 1 , ⋯   , z t − 1 z_1,\cdots ,z_{t-1} z1,,zt1的前提下,时刻 t t t系统的状态为 z t z_t zt的概率。如果要考虑之前所有时刻的状态计算太复杂。为此进行简化,假设 t t t时刻的状态只与 t − 1 t-1 t1时刻的状态有关,与更早的时刻无关,即忘记了更早的信息。上面的概率可以简化为
p ( z t ∣ z t − 1 , . . . , z 1 ) = p ( z t ∣ z t − 1 ) p\left ( z_{t}\mid z_{t-1},...,z_{1} \right )=p\left ( z_{t}\mid z_{t-1} \right ) p(ztzt1,...,z1)=p(ztzt1)
该假设称为一阶马尔可夫假设,满足这一假设的马尔可夫模型称为一阶马尔可夫模型。如果状态有 n n n种取值,在 t t t时刻取任何一个值与 t − 1 t-1 t1时刻取任何一个值的条件概率构成一个 n × n n \times n n×n的矩阵 A A A,称为状态转移概率矩阵,其元素为
a i j = p ( z t = j ∣ z t − 1 = i ) a_{ij}=p\left ( z_{t}=j\mid z_{t-1}=i \right ) aij=p(zt=jzt1=i)
该值表示 t − 1 t-1 t1时刻的状态为 i i i,时刻的状态为 j j j,即从状态 i i i转移到状态 j j j的概率。如果知道了状态转移矩阵,就可以计算出任意时刻系统状态取每个值的概率。状态转移概率矩阵的元素必须满足如下约束:
a i j ≥ 0 ∑ j = 1 n a i j = 1 \begin{aligned} a_{ij} &\geq 0 \\ \sum_{j=1}^{n}a_{ij} &= 1 \end{aligned} aijj=1naij0=1
第一条是因为概率值必须在 [ 0 , 1 ] \left [ 0,1 \right ] [01]之间,第二条是因为无论 t t t时刻的状态值是什么,在下一个时刻一定会转向 n n n个状态中的一个,因此它们的转移概率和必须为 1 1 1。以天气为例,假设状态转移矩阵为
[ 0.7 0.2 0.1 0.4 0.5 0.1 0.3 0.4 0.3 ] \begin{bmatrix} 0.7 & 0.2 & 0.1\\ 0.4 & 0.5 & 0.1\\ 0.3 & 0.4 & 0.3 \end{bmatrix} 0.70.40.30.20.50.40.10.10.3
其对应的状态转移图(状态机)如下图所示,图中每个顶点表示状态,边表示状态转移概率,是有向图
在这里插入图片描述
有一个需要考虑的问题是系统初始时刻处于何种状态,这同样是随机的,可以用向量 π \pi π表示。以天气为例,假设初始时处于晴天的概率是 0.5 0.5 0.5,处于阴天的概率是 0.4 0.4 0.4,处于雨天的概率是 0.1 0.1 0.1,则 π \pi π
[ 0.5 0.4 0.1 ] \begin{bmatrix} 0.5 & 0.4 & 0.1 \end{bmatrix} [0.50.40.1]
为简化表述,引入一个特殊的状态 s 0 s_0 s0消掉 π \pi π,该状态的编号为 0 0 0。它是系统初始时所处的状态,即 z 0 = s 0 z_0=s_0 z0=s0,在接下来的时刻从它转向其他状态,但在后续任何时刻都不会再进入此状态。加入初始状态之后,对状态转移矩阵也进行扩充,行和列的下标变为从 0 0 0开始。以天气问题为例,扩充后的状态转移矩阵为
[ 0 0.5 0.4 0.1 0 0.7 0.2 0.1 0 0.4 0.2 0.1 0 0.3 0.4 0.3 ] \begin{bmatrix} 0 & 0.5 & 0.4 &0.1 \\ 0 & 0.7& 0.2 & 0.1\\ 0 & 0.4 & 0.2 &0.1 \\ 0 & 0.3 &0.4 & 0.3 \end{bmatrix} 00000.50.70.40.30.40.20.20.40.10.10.10.3
给定一阶马尔可夫过程的参数,由该模型产生一个状态序列 z 1 , ⋯   , z T z_1,\cdots,z_T z1,,zT的概率为
p ( z 1 , . . . , z T ) = p ( z t ∣ z 1 , . . . , z t − 1 ) p ( z t − 1 ∣ z 1 , . . . , z t − 2 ) . . . = p ( z t ∣ z t − 1 ) p ( z t − 1 ∣ z t − 2 ) . . . = ∏ t = 1 T a z t z t − 1 \begin{aligned} p(z_{1},...,z_{T}) &=p\left ( z_{t}\mid z_{1},...,z_{t-1} \right )p\left ( z_{t-1}\mid z_{1},...,z_{t-2} \right )... \\ &=p\left ( z_{t}\mid z_{t-1} \right )p\left ( z_{t-1}\mid z_{t-2} \right ) ...\\ &= \prod_{t=1}^{T}a_{z_{t}z_{t-1}} \end{aligned} p(z1,...,zT)=p(ztz1,...,zt1)p(zt1z1,...,zt2)...=p(ztzt1)p(zt1zt2)...=t=1Taztzt1
结果就是状态转移矩阵的元素乘积。在这里假设任何一个时刻的状态转移矩阵都是相同的,即状态转移矩阵与时刻无关。

对于上面的天气问题,连续3天全部为晴天的概率为
p ( z 1 = 1 , z 2 = 1 , z 3 = 1 ) = p ( z 1 = 1 ∣ z 0 ) p ( z 2 = 1 ∣ z 1 = 1 ) p ( z 3 = 1 ∣ z 2 = 1 ) = a 01 × a 11 × a 11 = 0.5 × 0.7 × 0.7 = 0.245 \begin{aligned} &p\left ( z_{1}=1,z_{2}=1,z_{3}=1 \right )\\ &= p\left ( z_{1}=1\mid z_{0} \right )p\left ( z_{2}=1\mid z_{1}=1 \right )p\left ( z_{3}=1\mid z_{2}=1 \right )\\ &= a_{01}\times a_{11}\times a_{11}\\ &= 0.5\times 0.7\times 0.7\\ &= 0.245 \end{aligned} p(z1=1,z2=1,z3=1)=p(z1=1z0)p(z2=1z1=1)p(z3=1z2=1)=a01×a11×a11=0.5×0.7×0.7=0.245
状态转移矩阵通过训练样本学习得到,采用最大似然估计。给定一个状态序列 z z z,马尔可夫过程的对数似然函数为
L ( A ) = ln ⁡ p ( z ; A ) = ln ⁡ ∏ t = 1 T a z t − 1    z t = ∑ t = 1 T ln ⁡ a z t − 1    z t = ∑ i = 1 n ∑ j = 1 n ∑ t = 1 T 1 { z t − 1 = i ∧ z t = j } ln ⁡ a i j \begin{aligned} L(A) &=\ln p(z;A) \\ &= \ln \prod_{t=1}^{T}a_{z_{t-1}\; z_{t}}\\ &=\sum_{t=1}^{T} \ln a_{z_{t-1}\; z_{t}}\\ &=\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{t=1}^{T}1\left \{ z_{t-1}=i\wedge z_{t}=j \right \}\ln a_{ij} \end{aligned} L(A)=lnp(z;A)=lnt=1Tazt1zt=t=1Tlnazt1zt=i=1nj=1nt=1T1{ zt1=izt=j}lnaij
这里使用了指示变量来方便表述。因为状态转移矩阵要满足上面的两条约束,因此要求解的是如下带约束的最优化问题
m a x A L ( A ) ∑ j = 1 n a i j = 1 , i = 1 , . . . , n a i j ≥ 0 , i . j = 1 , . . . , n \begin{aligned} max_{A}L(A) \\ \sum_{j=1}^{n}a_{ij}&=1,i=1,...,n \\ a_{ij}\geq 0,i.j&=1,...,n \end{aligned} maxAL(A)j=1naijaij0,i.j=1,i=1,...,n=1,...,n
由于对数函数的定义域要求自变量大于 0 0 0,因此可以去掉不等式约束,上面的最优化问题变成带等式约束的优化问题,可以用拉格朗日乘数法求解。构造拉格朗日乘子函数
L ( A , α ) = ∑ i = 1 n ∑ j = 1 n ∑ t = 1 T 1 { z t − 1 = i ∧ z t = j } ln ⁡ a i j + ∑ i = 1 n α i ( 1 − ∑ j = 1 n a i j ) L(A,\alpha )=\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{t=1}^{T}1\left \{ z_{t-1}=i\wedge z_{t}=j \right \}\ln a_{ij}+\sum_{i=1}^{n}\alpha _{i}\left ( 1-\sum_{j=1}^{n}a_{ij} \right ) L(A,α)=i=1nj=1nt=1T1{ zt1=izt=j}lna

  • 8
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值