王小草【机器学习】笔记--隐马尔可夫模型HMM

本文介绍了隐马尔可夫模型(HMM)的基础知识,包括其在词性标注、语音识别等领域的应用。HMM是关于时序的概率模型,涉及概率计算、参数估计和模型预测。文章详细阐述了HMM的参数确定,如概率矩阵A、混淆矩阵B和初始状态π,并解释了HMM的两个性质。HMM的训练包括概率计算问题、学习问题(Baum-Welch算法)和预测问题(Viterbi算法)。
摘要由CSDN通过智能技术生成

标签(空格分隔): 王小草机器学习笔记


机器学习的套路:
参数估计–>模型预测

隐马尔可夫模型需要涉及的步骤:
概率计算
参数估计
模型预测

应用:中文分词,语音识别等

在中文分词中,如果学习到了参数,隐马尔可夫就不需要词库也可以分词,但如果有词库,就会增加正确性。
所以在工业中可以HMM+词典来进行中文分词
但HMM可以发现新词,这个新词在词库中是没有的。

1. 什么是HMM

1.1 HMM初识

HMM可用于标注问题(词性标注),语音识别,NLP,生物信息,模式识别等领域。

HMM是关于时序的概率模型,描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,再由各个状态生成观测粹机序列的过程。

HMM随机生成的状态随机序列,称为状态序列;每个状态序列生成一个观测,由此产生的观测随机序列,称为观测序列。

隐马尔可夫模型的贝叶斯网络:
QQ截图20161117171856.png-45.6kB

如上图中,第一行的z是一组不可观测的随机序列,即状态序列;下面一行x是可观测的随机序列,即观测序列。每一个位置可以看成是一个时刻,但这个时刻并不是严格意义上的时间,也可以是空间上的,比如DNA。

假设现在有一句话“隐马尔可夫模型的贝叶斯网络”。如果要分词的话我们希望是这样分“隐/马尔可夫/模型/的/贝叶斯/网络”。
要将这些词分出来,其实我们只需要知道哪个字是一个词语的终止字。比如“夫”,“型”,“的”,“斯”,“络”都是终止字,他们出现表示一个词语的结束。

一个字是不是终止字,我们叫做是这个字的隐状态,表示成(0,1),0表示非终止字,1表示是终止字。这个因状态就是上图中的z1,z2,z3….
现在中文分词的问题就转变为寻找一个字的隐状态的问题了。


在来看一个概念,如果有a,b,c三个点,a指向b,c。当我们不知道a的时候,我们说b,c是不独立的。
表示成公式可以这样:
当a不知道的时候,bc是不独立的p(c,b) ≠ p(c)p(b)
当a知道的时候,bc是独立的p(c,b/a) = p(c/a)p(b/a)

根据以上概念,再来看回上面的图。当z1不知道的时候,我们说x1和z2是不独立的。
QQ截图20161117174502.png-142kB

也可以说,当z1不知道的时候,x1和(z2,x2)是不独立的。

QQ截图20161117174531.png-144.2kB

可以想见,对于一句话,前后的字之间总是相关的。

1.2 HMM的参数确定

1.2.1 参数的来源与原理

概率矩阵A
在中文分词中每个隐状态都是两种可能(0,1)。但是比如说预测天气,预测投骰子,很多问题都是说个可能的。我们假设如何情况下的隐状态有n中可能。(1,2,3…)

现在假设从z1到z2,z1有n中状态,z2也有n种状态,当z1是1的时候,z2可以是1,2,3…n;当z1是2的时候,z2可以是1,2,3…n;当zn是n的时候,z2可以是1,2,3…n.酱紫的话,我们可以用一个n*n的表格来表示出这种可能的关系。

z1/z21234n
1a11a12a13a14a1n
2a21a22a23a24a2n
3
nan1an2ann

aij表示的是由z1的n=1转换到z2的n=j的概率。比如a12表示z1的隐状态为1时,z2的隐状态为2的概率。于是这个n*n的矩阵我们称之为概率转换矩阵A。

既然是概率矩阵,那么当z1=1时, z2=1或2或3或..n的概率相加一定是等于1的。但是当z1=1,z2=1;z1=2,z2=1,…z1=n,z2=1的所有概率相加是不一定等于1的。也就是说,概率矩阵A的每行和都是1,每列的和不一定是1.这是概率矩阵的性质。

混淆矩阵B
上面讲了z1到z2的过程(前一个时刻到后一个时刻)。然而z1不止指向了z2,还指向了x1。

如果z的隐状态仍然是n个:1,2,3…n
x的可观测状态是m个值:1,2,3…m (一般m不等于n,等了也是凑巧的)
那么从z->x也是可以表示成一个n * m的矩阵的,叫做混淆矩阵。

