高斯混合模型
字数 2968 2025-12-21 01:46:51

高斯混合模型

好的,我们来逐步学习高斯混合模型(Gaussian Mixture Model,简称GMM)这一概率模型。我将从基础概念开始,逐步深入到模型的表示、参数估计和应用。

1. 基本动机:为什么需要混合模型?

在现实世界中,数据往往不是来自单一的简单分布(如单个正态分布),而是可能来自多个不同的子群体(或称“成分”)。例如:

  • 一组人群的身高数据可能由男性和女性两个子群体混合而成,各自服从不同的正态分布。
  • 一个语音信号可能由多个发音单元混合。

如果我们强行用一个单一的正态分布去拟合这种数据,效果会很差。高斯混合模型就是用来描述这种由多个高斯分布(正态分布)以一定权重混合而成的数据生成机制。


2. 模型定义与概率表示

假设我们有 \(K\) 个高斯分布(称为“混合成分”),每个成分 \(k\) 有自己的均值 \(\mu_k\) 和协方差矩阵 \(\Sigma_k\)。另外,每个成分还有一个权重 \(\pi_k\),满足:

\[\pi_k \ge 0, \quad \sum_{k=1}^K \pi_k = 1 \]

权重 \(\pi_k\) 可理解为数据点来自第 \(k\) 个成分的先验概率。

数据生成过程(想象这样生成一个样本 \(x\)):

  1. 先随机选择一个成分 \(k\),选择概率为 \(\pi_k\)
  2. 从第 \(k\) 个高斯分布 \(\mathcal{N}(\mu_k, \Sigma_k)\) 中采样得到 \(x\)

因此,观测数据 \(x\)概率密度函数是各个成分密度的加权和:

\[p(x) = \sum_{k=1}^K \pi_k \cdot \mathcal{N}(x \mid \mu_k, \Sigma_k) \]

其中 \(\mathcal{N}(x \mid \mu_k, \Sigma_k)\) 是多变量高斯密度函数:

\[\mathcal{N}(x \mid \mu_k, \Sigma_k) = \frac{1}{(2\pi)^{d/2} |\Sigma_k|^{1/2}} \exp\left( -\frac{1}{2} (x - \mu_k)^\top \Sigma_k^{-1} (x - \mu_k) \right) \]

\(d\)\(x\) 的维数)


3. 隐变量与完全数据似然

在GMM中,我们实际上观察不到每个数据点具体来自哪个成分。这个“成分标签”可以看作一个隐变量(latent variable),记为 \(z\)。通常用 1-of-K 编码 表示:\(z\) 是一个 \(K\) 维向量,其中只有一个元素为1,其余为0。例如 \(z_k = 1\) 表示数据来自第 \(k\) 个成分。

隐变量 \(z\) 的分布是简单的分类分布:

\[p(z_k = 1) = \pi_k \]

给定 \(z\) 后,\(x\) 的条件分布就是对应的高斯分布:

\[p(x \mid z_k = 1) = \mathcal{N}(x \mid \mu_k, \Sigma_k) \]

完全数据似然(即同时看到 \(x\)\(z\) 时的概率)可写成:

\[p(x, z) = p(z) \, p(x \mid z) = \prod_{k=1}^K \left[ \pi_k \cdot \mathcal{N}(x \mid \mu_k, \Sigma_k) \right]^{z_k} \]

因为只有 \(z_k = 1\) 的那一项会生效。


4. 参数估计:EM算法

我们不知道参数 \(\theta = \{ \pi_k, \mu_k, \Sigma_k \}_{k=1}^K\),需要通过观测数据 \(X = \{ x_1, \dots, x_N \}\) 来估计。直接最大化对数似然 \(\log p(X \mid \theta)\) 比较困难,因为对数里有求和(来自混合):

\[\log p(X \mid \theta) = \sum_{n=1}^N \log \left( \sum_{k=1}^K \pi_k \mathcal{N}(x_n \mid \mu_k, \Sigma_k) \right) \]

这通常没有解析解。

期望最大化(EM)算法 是解决这类含隐变量模型参数估计的经典方法。它通过迭代两步来求解:

E步(Expectation)

计算隐变量 \(z\) 的后验概率(称为“责任” responsibility):

