隐马尔可夫模型(Hidden Markov Model)
$$\lambda = f(\boldsymbol{\pi}, \boldsymbol{A}, \boldsymbol{B})$$
- 隐藏状态初始概率分布 $\boldsymbol{\pi}$
- 状态转移概率矩阵 $\boldsymbol{A}$
- 观测状态概率矩阵 $\boldsymbol{B}$
三个基本问题
1. 概率计算:
已知系统输出 $\boldsymbol{Y}$ 及模型 $\lambda = f(\boldsymbol{\pi}, \boldsymbol{A}, \boldsymbol{B})$ 计算产生 $Y$ 的概率 $P(\boldsymbol{Y}|\lambda) $
2. 参数估计:训练
给定若干输出(训练样本)$Y$,确定模型 $\lambda = f(\boldsymbol{\pi}, \boldsymbol{A}, \boldsymbol{B})$ 的参数
3. 最优状态序列搜索:识别
已知输出 $\boldsymbol{Y}$ 及模型$\lambda = f(\boldsymbol{\pi}, \boldsymbol{A}, \boldsymbol{B})$,估计系统产生 $\boldsymbol{Y}$ 最可能的状态序列 $\boldsymbol{X}$
两个假设
1. 齐次马尔可夫假设:即任意时刻的状态只依赖于前一时刻的状态,与其他时刻的状态无关(初始时刻的状态由参数 $\boldsymbol{\pi}$ 决定)
2. 观测独立假设:即任意时刻的观测只依赖于该时刻的状态,与其他无关
概率计算
1. 前向概率
$$\alpha_t(j)=P(o_1o_2 \dots o_{t-1}o{t}, q_t=s_j|\lambda)$$
2. 后向概率
$$\beta_t(j)=P(o_1o_2 \dots o_{t-1}o{t} | q_t=s_j, \lambda)$$
Viterbi 算法
维特比算法是基于动态规划的求序列最短路径的方法
- 输入:HMM模型 $\lambda = f(\boldsymbol{\pi}, \boldsymbol{A}, \boldsymbol{B})$,观测序列$O = o_1o_2 \dots o_T $
- 输出:最️有可能的隐藏状态序列
Baum-Welch 算法
$$O = o_1o_2 \dots o_T \ \Rightarrow \ \lambda = \mathop{\arg\min}_{\lambda} P(O|\lambda)$$
代码