对隐马尔科夫模型HMM的一点理解

本文重点

  • 一个HMM模型是否可以处理任意长度的序列?
  • HMM训练如何支持多序列?

为什么要有隐马尔科夫模型?

有了马尔科夫模型,为什么还要有隐马尔科夫模型? 二者都可以用三元组表示
(π,S,T) ( π , S , T )
其中 S S 是状态集合, π是状态初始概率分布, T T 是状态转移矩阵. 应用马尔科夫模型时,需要先构造出上述三个元素(一般不是通过ML,而是利用经验知识人为构造); 而隐马尔科夫模型涉及”观测”这个新的概念,状态是隐藏的,未知的.比如在语音翻译中, 每个音节可以看作观测值,一个语句包含很多音节,作为一次观测, 而音节对应的含义(文字)作为隐含状态,是未知的,HMM希望通过学习获知音节序列和文字序列的对应关系,达成语音翻译的目标. 实际应用中会赋予HMM隐含状态真实的物理意义.

HMM示意图

常见的HMM示意图有两个,个人觉得两个图的解释各有侧重点,都列举如下
这里写图片描述
这里写图片描述

图中是3个隐状态的HMM,S是初始状态, E E 是结束状态, 他们是两个虚构的状态,用来对齐.
第一个图更常见, 但它容易让人产生一个疑问:HMM是不是要求序列长度固定? 入上图的HMM是不是只能处理长度为2的序列? 回答是否定的. 上面第二幅图描述的同一个HMM, 其实HMM模型参数中是没有T的概念,自然可以处理任意长度序列. 第一幅图之所以如此流行,是因为用它描述HMM相关的算法更加直观,比如”前向,后向”的概念.

# 关于HMM的三个问题
介绍HMM的资料必定涉及”HMM三问题”,不过在介绍他们之前,需要先了解以下HMM和马尔科夫模型的一个区别:发射概率.
HMM引入”状态-观测”这组概念,发射概率就是描述某个状态下得到某个观测值的概率P(|).
上面第一幅图适合公式推导,考虑给定一个观测序列 O=o0,o1,...,oT O = o 0 , o 1 , . . . , o T 时,MHM模型参数 λ=(π,S,T) λ = ( π , S , T ) 已知,则在时刻t处于状态 St S t 的概率.
Pt(Si)=Pt(ot|S)Nj=1Pt1(Sj)P(Si|Sj) P t ( S i ) = P t ( o t | S ) ∑ j = 1 N P t − 1 ( S j ) P ( S i | S j )
其含义时 t1 t − 1 时刻处于状态 Sj S j ,后以概率 P(Si|Sj) P ( S i | S j ) 转移到状态 Si S i ,而且 Si S i 以概率 P(Ot|Si) P ( O t | S i ) 发射出观测值 ot o t
这是一个递推公式,其初始状态为
P0(Si)=πi P 0 ( S i ) = π i

这个 Pt(Si) P t ( S i ) 很重要,HMM三个问题中,这个概率可以处理2.5个.

  1. 评估问题: HMM模型所有参数 λ λ 已知,求一个已知序列O的期望概率E
    E(O|λ)=i=1NPT(Si) E ( O | λ ) = ∑ i = 1 N P T ( S i )

    即最终时刻T,所有状态概率和
  2. 解码问题: HMM模型所有参数 λ λ 已知,求一个已知观测O所经历的各个隐含状态序列 和评估问题类似,不过这里不是求和,而是从 t=0 t = 0 t=T t = T 找到一个隐状态序列,使得 PT(Si)=maxjPT(Sj) P T ( S i ) = max j P T ( S j ) ,从 t=T t = T 逆向搜索到 t=0 t = 0 即可,这个过程称为Viterbi算法.
  3. 学习问题:已知一组序列 Os O s ,求出HMM的参数 λ λ
    假设我们已经通过经验确定了隐含状态的个数N, 观测序列O有S个,每一个观测序列的长度可以不一致.前面的 Pt(Si) P t ( S i ) 定义为前向概率 αt(i) α t ( i ) , 然后我们考虑什么是后向概率
    βt(i)=P(ot+1,ot+2,...,oT|λ,S(t)=Si) β t ( i ) = P ( o t + 1 , o t + 2 , . . . , o T | λ , S ( t ) = S i )

    后向概率的含义是: t时刻处于状态i,t时刻后观测和输入序列O一致 (ps:这个定义中状态和观测不是同一个时刻!!). 计算后向概率只是为了后面计算状态转移参数T
    显然,已知 λ λ 时,前向概率 αt(i) α t ( i ) βt(i) β t ( i ) 可以用递推方式求解,下面我们看看通过前向/后向概率,有没有办法求解 λ λ .
    初始概率
    πi=t=1Tαt(i) π i = ∑ t = 1 T α t ( i )

    发射概率
    P(ok|Si)=Tt+11(ot=ok)αt(i)πi P ( o k | S i ) = ∑ t + 1 T 1 ( o t = o k ) α t ( i ) π i

    其中 1(ot=ok) 1 ( o t = o k ) 是只序列O在时刻t的取值 ot=ok o t = o k
    转移概率
    P(Si|Sj)=αt(j)βt+1(i)πj P ( S i | S j ) = α t ( j ) β t + 1 ( i ) π j

    这是一个”先有鸡还是先有蛋的问题”,EM很适合这种场景.
    以上考虑的是只有一个观测序列O, 如果观测序列有多个呢? EM算法中间,每个序列计算出一组 λ λ ,然后取平均,此处取平均有两个可能的途径
  4. 第s个序列,得到 λs λ s ,则 λ=1SSs=1λs λ = 1 S ∑ s = 1 S λ s
  5. 依然是平均,不过稍微复杂一些
    多序列初始概率
    πi=1Ss=1St=1Tαst(i) π i = 1 S ∑ s = 1 S ∑ t = 1 T α t s ( i )

    多序列发射概率
    P(ok|Si)=Ss=1Tt+11(ot=ok)αst(i)Sπi P ( o k | S i ) = ∑ s = 1 S ∑ t + 1 T 1 ( o t = o k ) α t s ( i ) S π i

    多序列转移概率
    P(Si|Sj)=Ss=1αst(j)βst+1(i)Sπj P ( S i | S j ) = ∑ s = 1 S α t s ( j ) β t + 1 s ( i ) S π j

实验

to be continue…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值