\[\gamma(z_{nk}) = p(z_k = 1 \mid x_n) = \frac{\pi_k \mathcal{N}(x_n \mid \mu_k, \Sigma_k)}{\sum_{j=1}^K \pi_j \mathcal{N}(x_n \mid \mu_j, \Sigma_j)} \]

这表示在已知当前参数下,数据点 \(x_n\) 来自第 \(k\) 个成分的概率。

M步(Maximization)

利用 E 步计算出的“责任”重新估计参数,使期望似然最大:

\[N_k = \sum_{n=1}^N \gamma(z_{nk}) \]

\[ \pi_k^{\text{new}} = \frac{N_k}{N} \]

\[ \mu_k^{\text{new}} = \frac{1}{N_k} \sum_{n=1}^N \gamma(z_{nk}) \, x_n \]

\[ \Sigma_k^{\text{new}} = \frac{1}{N_k} \sum_{n=1}^N \gamma(z_{nk}) \, (x_n - \mu_k^{\text{new}})(x_n - \mu_k^{\text{new}})^\top \]

反复迭代 E 步和 M 步直到收敛(参数变化很小或似然值稳定)。


5. 模型选择与过拟合

  • 成分数 \(K\) 的选择:通常用信息准则(如 AIC、BIC)或交叉验证来选择。BIC 倾向于选择更简单的模型,可防止过拟合。
  • 协方差矩阵的限制:为了减少参数,可对 \(\Sigma_k\) 加约束,如设为对角矩阵甚至标量矩阵(各向同性)。

6. 应用与扩展

  • 聚类:GMM 是软聚类(soft clustering)的一种方法,每个点以概率属于各类。
  • 密度估计:用混合模型拟合复杂的数据分布。
  • 生成模型:学习到GMM后,可从中采样生成新数据。
  • 扩展
    • 可加入贝叶斯框架(变分推断求解)。
    • 可推广到其他分布混合(如混合学生t分布,更稳健)。

总结一下,高斯混合模型 是一个用多个高斯分布加权和来描述复杂数据分布的隐变量概率模型,其参数通常用 EM 算法估计,广泛应用于聚类、密度估计和生成建模。