z1/x11234m
1b11b12b13b14b1m
2b21b22b23b24b2m
3
nbn1an2anm

同样b也是一个条件概率,当z=i的时候,x=j的概率。
混淆矩阵有的文献中也叫发射矩阵。

初始状态π
现在我们知道每一个时刻都是与前一个时刻有联系的。那么第一个时刻呢?第一个时刻的z也可能有n种情况,那么它的状态是通过什么确定的呢?
我们假设z1=1的概率为p1,那么每个状态都会有一个概率。

z123n
pp1p2p3pn

这个初始状态的概率分为我们记为π。
π其实可以表示成是一个n维的向量,向量的每个元素都是一个状态的概率。

于是,一个隐马尔可夫模型就可以表示成公式:
QQ截图20161119080047.png-4kB
模型λ由三个参数:转移矩阵A, 混淆矩阵B,概率向量π构成。

1.2.2 模型与参数的数学表示

将上面通俗的描述转换成数学表达式来说明:

Q是所有可能的状态的集合,N是可能的状态数。
V是所有可能的观测的集合,M是可能的观测数。
Q={q1,q2,…qN}
V={v1,v2,…vM}

I是长度为T的状态序列,O是对应的观测序列
I={i1,i2,…iT}
O={o1,o2,…oT}

A是转义概率矩阵:QQ截图20161119080928.png-2.2kB

其中QQ截图20161119080941.png-2.6kB
aij是在时刻t处于状态qi的条件下,时刻t+1转移到状态qj的概率。

B是观测概率矩阵:QQ截图20161119081802.png-1.9kB

其中,QQ截图20161119081811.png-2.1kB
bik是在时刻t处于窗台qi的条件下生成观测Vk的概率。

π是初始状态概率向量QQ截图20161119081818.png-1.6kB

其中,QQ截图20161119081830.png-1.6kB
πi是时刻t=1处于状态qi的概率

总结起来,HMM由初始概率分布π(向量), 状态转移概率分布A(矩阵)以及观测概率分布B(矩阵)确定。π和A决定状态序列,B决定观测序列。因此,HMM可以用三元符号表示,称为HMM的三要素:
QQ截图20161119080047.png-4kB

1.3 HMM的两个性质

齐次假设:
一旦确定了t-1时刻的状态,我们就可以确定t时刻的状态的概率。
QQ截图20161119083659.png-5.2kB

观测独立性假设:
一旦确定了t时刻的状态,我们就可以确定t时刻的观测值的概率。
QQ截图20161119083705.png-5.3kB

2. HMM的训练

2.1 两种方法与三个问题

HMM的两种方法:
训练的目标其实就是求得模型的三个参数A,B,π

HMM的训练其实有两种,一种是通过不断地迭代测试,记录下输出的一整串观测值。通过这些观测值去求矩阵A,B和向量π。这个方法是EM算法。在隐马模型中我们一般叫做baum welth算法。

第二种方法,如果我们已经知道了参数π,与最后的观测值,那么就是典型的最大似然估计法。

HMM的3个基本问题:
(1)概率计算问题:前向-后向算法—>动态规划
给定模型λ=(A,B,π)和观测序列O={o1,02,…or},计算模型λ下观测序列O出现的概率P(O|λ).

(2)学习问题:Baum-Welch算法(状态未知)—>EM
已知观测序列O={o1,02,…or},估计模型λ=(A,B,π)的参数,使得在该模型下观测序列P(O|λ)最大

(3)预测问题:Viterbi算法—>动态规划
解码问题:已知模型λ=(A,B,π)和观测序列O={o1,02,…or},求给定观测序列条件概率P(I|O,λ)最大的状态序列I。

2.2 概率计算问题

概率计算问题有三种求解方法:
(1)直接算法(暴利算法)
(2)前向算法
(3)后向算法

2.2.1 直接算法

概率计算问题的目的是求出P(O|λ)。
按照概率公式,我们可以先求出联合概率P(O,I|λ),然后对所有可能的状态序列求和,从而得到P(O|λ)。

O和I同时出现的联合概率是:
QQ截图20161119093359.png-3.8kB

要求得联合概率,得先分别求得P(I|λ),与P(O|I,λ)
状态序列I={i1,i2,…iT}的概率是:
QQ截图20161119093321.png-3.6kB

对固定的状态序列I,观测序列O={o1,o2,…oT}的概率是:
QQ截图20161119093328.png-4.1kB

所以OI同时出现的联合概率是:
QQ截图20161119093314.png-6.6kB

知道了联合概率,我们对所有可能的状态序列I求和,得到观测序列O的概率P(O|λ)
QQ截图20161119093719.png-9kB

