连续马尔科夫模型
连续马尔科夫模型中,状态不再是一个个离散值,而是可以是\(\mathbb{R}^d\)中的任何数,即状态存在于连续空间。最简单的例子是过程 \[ s_t = s_{t-1} + \epsilon_t,\ \ \epsilon_t \sim N(0, aI) \]
本讲主要讨论的是最基本的连续状态空间模型,称为线性高斯马尔科夫模型,又称为Kalman滤波器 \[ \underbrace{s_t = C_{s_{t-1}} + \epsilon_{t-1}}_{\rm latent\ process},\ \ \ \underbrace{x_t = D_{s_t} + \varepsilon_t}_{\rm observed\ process} \]
其中
- \(s_t \in \mathbb{R}^p\)是连续状态马尔科夫模型,状态隐藏不能被观察到
- \(x_t \in \mathbb{R}^d\)是观察到的连续值
- 底层马尔科夫过程的噪声\(\epsilon_t \sim N(0, Q)\)
- 测量中得到的噪声\(\varepsilon_t \sim N(0,V)\)
这一问题中要学习的只是根据观测序列学习状态序列。之前离散HMM中的\(\pi, A, B\)都不需要学习
Kalman滤波
Kalman滤波要解决的问题是:给定观测到的序列\(x_1, x_2, \ldots\)和模型 \[ s_{t+1}|s_t \sim N(C_{s_t}, Q),\ \ x_t|s_t \sim N(D_{s_t}, V) \] 学习其背后隐含状态的后验分布\(p(s_t|x_1, \ldots, x_t)\)
根据Bayes定律,有 \[ \begin{align*} p(s_t | x_1, \ldots, x_t) &\propto p(x_t|s_t)p(x_1, \ldots, x_t) \\ &= p(x_t|s_t)p(x_t|x_1, \ldots, x_{t-1}) \\ &\propto p(x_t|s_t)p(x_t|s_t)p(s_t|x_1, \ldots, x_{t-1})\\ &\propto p(x_t|s_t)p(s_t|x_1, \ldots, x_{t-1}) \end{align*} \] 其中先验概率可以表示为边际分布的积分形式 \[ \begin{align*} p(s_t|x_1, \ldots, x_{t-1}) &= \int p(s_t, s_{t-1}|x_1,\ldots, x_{t-1})ds_{t-1} \\ &= \int p(s_t|s_{t-1})p(s_{t-1}|x_1, \ldots, x_{t-1})ds_{t-1} \end{align*} \]
因此综上所述,问题可以分解为 \[ p(s_t|x_1, \ldots, x_t) \propto \underbrace{p(x_t|s_t)}_{N(D_{s_t}, V)}\int \underbrace{p(s_t|s_{t-1})}_{N(C_{s_{t-1}},Q)}\underbrace{p(s_{t-1}|x_1, \ldots, x_{t-1})}_{?} \] 可以假设该位置分布也符合高斯分布\(N(\mu, \Sigma)\)。注意到高斯分布的一个性质是高斯分布的边缘概率密度还是高斯分布,即 \[ \int N(s_t|C_{s_{t-1}}, Q)N(s_{t-1}|\mu, \Sigma)ds_{t-1} = N(s_t|C\mu, Q + C\Sigma C^\mathsf{T}) \] 因此代回原来的先验概率,有 \[ p(s_t|x_1, \ldots, x_t) \propto N(x_t|D_{s_t}, V)N(s_t|C\mu, Q + C\Sigma C^\mathsf{T}) = N(s_t|\mu', \Sigma') \] 其中 \[ \begin{align*} \Sigma' &= [(Q+C\Sigma C^\mathsf{T})^{-1} + D^\mathsf{T}V^{-1}D]^{-1} \\ \mu' &= \Sigma' (D^\mathsf{T}V^{-1}x_t + (Q+C\Sigma C^\mathsf{T})^{-1}C\mu) \end{align*} \]
因此,如果先验分布是高斯分布,那么后验分布也是高斯分布,因此可以假设初始状态满足高斯分布,即 \[ p(s_0) \sim N(0, I) \]
预测的原理类似 \[ \begin{align*} p(x_{t+1}|x_1, \ldots, x_t) &= \int p(x_{t+1}|s_{t+1})p(s_{t+1}|x_1, \ldots, x_t)ds_{t+1} \\ &= \int \underbrace{p(x_{t+1}|s_{t+1})}_{N(x_{t+1}|D_{s_{t+1}}, V)} \int \underbrace{p(s_{t+1}|s_{t})}_{N(s_{t+1}|C_{s_{t}}, Q)} \underbrace{p(s_{t}|x_1, \ldots, x_t)}_{N(s_{t}|\mu', \Sigma')}ds_tds_{t+1} \end{align*} \]
整个算法的运作流程为 1. 设置初始状态分布\(p(s_0) = N(0, I)\) 2. 观测到新的观测值前预测 \[ x_t \sim N(\mu_t^x, \Sigma_t^x) \] 3. 观测到新的\(x_t\)以后更新 \[ p(s_t|x_1, \ldots , x_t) = N(\mu_t^s, \Sigma_t^s) \]