高斯混合模型 好的,我们来逐步学习 高斯混合模型 (Gaussian Mixture Model,简称GMM)这一概率模型。我将从基础概念开始,逐步深入到模型的表示、参数估计和应用。 1. 基本动机:为什么需要混合模型? 在现实世界中,数据往往不是来自单一的简单分布(如单个正态分布),而是可能来自多个不同的子群体(或称“成分”)。例如: 一组人群的身高数据可能由男性和女性两个子群体混合而成,各自服从不同的正态分布。 一个语音信号可能由多个发音单元混合。 如果我们强行用一个单一的正态分布去拟合这种数据,效果会很差。 高斯混合模型 就是用来描述这种由多个高斯分布(正态分布)以一定权重混合而成的数据生成机制。 2. 模型定义与概率表示 假设我们有 \( K \) 个高斯分布(称为“混合成分”),每个成分 \( k \) 有自己的均值 \( \mu_ k \) 和协方差矩阵 \( \Sigma_ k \)。另外,每个成分还有一个权重 \( \pi_ k \),满足: \[ \pi_ k \ge 0, \quad \sum_ {k=1}^K \pi_ k = 1 \] 权重 \( \pi_ k \) 可理解为数据点来自第 \( k \) 个成分的先验概率。 数据生成过程 (想象这样生成一个样本 \( x \)): 先随机选择一个成分 \( k \),选择概率为 \( \pi_ k \)。 从第 \( k \) 个高斯分布 \( \mathcal{N}(\mu_ k, \Sigma_ k) \) 中采样得到 \( x \)。 因此,观测数据 \( x \) 的 概率密度函数 是各个成分密度的加权和: \[ p(x) = \sum_ {k=1}^K \pi_ k \cdot \mathcal{N}(x \mid \mu_ k, \Sigma_ k) \] 其中 \( \mathcal{N}(x \mid \mu_ k, \Sigma_ k) \) 是多变量高斯密度函数: \[ \mathcal{N}(x \mid \mu_ k, \Sigma_ k) = \frac{1}{(2\pi)^{d/2} |\Sigma_ k|^{1/2}} \exp\left( -\frac{1}{2} (x - \mu_ k)^\top \Sigma_ k^{-1} (x - \mu_ k) \right) \] (\( d \) 是 \( x \) 的维数) 3. 隐变量与完全数据似然 在GMM中,我们实际上观察不到每个数据点具体来自哪个成分。这个“成分标签”可以看作一个 隐变量 (latent variable),记为 \( z \)。通常用 1-of-K 编码 表示:\( z \) 是一个 \( K \) 维向量,其中只有一个元素为1,其余为0。例如 \( z_ k = 1 \) 表示数据来自第 \( k \) 个成分。 隐变量 \( z \) 的分布是简单的分类分布: \[ p(z_ k = 1) = \pi_ k \] 给定 \( z \) 后,\( x \) 的条件分布就是对应的高斯分布: \[ p(x \mid z_ k = 1) = \mathcal{N}(x \mid \mu_ k, \Sigma_ k) \] 完全数据似然 (即同时看到 \( x \) 和 \( z \) 时的概率)可写成: \[ p(x, z) = p(z) \, p(x \mid z) = \prod_ {k=1}^K \left[ \pi_ k \cdot \mathcal{N}(x \mid \mu_ k, \Sigma_ k) \right]^{z_ k} \] 因为只有 \( z_ k = 1 \) 的那一项会生效。 4. 参数估计:EM算法 我们不知道参数 \( \theta = \{ \pi_ k, \mu_ k, \Sigma_ k \} {k=1}^K \),需要通过观测数据 \( X = \{ x_ 1, \dots, x_ N \} \) 来估计。直接最大化对数似然 \(\log p(X \mid \theta)\) 比较困难,因为对数里有求和(来自混合): \[ \log p(X \mid \theta) = \sum {n=1}^N \log \left( \sum_ {k=1}^K \pi_ k \mathcal{N}(x_ n \mid \mu_ k, \Sigma_ k) \right) \] 这通常没有解析解。 期望最大化(EM)算法 是解决这类含隐变量模型参数估计的经典方法。它通过迭代两步来求解: E步(Expectation) 计算隐变量 \( z \) 的后验概率(称为“责任” responsibility): \[ \gamma(z_ {nk}) = p(z_ k = 1 \mid x_ n) = \frac{\pi_ k \mathcal{N}(x_ n \mid \mu_ k, \Sigma_ k)}{\sum_ {j=1}^K \pi_ j \mathcal{N}(x_ n \mid \mu_ j, \Sigma_ j)} \] 这表示在已知当前参数下,数据点 \( x_ n \) 来自第 \( k \) 个成分的概率。 M步(Maximization) 利用 E 步计算出的“责任”重新估计参数,使期望似然最大: \[ N_ k = \sum_ {n=1}^N \gamma(z_ {nk}) \] \[ \pi_ k^{\text{new}} = \frac{N_ k}{N} \] \[ \mu_ k^{\text{new}} = \frac{1}{N_ k} \sum_ {n=1}^N \gamma(z_ {nk}) \, x_ n \] \[ \Sigma_ k^{\text{new}} = \frac{1}{N_ k} \sum_ {n=1}^N \gamma(z_ {nk}) \, (x_ n - \mu_ k^{\text{new}})(x_ n - \mu_ k^{\text{new}})^\top \] 反复迭代 E 步和 M 步直到收敛(参数变化很小或似然值稳定)。 5. 模型选择与过拟合 成分数 \( K \) 的选择 :通常用信息准则(如 AIC、BIC)或交叉验证来选择。BIC 倾向于选择更简单的模型,可防止过拟合。 协方差矩阵的限制 :为了减少参数,可对 \( \Sigma_ k \) 加约束,如设为对角矩阵甚至标量矩阵(各向同性)。 6. 应用与扩展 聚类 :GMM 是软聚类(soft clustering)的一种方法,每个点以概率属于各类。 密度估计 :用混合模型拟合复杂的数据分布。 生成模型 :学习到GMM后,可从中采样生成新数据。 扩展 : 可加入贝叶斯框架(变分推断求解)。 可推广到其他分布混合(如混合学生t分布,更稳健)。 总结一下, 高斯混合模型 是一个用多个高斯分布加权和来描述复杂数据分布的隐变量概率模型,其参数通常用 EM 算法估计,广泛应用于聚类、密度估计和生成建模。