隐马尔可夫模型(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)$$

代码

Reference

  1. 知乎:一站式解决:隐马尔可夫模型(HMM)全过程推导及实现
  2. DNN-HMM related Experiments for THUHCSI Course : Speech Signal Processing