计算复杂度:
加和符号中有2T个因子,I的遍历个数为N的T次方,因此时间复杂度为:QQ截图20161119093825.png-1.8kB。复杂度较高。

2.2.2 前向计算

QQ截图20161119100339.png-80.4kB

定义:
给定λ,定义到时刻t的观测序列为o1,o2,..ot且状态qi的概率为前向概率。记作:
QQ截图20161119100852.png-4.9kB
可以递推计算前向概率ai(t)及观测序列概率P(O|λ)。

初值:QQ截图20161119101008.png-2.8kB

递推:对于t=1,.。。T-1:QQ截图20161119101016.png-5.9kB

最终:QQ截图20161119101022.png-4.7kB

前向算法的复杂度:QQ截图20161119101255.png-1.9kB

2.2.3 后向计算

定义:
给定λ,定义到时刻t状态为qi的前提下,从t+1到T的观测序列为ot+1,ot+2…oT的概率为后向概率,记作:
QQ截图20161119102508.png-5.3kB
可递推计算后向概率βt(i)及观测序列概率P(o|λ)

初值:QQ截图20161119102746.png-2.1kB

递推:对于T=T-1,T-2…,1
QQ截图20161119102753.png-6.1kB

最终:QQ截图20161119102800.png-5.2kB

2.2.4前后向的关系

QQ截图20161119103118.png-25.8kB

QQ截图20161119103428.png-2.3kB表示当给定模型λ时,所有观测序列与t时刻的状态为qi的联合概率。它最终其实是等于前向概率与后向概率相乘。

2.2.5 单个状态的概率

求给定模型λ和观测值O,在时刻t处于状态qi的概率。
记作:QQ截图20161119103848.png-4.3kB

根据前向后向概率的定义:
QQ截图20161119104313.png-24.9kB

γ的意义:
在每个时刻t选择在该时刻最优可能出现的状态it,从而得到一个状态序列,将它作为预测的结果。

给定模型和观测序列,时刻t处于状态q1的概率为:
QQ截图20161119104502.png-9.1kB

两个状态的联合概率:
QQ截图20161119104630.png-28.1kB

期望:
在观测O下状态i出现的期望:
QQ截图20161119104926.png-3.1kB

在观测O下状态i转移到状态j的期望:
QQ截图20161119104934.png-4.2kB

学习算法:
若训练数据包括观测序列和状态序列,则HMM的学习非常简单,是监督学习;
若训练数据只有观测序列,则HMM的学习需要使用EM算法,是非监督学习。

大数定理:
假定已给定训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1), (O2,I2)…(OS,IS),那么,可以直接利用伯努利大数定理的结论:频率的极限是概率,从而给吃HMM的参数估计。

2.3 Baum-Welch算法

所有观测数据写成O=(o1,o2,…,oT),所有隐状态写成I=(i1,i2,…iT),完全数据是(O,I),完全数据的对数似然函数是lnP(O,I|λ)

假设QQ截图20161119112201.png-0.5kB是HMM参数的当前估计值,λ待求的参数。
QQ截图20161119112243.png-15.4kB

之前我们已经验证过了QQ截图20161119093314.png-6.6kB

所以函数可以写成:
image_1b1t9u7sab58nmeopr1nretnu5j.png-20.6kB

现在我们要去Q到达最大值时的参数π,A,B为多少。
由于三个参数分别位于三个项中,可分别极大化:
QQ截图20161119112807.png-5.2kB

注意πi满足和为1,利用拉格朗日乘子法,得到:
QQ截图20161119112900.png-7kB

对上式的π求偏导,得到
QQ截图20161119112933.png-3.2kB

对i求和,得到:
QQ截图20161119113029.png-2.3kB

从而得到初始状态概率:
QQ截图20161119113051.png-11.5kB

第二项可写成:
QQ截图20161119113129.png-9.2kB

仍然使用拉格朗日乘子法,得到:
QQ截图20161119113152.png-9.3kB

同理,得到:
QQ截图20161119113152.png-9.3kB

2.4 预测算法

预测的近似算法
在每一个时刻t选择在该时刻最优可能出现的状态i,从而得到一个状态序列I,将它作为预测结果。

给定模型和观测序列,时刻t处于状态qi的概率为:
QQ截图20161119120412.png-10.8kB

选择概率最大的i作为最有可能的状态。

Viterbi算法
Viterbi算法实际是用动态规划解HMM预测问题。用DP求概率最大的路径,这是一条路径对应一个状态序列。

定义变量δt(i)是时刻t的所有路径中概率最大值。
QQ截图20161119120637.png-6.3kB

递推:
QQ截图20161119120656.png-15kB

终止:
QQ截图20161119120723.png-4.2kB

可以用一个很直观的图来表示:
QQ截图20161119120802.png-14.8kB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值