高斯混合模型(Gaussian Mixture Model, GMM)的期望最大化(EM)算法求解过程
字数 2377 2025-12-15 06:26:01

高斯混合模型(Gaussian Mixture Model, GMM)的期望最大化(EM)算法求解过程

题目描述
我们来讲解如何使用期望最大化(EM)算法来求解高斯混合模型的参数。假设我们有一组观测数据点,但我们不知道每个数据点具体来自哪个高斯分布,也不知道每个高斯分布的参数(均值、方差、权重)。EM算法能够在这种存在隐藏变量(即数据点所属的分布)的情况下,通过迭代优化,估计出所有高斯分布的参数。


详细解题过程

第一步:问题形式化与模型设定

  1. 高斯混合模型假设数据由 \(K\) 个高斯分布混合生成,每个分布称为一个“成分”(component)。
  2. 模型参数为:
    • 混合权重 \(\pi_k\),表示第 \(k\) 个成分的先验概率,满足 \(\sum_{k=1}^K \pi_k = 1, \pi_k \geq 0\)
    • 每个高斯分布的均值 \(\mu_k\) 和协方差矩阵 \(\Sigma_k\)(为简化,这里假设协方差矩阵为对角阵或球状)。
  3. 隐藏变量 \(z_i\) 表示第 \(i\) 个样本点所属的成分标签,\(z_i \in \{1,\dots,K\}\),其分布为 \(P(z_i = k) = \pi_k\)
  4. 给定 \(z_i = k\),观测数据 \(x_i\) 的条件概率为高斯分布:

\[ p(x_i | z_i = k) = \mathcal{N}(x_i | \mu_k, \Sigma_k) \]

第二步:完全数据的似然函数

  1. 如果隐藏变量 \(z_i\) 已知,则完全数据的似然函数为:

\[ p(X, Z | \theta) = \prod_{i=1}^N \prod_{k=1}^K [\pi_k \mathcal{N}(x_i | \mu_k, \Sigma_k)]^{\mathbb{I}(z_i = k)} \]

其中 \(\theta = \{\pi_k, \mu_k, \Sigma_k\}_{k=1}^K\)\(\mathbb{I}(\cdot)\) 是指示函数。
2. 完全数据的对数似然为:

\[ \log p(X, Z | \theta) = \sum_{i=1}^N \sum_{k=1}^K \mathbb{I}(z_i = k) [\log \pi_k + \log \mathcal{N}(x_i | \mu_k, \Sigma_k)] \]

第三步:E步(期望步)
由于 \(z_i\) 未知,我们计算其在当前参数估计下的后验分布(即“责任” responsibility):

\[\gamma_{ik} = P(z_i = k | x_i, \theta^{(t)}) = \frac{\pi_k^{(t)} \mathcal{N}(x_i | \mu_k^{(t)}, \Sigma_k^{(t)})}{\sum_{j=1}^K \pi_j^{(t)} \mathcal{N}(x_i | \mu_j^{(t)}, \Sigma_j^{(t)})} \]

这里 \(\theta^{(t)}\) 是第 \(t\) 次迭代的参数估计。
\(\gamma_{ik}\) 表示样本 \(i\) 属于成分 \(k\) 的“责任”或“软分配”,满足 \(\sum_{k=1}^K \gamma_{ik} = 1\)

第四步:M步(最大化步)
在E步得到 \(\gamma_{ik}\) 后,我们将其视为已知,最大化完全数据对数似然的期望(即Q函数):

\[Q(\theta, \theta^{(t)}) = \sum_{i=1}^N \sum_{k=1}^K \gamma_{ik} [\log \pi_k + \log \mathcal{N}(x_i | \mu_k, \Sigma_k)] \]

分别对 \(\pi_k, \mu_k, \Sigma_k\) 求偏导并令其为零,可得更新公式:

  1. 更新混合权重

\[ \pi_k^{(t+1)} = \frac{1}{N} \sum_{i=1}^N \gamma_{ik} \]

解释:新的权重是样本点属于成分 \(k\) 的平均责任。

  1. 更新均值

\[ \mu_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma_{ik} x_i}{\sum_{i=1}^N \gamma_{ik}} \]

解释:新的均值是样本点的加权平均,权重为责任。

  1. 更新协方差矩阵(以对角协方差为例,假设各维度独立):

\[ \sigma_k^2^{(t+1)} = \frac{\sum_{i=1}^N \gamma_{ik} (x_i - \mu_k^{(t+1)})^2}{\sum_{i=1}^N \gamma_{ik}} \]

对于多维情况,可类似计算协方差矩阵的每个元素。

第五步:迭代与收敛
重复E步和M步,直到参数变化小于某个阈值或对数似然的变化很小。
整个算法的收敛性有理论保证(每次迭代不降低对数似然),但可能收敛到局部最优,因此初始值(如用K-means初始化均值)对结果有影响。


小结
高斯混合模型的EM算法通过交替执行E步(计算责任)和M步(更新参数),在隐藏变量存在的情况下实现参数的最大似然估计。它本质上是“软聚类”方法,每个样本以概率 \(\gamma_{ik}\) 属于各成分,广泛应用于数据聚类、密度估计和生成模型。

