隐含马尔科夫模型(HMM)原理及其实现

本文深入探讨了隐含马尔科夫模型(HMM)的基本原理,包括其数学表达方式及训练方法。从贝叶斯公式出发,详细介绍了如何通过HMM估计源信息序列,并讲解了两种训练方式——有监督训练与无监督训练,特别是鲍姆-韦尔奇算法在无监督训练中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

隐含马尔科夫模型(Hidden Markov Model)

  • 公式推导

    s1,s2,,sn = Args1,s2,,snS Max P(s1,s2,,sn|o1,o2,,on)     

    注:S为所有可能的源信息,o1,o2,,on是接受到的观测信息

    我们可以将①式利用贝叶斯公式来间接计算:

    P(s1,s2,,sn|o1,o2,,on) = P(o1,o2,,on|s1,s2,,sn)P(s1,s2,,sn)P(o1,o2,,on) = kP(o1,o2,,on|s1,s2,,sn)P(s1,s2,,sn)     

​ 对于②式我们可以利用隐含马尔科夫模型(Hidden Markov Model)来估计。

P(o1,o2,,on|s1,s2,,sn) = t=1nP(ot|st)      

P(s1,s2,,sn) = t=2nP(st|st1)    

​ 这样,有③和④两式就求解了②式

  • HMM的训练

    要利用隐含马尔科夫模型解决实际问题,那么我们必须事先知道它的参数,即要知道由前一个状态St1进入当前状态St的概率P(St|St1),称之为转移概率(Transition Probability),以及每个状态St产生相应输出Ot的概率P(Ot|St),称之为生成概率(Generation Probability),得到这些参数的过程就是模型的训练

    P(Ot|St) = P(Ot, St)P(St)    P(St|St1) = P(St1, St)P(St1)   

    现在如果有足够多的人工标记数据,那么我们可以知道经过状态St有多少次记为#(St),以及经过这个状态而产生的输出Ot的次数,就可以知道有多少次#(St, Ot),那么上式⑤就为,

    P(Ot|St)  #(St, Ot)#(St)

    而这种数据集均是有标记的,因此为有监督的训练方法(Supervised Training),而对于式⑥我们直接利用统计语言模型P(ωi|ωi1)  #(ωi1, ωi)#(ωi1)即可得到

    另外,如果我们仅仅通过大量观测到的信号O1,O2,,On来计算(估计)模型参数,这种就为无监督的训练方法(Unsupervised Training),而这就要提到鲍姆-韦尔奇算法(Baum-Welch Algorithm)

    • 两个不同的HMM可以产生同样的信号O1,O2,,On,因此仅仅通过观测信号来推断产生它的HMM,这样就会可能有多个HMM适合,但是总会有一个模型参数Mθ2要比另一个Mθ1更加可能产生这个观测到的输出,而鲍姆-韦尔奇算法就是找到这个最有可能的参数Mθ^
      1. 我们找到一组能够产生输出序列O1,O2,,On的一组模型参数,记为Mθ0
      2. 由这个初始模型,接着利用Forward-Backward算法得到由某个可能的输入S1,S2,,SnS产生O1,O2,,On的概率P(O1,O2,,On|Mθ0),以及利用维特比算法(Viterbi Algorithm)得出那个最可能产生这个输出O1,O2,,On的状态序列,以及产生O1,O2,,On过程中所有可能路径及其概率,这样就可以得到新的模型参数Mθ1,至此完成了一次迭代,可以证明P(O1,O2,,On|Mθ1)>P(O1,O2,,On|Mθ0)
      3. 接着继续按照步骤2的过程迭代,直到模型质量不再明显提高为止
    • 值得一提的是,鲍姆-韦尔奇算法每一次迭代就是不断的估计新的HMM参数,而使得O1,O2,,On的概率达到最大化,这个过程被称之为期望值最大化(Expectation-Maximization)过程,但是EM过程只能保证收敛到一个局部最优解,而不能找打全局最优解,因此在相关的NLP的应用中,如词性标注(Part-of-Speech tagging),往往会使用人工标记数据这种有监督的训练方法,因为它能够收敛于全局最优解。当然,如果我们的目标函数为一个凸函数(只有一个最优点),这种情况EM过程就能找到最价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值