隐马尔可夫模型(HMM)是离散状态空间模型,参数为 $(\pi,A,B)$。解决评估、学习和译码三个问题。
动态模型分类
| 模型 | 状态变量特点 |
|---|---|
| HMM | 离散 |
| Kalman 滤波 | 连续、线性 |
| 粒子滤波 | 连续、非线性 |
HMM 假设
齐次 Markov 假设: $$p(i_{t+1}|i_t,\cdots,i_1)=p(i_{t+1}|i_t)$$
观测独立假设: $$p(o_t|i_t,\cdots,i_1)=p(o_t|i_t)$$
三个问题
| 问题 | 目标 | 算法 |
|---|---|---|
| 评估 | $p(O|\lambda)$ | 前向后向 |
| 学习 | $\mathop{argmax}_\lambda p(O|\lambda)$ | EM (Baum-Welch) |
| 译码 | $\mathop{argmax}_I p(I|O,\lambda)$ | Viterbi |
前向算法
$$\alpha_t(i)=p(o_1,\cdots,o_t,i_t=q_i|\lambda)$$
递推:
$$\alpha_{t+1}(j)=\sum_{i=1}^Nb_j(o_{t+1})a_{ij}\alpha_t(i)$$
$$p(O|\lambda)=\sum_{i=1}^N\alpha_T(i)$$
后向算法
$$\beta_t(i)=p(o_{t+1},\cdots,o_T|i_t=q_i)$$
递推:
$$\beta_t(i)=\sum_{j=1}^Nb_j(o_{t+1})a_{ij}\beta_{t+1}(j)$$
Viterbi 算法
$$\delta_{t+1}(j)=\max_{1\le i\le N}\delta_t(i)a_{ij}b_j(o_{t+1})$$
$$\psi_{t+1}(j)=\mathop{argmax}{1\le i\le N}\delta_t(i)a{ij}$$
推断任务
| 任务 | 公式 |
|---|---|
| 滤波 | $p(z_t|x_{1:t})=C\alpha_t(z_t)$ |
| 平滑 | $p(z_t|x_{1:T})=C\alpha_t(z_t)\beta_t(z_t)$ |
| 预测 | $p(z_{t+1}|x_{1:t})=\sum_{z_t}p(z_{t+1}|z_t)p(z_t|x_{1:t})$ |
张芷铭的个人博客
Comments