模块二:序列模型与消息传递——HMM 的图视角

2.1 隐马尔可夫模型的形式化

当数据具有时间顺序结构时,隐变量自然地构成序列。隐马尔可夫模型假设观测序列 $\mathbf{X} = (x_1, x_2, \dots, x_T)$ 由一个不可观测的离散状态序列 $\mathbf{Z} = (z_1, z_2, \dots, z_T)$ 生成,其中每个 $z_t$ 取值于有限集合 $\{1, 2, \dots, K\}$。模型基于两条条件独立假设:

  1. 一阶马尔可夫性:当前状态仅依赖于前一时刻的状态,即 $p(z_t \mid z_{1:t-1}) = p(z_t \mid z_{t-1})$。
  2. 观测独立性:当前观测仅依赖于当前状态,即 $p(x_t \mid z_{1:t}, x_{1:t-1}) = p(x_t \mid z_t)$。

模型参数 $\theta = (\pi, A, \phi)$ 包含:

HMM 的联合分布可分解为:

$$p(\mathbf{X}, \mathbf{Z} \mid \theta) = p(z_1 \mid \pi) \prod_{t=2}^T p(z_t \mid z_{t-1}, A) \prod_{t=1}^T p(x_t \mid z_t, \phi). \tag{10}$$

2.2 因子图与和积算法

HMM 的概率图模型可表示为链式因子图。因子图是一种二分图,由变量节点(圆形)和因子节点(方形)组成,边只连接不同类型的节点,用于表示全局函数的因式分解结构。在 HMM 中,变量节点对应隐状态 $z_t$ 和观测 $x_t$;因子节点对应局部函数:初始分布因子 $f_1(z_1) = p(z_1)p(x_1|z_1)$,以及相邻转移发射因子 $f_t(z_{t-1}, z_t) = p(z_t|z_{t-1})p(x_t|z_t)$。HMM 的链式因子图结构如下所示:

HMM 链式因子图 f1 f2 f3 ft ··· z1 z2 z3 zT ··· x1 x2 x3 xT ··· 因子节点 隐状态 观测状态

在此图上计算后验边缘分布 $p(z_t \mid \mathbf{X}, \theta)$ 可通过和积算法高效完成,其具体形式即前向–后向算法。

前向消息 $\alpha_t(i)$ 定义为观测到前缀 $x_{1:t}$ 且时刻 $t$ 状态为 $i$ 的联合概率:

$$\alpha_t(i) := p(x_{1:t}, z_t = i \mid \theta). \tag{11}$$

递推公式的推导如下:利用全概率公式将前一时刻状态 $z_{t-1}$ 的所有可能取值展开,并利用条件独立假设进行因式分解:

$$\begin{aligned} \alpha_t(j) &= p(x_{1:t}, z_t = j \mid \theta) \\ &= \sum_{i=1}^K p(x_{1:t-1}, z_{t-1}=i, x_t, z_t=j \mid \theta) \\ &= \sum_{i=1}^K p(x_{1:t-1}, z_{t-1}=i \mid \theta) \, p(z_t=j \mid z_{t-1}=i, \theta) \, p(x_t \mid z_t=j, \theta) \\ &= \left( \sum_{i=1}^K \alpha_{t-1}(i) A_{ij} \right) p(x_t \mid z_t = j, \phi). \end{aligned} \tag{12}$$

初始条件为 $\alpha_1(i) = \pi_i \, p(x_1 \mid z_1 = i, \phi)$。

后向消息 $\beta_t(i)$ 定义为给定当前状态 $z_t = i$ 时,未来观测序列 $x_{t+1:T}$ 的条件概率:

$$\beta_t(i) := p(x_{t+1:T} \mid z_t = i, \theta). \tag{13}$$

类似地,通过将下一时刻状态 $z_{t+1}$ 展开可得递推公式:

