隐马尔科夫模型(HMM)

模型背景

隐马尔可夫模型(HMM)来源于马尔科夫模型。马尔科夫模型中,整个系统是可观察的。但是现实中,系统分为可观察和不可观察两个部分。HMM模型将系统t时刻的状态分为了不可观测部分xt和可观测部分yt。HMM模型的状态变化如图所示:
这里写图片描述

两个基本假设

1、 齐次假设
t+1时刻状态 xt+1 仅于t时刻状态 xt 有关,与 x1...t1 , y1...t 独立。
2、观察独立假设
t时刻观察值yt仅与对应时刻状态xt有关,与 x1...t1 , y1...t1 独立。

三个参数值

设序列长度为T,状态取值为S = {si},观测值取值为V = {vk}。
1、初始状态概率分布 pi
2、状态转移概率矩阵A。

ai,j=P(xt+1=sj|xt=si)

3、符号发射概率矩阵B。
bj(k)=P(Ot=vk|xt=sj)

模型的三个参数合起来记为 μ=A,B,π

三个基本问题

1、估计问题
已知参数 μ 和观测序列y,计算序列y出现的概率。
2、序列问题
已知参数 μ 和观测序列y,估计最可能的状态变化序列X。
3、学习问题
已知观测序列Y,计算模型参数 μ

估计问题(动态规划!)

计算P(Y | μ ), 可以由 XP(Y,X|μ) 。联合分布可以计算,然而求边缘分布时需要枚举状态序列X的所有排列,计算量随着序列的长度指数增长。因此该方法不适用。

展开表达式 XP(Y,X|μ) ,有:

XP(Y,X|μ)=Xπx1bx1(O1)t=1T1at,t+1bxt+1(Ot+1)

其中连乘项可以分布求和,就是依次进行 x1 x2.... xT ,如此可以大大简化计算量。

根据该思想,就能够得到解决估计问题的方法:前向传播法。基本的思路是从t=1时刻开始,计算每个状态取值si的概率并保存起来,在计算t+1时刻状态取值sj的概率时用t时刻保存的概率计算。也就是 P(xt+1=sj)=iP(xt=si)ai,j

实际算法中,定义前向变量 αt(i)= P(O1,O2,...Ot,xt=si) ,算法分为三步:
1、初始化:

α1(i)=πibi(O1),1iN

2、迭代:
αt+1(j)=i=1N(αt(i)ai,j)bj(Ot+1),1tT1

3、求和终结:
P(O|μ)=i=1NαT(i)

学习问题(EM算法!)

由于无法观察到状态X的取值,使用EM算法,基本思路是:

第一步,E-步骤:由模型 μ 和观察值O计算隐含状态X。

第二步,M-步骤:由观察值O和隐含状态X重新计算模型 μ

HMM模型应用

1、语音识别

观察值为音频输入,隐含状态为语音对应的文字内容。

2、机器翻译

观察值为源语言,隐含状态为目标语言。

3、中文分词

观察值为句子输入,隐含状态为分词结果。

理解

隐马尔可夫模型考虑了过去状态对当前状态的影响,可以说在建模过程中考虑到了上下文对当前输出的影响。但是这种“记忆力”比较短,只能保留一个时间单位。

和RNN的比较

在深度学习如此热门的情况下,发现HMM似乎仍然在很多问题中有应用,于是很好奇RNN有哪些优劣。网络中得到了以下答案:
1、RNN不存在马尔科夫假设。(RNN根本就不是个概率模型嘛)理论上RNN长时记忆力好,但是使用梯度下降方法仍然难以训练出很好的长时记忆力。因此模型中会使用n-gram 作为输入来增加模型的记忆力。
2、RNN的优势在于极好的模型拟合能力(神经网络都有)。同时RNN模型中考虑了句式和语义信息,能够得到不错的平滑性。
3、CRF是另一种可以参与比较的模型。CRF模型强大,与RNN相比有各自不同的优势。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值