HMM(隐马尔科夫模型)

HMM(隐马尔科夫模型)

1适用场景

hmm模型用于序列标注问题的统计学模型。描述有隐藏的马尔科夫链生成观测序列的过程。属于生成模型。

2算法原理
2.1 序列标注任务看做互不相干的多分类任务

序列标注算法的目的就是为了得到最大的联合条件概率作为输出。
m a x P ( o ∣ x ) = m a x p ( o 1 o 2 . . . o m ∣ x 1 x 2 . . . x m ) \mathop{max}P(o|x)=\mathop{max}p(o_1o_2...o_m|x_1x_2...x_m) maxP(ox)=maxp(o1o2...omx1x2...xm)
如果假设每一个o都是条件独立,互不影响的。那么可以通过最大化每一个o的输入,从而使整体最大化。
m a x P ( o ∣ x ) = ∑ i = 1 m m a x p ( o i ∣ x 1 x 2 . . . x m ) \mathop{max}P(o|x)=\sum_{i=1}^m\mathop{max}p(o_i|x_1x_2...x_m) maxP(ox)=i=1mmaxp(oix1x2...xm)
这样做是对输入序列的每一个时刻都预测一个值(将每个位置看做是softmax的多分类)。并假设预测的值互不影响。这样做再部分情况下后出现不合理的结构。因为完全没有考虑其他输出值的影响。例如分词中出现SS的预测结果。

2.2 HMM

在马尔科夫模型中,将状态序列看做是隐状态,输入序列看做是观测序列。为考虑状态序列的相互影响关系,用贝叶斯公式对原式进行变性。
P ( o ∣ x ) = p ( o , x ) p ( x ) = p ( x ∣ o ) p ( o ) p ( x ) P(o|x)=\frac{p(o,x)}{p(x)}=\frac{p(x|o)p(o)}{p(x)} P(ox)=p(x)p(o,x)=p(x)p(xo)p(o)
p ( x ) p(x) p(x)是归一化因子,可不做考虑。那么求解最大化 m a x p ( o ∣ x ) \mathop{max}p(o|x) maxp(ox)就等价于求解。 m a x p ( x ∣ o ) p ( o ) \mathop{max}p(x|o)p(o) maxp(xo)p(o),同时上式包含 p ( o ) p(o) p(o),可在 p ( o ) p(o) p(o)中考虑输出的相互影响关系。
m a x p ( x ∣ o ) p ( o ) = m a x p ( x 1 x 2 . . . x m ∣ o 1 o 2 . . . m ) p ( o 1 o 2 . . . o m ) \mathop{max}p(x|o)p(o)=\mathop{max}p(x_1x_2...x_m|o_1o_2..._m)p(o_1o_2...o_m) maxp(xo)p(o)=maxp(x1x2...xmo1o2...m)p(o1o2...om)
为了简化复杂度,HMM做了一下两个假设:

  1. 齐次马尔科夫假设

假设当前隐状态只受到前一时刻的隐状态影响,即:
p ( o 1 o 2 . . . o m ) = p ( o 1 ) p ( o 2 ∣ o 1 ) . . . p ( o n ∣ p n − 1 ) p(o_1o_2...o_m)=p(o_1)p(o_2|o_1)...p(o_n|p_{n-1}) p(o1o2...om)=p(o1)p(o2o1)...p(onpn1)

  1. 观测独立性假设

假设当前观测状态只依赖当前隐状态,即:
p ( x 1 x 2 . . . x m ∣ o 1 o 2 . . . o m ) = p ( x 1 ∣ o 1 ) p ( x 2 ∣ o 2 ) . . . p ( x m ∣ o m ) p(x_1x_2...x_m|o_1o_2...o_m)=p(x_1|o_1)p(x_2|o_2)...p(x_m|o_m) p(x1x2...xmo1o2...om)=p(x1o1)p(x2o2)...p(xmom)
综合上面两个假设,原始的最大化目标就变成了
m a x p ( x ∣ o ) p ( o ) = m a x p ( o 1 ) p ( x 1 ∣ o 1 ) ∑ i = 2 m p ( o i ∣ o i − 1 ) p ( x i ∣ o i ) \mathop{max}p(x|o)p(o)=\mathop{max}p(o_1)p(x_1|o_1)\sum_{i=2}^mp(o_i|o_{i-1})p(x_i|o_i) maxp(xo)p(o)=maxp(o1)p(x1o1)i=2mp(oioi1)p(xioi)
做了上面两个假设后,包含2n个变量的复杂概率图关系就变成了马尔科夫链。用下面有向图马尔科夫链来表示相互影响关系:

在这里插入图片描述

将上式 p ( o 1 ) p(o_1) p(o1)称为起始概率 π \pi π p ( x i ∣ o i ) p(x_i|o_i) p(xioi)称为发射概率 B B B p ( o i ∣ o i − 1 ) p(o_i|o_{i-1}) p(oioi1)称为状态转移概率 A A A。隐马尔科夫模型 λ \lambda λ可以用三元符号表示。
λ = ( π , A , B ) \lambda=(\pi,A,B) λ=(π,A,B)

3 马尔科夫三个问题
  1. 概率计算问题

已知模型参数 λ = ( π , A , B ) \lambda=(\pi,A,B) λ=(π,A,B)和观测序列。计算在模型 λ = ( π , A , B ) \lambda=(\pi,A,B) λ=(π,A,B)下观测序列出现的概率 p ( o ∣ λ ) p(o|\lambda) p(oλ)

  1. 模型参数估计
  2. 预测问题

已知模型参数 λ = ( π , A , B ) \lambda=(\pi,A,B) λ=(π,A,B)和观测序列。估计最可能的状态序列。在预测时,需要使用动态规划思想来简化计算。将该算法称为维特比算法。其思想就是保存已经算过的值,需要使用时直接查表,无需在重头计算(跟斐切那波数列的计算思想一样)。不使用动态规划进行预测的时间复杂度是 O ( L N L ) O(LN^L) O(LNL)(L是序列长度,N是隐状态可取值的个数)。使用动态规划后时间复杂度下降至 O ( L N 2 ) O(LN^2) O(LN2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值