$$\begin{aligned} \beta_t(i) &= \sum_{j=1}^K p(z_{t+1}=j, x_{t+1}, x_{t+2:T} \mid z_t=i, \theta) \\ &= \sum_{j=1}^K p(z_{t+1}=j \mid z_t=i, \theta) \, p(x_{t+1} \mid z_{t+1}=j, \theta) \, p(x_{t+2:T} \mid z_{t+1}=j, \theta) \\ &= \sum_{j=1}^K A_{ij} \, p(x_{t+1} \mid z_{t+1}=j, \phi) \, \beta_{t+1}(j). \end{aligned} \tag{14}$$

边界条件为 $\beta_T(i) = 1$(对所有 $i$),因为未来为空序列时条件概率为 1。

观测序列的似然值可直接从任意前向消息中得到:$p(\mathbf{X} \mid \theta) = \sum_{i=1}^K \alpha_T(i)$。

前向消息 $\alpha_t(j)$ 的因式分解原理

前向递推旨在利用 $\alpha_{t-1}(i)$ 推导 $\alpha_t(j)$。我们从展开联合概率 $p(x_{1:t-1}, z_{t-1}=i, x_t, z_t=j \mid \theta)$ 开始。根据概率的链式法则,按时间顺序将其展开:

$$\begin{aligned} p(&x_{1:t-1}, z_{t-1}=i, x_t, z_t=j \mid \theta) \\ &= p(x_{1:t-1}, z_{t-1}=i \mid \theta) \\ &\quad \cdot p(z_t=j \mid x_{1:t-1}, z_{t-1}=i, \theta) \\ &\quad \cdot p(x_t \mid x_{1:t-1}, z_{t-1}=i, z_t=j, \theta) \end{aligned}$$

联合概率被拆分成了三个因子的乘积。接下来利用 HMM 的假设进行化简:

  1. 第二个因子 $p(z_t=j \mid x_{1:t-1}, z_{t-1}=i, \theta)$:根据一阶马尔可夫性,在给定 $z_{t-1}=i$ 的条件下,$z_t$ 与历史观测 $x_{1:t-1}$ 独立。因此剔除 $x_{1:t-1}$,得到 $p(z_t=j \mid z_{t-1}=i, \theta) = A_{ij}$。
  2. 第三个因子 $p(x_t \mid x_{1:t-1}, z_{t-1}=i, z_t=j, \theta)$:根据观测独立性,在给定 $z_t=j$ 的条件下,$x_t$ 与历史 $x_{1:t-1}$ 和 $z_{t-1}=i$ 均独立。剔除多余条件,得到 $p(x_t \mid z_t=j, \theta)$。
  3. 第一个因子 $p(x_{1:t-1}, z_{t-1}=i \mid \theta)$:这正是前向消息 $\alpha_{t-1}(i)$ 的定义。

代回原式即得因式分解结果:$\alpha_{t-1}(i) \cdot A_{ij} \cdot p(x_t \mid z_t=j, \theta)$。

后向消息 $\beta_t(i)$ 的因式分解原理

后向递推则是反向利用链式法则,从未来推向现在。展开联合概率 $p(z_{t+1}=j, x_{t+1}, x_{t+2:T} \mid z_t=i, \theta)$。根据链式法则:

$$\begin{aligned} p(&z_{t+1}=j, x_{t+1}, x_{t+2:T} \mid z_t=i, \theta) \\ &= p(z_{t+1}=j \mid z_t=i, \theta) \\ &\quad \cdot p(x_{t+1} \mid z_{t+1}=j, z_t=i, \theta) \\ &\quad \cdot p(x_{t+2:T} \mid z_{t+1}=j, x_{t+1}, z_t=i, \theta) \end{aligned}$$

同样利用 HMM 假设化简:

  1. 第一个因子 $p(z_{t+1}=j \mid z_t=i, \theta)$:直接等于状态转移矩阵元素 $A_{ij}$。
  2. 第二个因子 $p(x_{t+1} \mid z_{t+1}=j, z_t=i, \theta)$:根据观测独立性,观测 $x_{t+1}$ 仅依赖于当前状态 $z_{t+1}=j$,等于 $p(x_{t+1} \mid z_{t+1}=j, \theta)$。
  3. 第三个因子 $p(x_{t+2:T} \mid z_{t+1}=j, x_{t+1}, z_t=i, \theta)$:利用马尔可夫性,一旦知道 $t+1$ 时刻的状态,未来观测便与更早的历史无关,等于 $p(x_{t+2:T} \mid z_{t+1}=j, \theta)$。这正是后向消息 $\beta_{t+1}(j)$。

代回原式即得:$A_{ij} \cdot p(x_{t+1} \mid z_{t+1}=j, \theta) \cdot \beta_{t+1}(j)$。

总结:因式分解的本质都在于利用条件独立性剔除概率条件中冗余的变量,从而将高维联合概率递归地降维分解。

2.3 边缘后验与充分统计量

在 HMM 的学习中,我们的目标是更新初始分布 $\pi$、转移矩阵 $A$ 和发射参数 $\phi$。由于隐变量序列 $\mathbf{Z}$ 不可观测,参数更新必须依赖于隐变量在给定观测下的后验期望。具体而言,初始分布 $\pi_i$ 依赖于 $z_1 = i$ 的概率;转移矩阵 $A_{ij}$ 依赖于 $z_t = i$ 且 $z_{t+1} = j$ 的期望频次;发射参数则依赖于 $z_t = i$ 的期望占比。因此,我们需要计算单时刻状态后验 $\gamma$ 和相邻时刻联合后验 $\xi$ 作为充分统计量。

结合前向与后向消息,可得单时刻状态后验概率(通常记作 $\gamma$):

$$\gamma_t(i) := p(z_t = i \mid \mathbf{X}, \theta) = \frac{p(\mathbf{X}, z_t=i \mid \theta)}{p(\mathbf{X} \mid \theta)} = \frac{\alpha_t(i) \beta_t(i)}{\sum_{k=1}^K \alpha_t(k) \beta_t(k)}. \tag{15}$$

上式分母对于任意时刻 $t$ 均恒等于全序列概率 $p(\mathbf{X} \mid \theta)$。相邻时刻的联合后验(记作 $\xi$)则为:

$$\begin{aligned} \xi_t(i,j) &:= p(z_t = i, z_{t+1} = j \mid \mathbf{X}, \theta) \\ &= \frac{\alpha_t(i) \, A_{ij} \, p(x_{t+1} \mid z_{t+1}=j, \phi) \, \beta_{t+1}(j)}{\sum_{i'=1}^K \sum_{j'=1}^K \alpha_t(i') \, A_{i'j'} \, p(x_{t+1} \mid z_{t+1}=j', \phi) \, \beta_{t+1}(j')}. \end{aligned} \tag{16}$$

2.4 Baum–Welch 算法(HMM 上的 EM)

Baum–Welch 算法本质上是 EM 算法在 HMM 上的具体实例。EM 算法的核心思想是在隐变量不可观测时,通过最大化完全数据对数似然的期望来迭代更新参数。

在 E 步,我们固定当前参数 $\theta^{\text{old}}$,计算隐变量 $\mathbf{Z}$ 在给定观测 $\mathbf{X}$ 下的后验分布。由于 HMM 的结构,这个后验分布完全由单时刻边缘后验 $\gamma_t(i)$ 和相邻时刻联合后验 $\xi_t(i,j)$ 刻画。

在 M 步,我们最大化完全数据对数似然的期望,即 $Q$ 函数:

$$Q(\theta, \theta^{\text{old}}) = \mathbb{E}_{\mathbf{Z} \sim p(\cdot \mid \mathbf{X}, \theta^{\text{old}})} [\log p(\mathbf{X}, \mathbf{Z} \mid \theta)]. \tag{17}$$

这个形式可以直接从公式 (7) 中的广义 M 步推导而来。这里的 $Q$ 函数可以理解为:在已知观测数据和当前参数估计的情况下,隐变量所有可能取值的"加权"对数似然。

为了理解公式 (18) 的推导,我们需要引入指示函数。指示函数 $\mathbb{I}(A)$ 定义为:当事件 $A$ 发生时取值为 1,否则为 0。在 HMM 的完全数据对数似然中,例如 $\log \pi_{z_1}$,可以写为 $\sum_{i=1}^K \mathbb{I}(z_1=i) \log \pi_i$。同理,$\log A_{z_t, z_{t+1}}$ 可以写为 $\sum_{i=1}^K \sum_{j=1}^K \mathbb{I}(z_t=i, z_{t+1}=j) \log A_{ij}$。

当我们在后验分布 $p(\mathbf{Z} \mid \mathbf{X}, \theta^{\text{old}})$ 下取期望时,指示函数的期望就等于对应事件发生的后验概率。即:

利用这一性质,完全数据对数似然的期望就可以自然地转化为由 $\gamma$ 和 $\xi$ 作为权重的累加形式,即:

$$\begin{aligned} Q(\theta, \theta^{\text{old}}) &= \sum_{i=1}^K \gamma_1(i) \log \pi_i \\ &\quad + \sum_{t=1}^{T-1} \sum_{i=1}^K \sum_{j=1}^K \xi_t(i,j) \log A_{ij} \\ &\quad + \sum_{t=1}^T \sum_{i=1}^K \gamma_t(i) \log p(x_t \mid z_t=i, \phi). \end{aligned} \tag{18}$$

在归一化约束 $\sum_i \pi_i = 1$,$\sum_j A_{ij} = 1$ 下,使用拉格朗日乘数法可得闭式更新:

$$\pi_i^{(\text{new})} = \gamma_1(i), \qquad A_{ij}^{(\text{new})} = \frac{\sum_{t=1}^{T-1} \xi_t(i,j)}{\sum_{t=1}^{T-1} \gamma_t(i)}. \tag{19}$$

对于离散观测 $x_t \in \{1,\dots,V\}$,发射分布更新为:

$$B_{iv}^{(\text{new})} = \frac{\sum_{t=1}^T \gamma_t(i) \, \mathbb{I}(x_t = v)}{\sum_{t=1}^T \gamma_t(i)}. \tag{20}$$

若观测服从高斯分布 $x_t \mid z_t=i \sim \mathcal{N}(\boldsymbol{\mu}_i, \boldsymbol{\Sigma}_i)$,由于均值和协方差恰好是其充分统计量,因此更新公式具有闭式解,与 GMM 的 M 步完全一致:

$$\begin{aligned} \boldsymbol{\mu}_i^{(\text{new})} &= \frac{\sum_{t=1}^T \gamma_t(i) x_t}{\sum_{t=1}^T \gamma_t(i)}, \\ \boldsymbol{\Sigma}_i^{(\text{new})} &= \frac{\sum_{t=1}^T \gamma_t(i) (x_t - \boldsymbol{\mu}_i^{(\text{new})})(x_t - \boldsymbol{\mu}_i^{(\text{new})})^\top}{\sum_{t=1}^T \gamma_t(i)}. \end{aligned} \tag{21}$$

更一般地,如果观测分布属于指数族分布,即 $p(x \mid \theta) = h(x) \exp\bigl(\eta(\theta)^\top T(x) - A(\theta)\bigr)$,其中 $T(x)$ 为充分统计量,那么 M 步的更新通常可以通过令充分统计量的模型期望等于观测到的充分统计量后验加权平均来求解。例如,对于泊松分布发射模型,参数 $\lambda_i$ 的更新为 $\lambda_i^{(\text{new})} = \frac{\sum_t \gamma_t(i) x_t}{\sum_t \gamma_t(i)}$。这种基于充分统计量的通用性,使得 EM 算法在广义线性模型等场景中具有广泛的应用。

以上步骤清晰展示了 HMM 上的 EM 如何将复杂的序列似然优化问题简化为对充分统计量的简单累加与归一化。