参考: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
前向算法总结:
后向算法总结:
模型参数学习问题(学习问题):
给定观测序列,估计模型的参数,使得在该模型下观测序列出现的概率最大。
求解方法为基于EM算法的鲍姆-韦尔奇算法。
鲍姆-韦尔奇算法总结:
预测问题(解码问题):
给定模型和观测序列,求在给定观测序列的条件下,最可能出现的状态序列。
求解方法为基于动态规划的维特比算法。
维特比算法总结: