HMM-隐马尔可夫模型

参考:https://www.cnblogs.com/pinard/p/6945257.html

HMM

1. 什么问题需要HMM模型

使⽤HMM 模型时我们的问题⼀般有这两个特征:

  • 问题是基于序列的,⽐如时间序列,或者状态序列。
  • 问题中有两类数据
    • ⼀类序列数据是可以观测到的,即观测序列;
    • 另⼀类数据是不能观察到的,即隐藏状态序列,简称状态序列。

2. HMM定义

  • 隐藏状态集合:$Q={q_1,q_2,…,q_N}$, 观察状态集合:$V={v_1,v_2,…,v_M}$

  • 对于长度为$T$的序列,对应状态序列和观测序列为:

  • 两个重要假设

    • 齐次马尔科夫链假设:任意时刻的隐藏状态只依赖于前一个隐藏状态,表示为:

      对应状态转移矩阵:$A=[a_{ij}]_{N\times N}$

    • 观测独立性假设:任意时刻的观察状态只依赖于当前时刻的隐藏状态,观测状态生成概率为:

  • 一个HMM可表示为三元组:$\lambda = (A,B,\prod)$

3. HMM三个基本问题

  • 估计观测序列概率(似然问题):

    • 给定模型和观测序列,计算观测序列在该模型下出现的概率

    • 求解方法为前向后向算法(均为动态规划):可参考https://www.cnblogs.com/pinard/p/6955871.html

    • 前向算法总结:

      image.png

    • 后向算法总结:

      image.png

  • 模型参数学习问题(学习问题):

    • 给定观测序列,估计模型的参数,使得在该模型下观测序列出现的概率最大。

    • 求解方法为基于EM算法的鲍姆-韦尔奇算法

    • 鲍姆-韦尔奇算法总结:

      image.png

  • 预测问题(解码问题):

    • 给定模型和观测序列,求在给定观测序列的条件下,最可能出现的状态序列。

    • 求解方法为基于动态规划的维特比算法

    • 维特比算法总结:

      1582182663650