高斯混合模型(Gaussian Mixture Model, GMM)的期望最大化(EM)算法求解过程 题目描述 我们来讲解如何使用期望最大化(EM)算法来求解高斯混合模型的参数。假设我们有一组观测数据点,但我们不知道每个数据点具体来自哪个高斯分布,也不知道每个高斯分布的参数(均值、方差、权重)。EM算法能够在这种存在隐藏变量(即数据点所属的分布)的情况下,通过迭代优化,估计出所有高斯分布的参数。 详细解题过程 第一步:问题形式化与模型设定 高斯混合模型假设数据由 \( K \) 个高斯分布混合生成,每个分布称为一个“成分”(component)。 模型参数为: 混合权重 \( \pi_ k \),表示第 \( k \) 个成分的先验概率,满足 \( \sum_ {k=1}^K \pi_ k = 1, \pi_ k \geq 0 \)。 每个高斯分布的均值 \( \mu_ k \) 和协方差矩阵 \( \Sigma_ k \)(为简化,这里假设协方差矩阵为对角阵或球状)。 隐藏变量 \( z_ i \) 表示第 \( i \) 个样本点所属的成分标签,\( z_ i \in \{1,\dots,K\} \),其分布为 \( P(z_ i = k) = \pi_ k \)。 给定 \( z_ i = k \),观测数据 \( x_ i \) 的条件概率为高斯分布: \[ p(x_ i | z_ i = k) = \mathcal{N}(x_ i | \mu_ k, \Sigma_ k) \] 第二步:完全数据的似然函数 如果隐藏变量 \( z_ i \) 已知,则完全数据的似然函数为: \[ p(X, Z | \theta) = \prod_ {i=1}^N \prod_ {k=1}^K [ \pi_ k \mathcal{N}(x_ i | \mu_ k, \Sigma_ k)]^{\mathbb{I}(z_ i = k)} \] 其中 \( \theta = \{\pi_ k, \mu_ k, \Sigma_ k\}_ {k=1}^K \),\( \mathbb{I}(\cdot) \) 是指示函数。 完全数据的对数似然为: \[ \log p(X, Z | \theta) = \sum_ {i=1}^N \sum_ {k=1}^K \mathbb{I}(z_ i = k) [ \log \pi_ k + \log \mathcal{N}(x_ i | \mu_ k, \Sigma_ k) ] \] 第三步:E步(期望步) 由于 \( z_ i \) 未知,我们计算其在当前参数估计下的后验分布(即“责任” responsibility): \[ \gamma_ {ik} = P(z_ i = k | x_ i, \theta^{(t)}) = \frac{\pi_ k^{(t)} \mathcal{N}(x_ i | \mu_ k^{(t)}, \Sigma_ k^{(t)})}{\sum_ {j=1}^K \pi_ j^{(t)} \mathcal{N}(x_ i | \mu_ j^{(t)}, \Sigma_ j^{(t)})} \] 这里 \( \theta^{(t)} \) 是第 \( t \) 次迭代的参数估计。 \( \gamma_ {ik} \) 表示样本 \( i \) 属于成分 \( k \) 的“责任”或“软分配”,满足 \( \sum_ {k=1}^K \gamma_ {ik} = 1 \)。 第四步:M步(最大化步) 在E步得到 \( \gamma_ {ik} \) 后,我们将其视为已知,最大化完全数据对数似然的期望(即Q函数): \[ Q(\theta, \theta^{(t)}) = \sum_ {i=1}^N \sum_ {k=1}^K \gamma_ {ik} [ \log \pi_ k + \log \mathcal{N}(x_ i | \mu_ k, \Sigma_ k) ] \] 分别对 \( \pi_ k, \mu_ k, \Sigma_ k \) 求偏导并令其为零,可得更新公式: 更新混合权重 : \[ \pi_ k^{(t+1)} = \frac{1}{N} \sum_ {i=1}^N \gamma_ {ik} \] 解释:新的权重是样本点属于成分 \( k \) 的平均责任。 更新均值 : \[ \mu_ k^{(t+1)} = \frac{\sum_ {i=1}^N \gamma_ {ik} x_ i}{\sum_ {i=1}^N \gamma_ {ik}} \] 解释:新的均值是样本点的加权平均,权重为责任。 更新协方差矩阵 (以对角协方差为例,假设各维度独立): \[ \sigma_ k^2^{(t+1)} = \frac{\sum_ {i=1}^N \gamma_ {ik} (x_ i - \mu_ k^{(t+1)})^2}{\sum_ {i=1}^N \gamma_ {ik}} \] 对于多维情况,可类似计算协方差矩阵的每个元素。 第五步:迭代与收敛 重复E步和M步,直到参数变化小于某个阈值或对数似然的变化很小。 整个算法的收敛性有理论保证(每次迭代不降低对数似然),但可能收敛到局部最优,因此初始值(如用K-means初始化均值)对结果有影响。 小结 高斯混合模型的EM算法通过交替执行E步(计算责任)和M步(更新参数),在隐藏变量存在的情况下实现参数的最大似然估计。它本质上是“软聚类”方法,每个样本以概率 \( \gamma_ {ik} \) 属于各成分,广泛应用于数据聚类、密度估计和生成模型。