高斯混合模型(GMM)的期望最大化(EM)算法求解过程
字数 2647 2025-11-07 12:32:50

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

题目描述
高斯混合模型(GMM)是一种用多个高斯分布的加权和来描述数据分布的聚类算法。假设观测数据由K个高斯分布生成,但每个数据点具体来自哪个分布未知(隐变量)。EM算法通过迭代优化,估计GMM的参数(各高斯分布的权重、均值和协方差)。题目要求详细讲解EM算法在GMM中的求解步骤,包括E步(求隐变量后验概率)和M步(更新参数)的数学推导与计算流程。


解题过程

  1. 问题定义
    • 设观测数据集 \(X = \{x_1, x_2, ..., x_N\}\),每个 \(x_i \in \mathbb{R}^d\)
    • GMM的概率密度函数为:

\[ p(x_i|\theta) = \sum_{k=1}^K \pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k) \]

 其中:
 - $ \pi_k $:第k个高斯分布的权重,满足 $ \sum_{k=1}^K \pi_k = 1 $。
 - $ \mu_k, \Sigma_k $:第k个高斯分布的均值和协方差矩阵。
 - $ \theta = \{\pi_k, \mu_k, \Sigma_k\}_{k=1}^K $ 为待估参数。
  1. 引入隐变量与EM算法框架
    • 定义隐变量 \(Z = \{z_1, ..., z_N\}\),其中 \(z_i \in \{1, 2, ..., K\}\) 表示 \(x_i\) 来自的高斯分布编号。
    • E步:基于当前参数 \(\theta^{(t)}\),计算隐变量的后验概率(责任值 \(\gamma(z_{ik})\)):

\[ \gamma(z_{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)})} \]

 这里 $ \gamma(z_{ik}) $ 表示数据点 $ x_i $ 属于第k个高斯分布的概率。
  • M步:最大化完全数据的对数似然期望(Q函数),更新参数:

\[ \theta^{(t+1)} = \arg\max_{\theta} \mathbb{E}_{Z|X,\theta^{(t)}}[\log p(X,Z|\theta)] \]

  1. M步的参数更新公式推导
    • Q函数的具体形式为:

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

  • 更新权重 \(\pi_k\)
    引入拉格朗日乘子处理约束 \(\sum_k \pi_k = 1\),求解以下优化问题:

\[ \frac{\partial}{\partial \pi_k} \left[ Q(\theta, \theta^{(t)}) + \lambda(1 - \sum_{k=1}^K \pi_k) \right] = 0 \]

 解得:  

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

  • 更新均值 \(\mu_k\)
    对Q函数中与 \(\mu_k\) 相关的项求导:

\[ \frac{\partial Q}{\partial \mu_k} = \sum_{i=1}^N \gamma(z_{ik}) \Sigma_k^{-1} (x_i - \mu_k) = 0 \]

 解得:  

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

  • 更新协方差 \(\Sigma_k\)
    对Q函数中与 \(\Sigma_k\) 相关的项求导(使用矩阵微分):

\[ \frac{\partial Q}{\partial \Sigma_k} = \sum_{i=1}^N \gamma(z_{ik}) \left[ -\frac{1}{2} \Sigma_k^{-1} + \frac{1}{2} \Sigma_k^{-1} (x_i - \mu_k)(x_i - \mu_k)^T \Sigma_k^{-1} \right] = 0 \]

 解得:  

\[ \Sigma_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma(z_{ik}) (x_i - \mu_k^{(t+1)})(x_i - \mu_k^{(t+1)})^T}{\sum_{i=1}^N \gamma(z_{ik})} \]

  1. 算法流程总结

    • 输入:数据 \(X\),高斯分布数量 \(K\),迭代次数 \(T\)
    • 初始化:随机设置 \(\pi_k^{(0)}, \mu_k^{(0)}, \Sigma_k^{(0)}\)
    • 循环迭代(直到收敛或达到 \(T\)):
      1. E步:用当前参数计算所有 \(\gamma(z_{ik})\)
      2. M步:用更新公式计算 \(\pi_k^{(t+1)}, \mu_k^{(t+1)}, \Sigma_k^{(t+1)}\)
    • 输出:参数 \(\theta\) 和每个数据点的聚类标签(取 \(\gamma(z_{ik})\) 最大的k)。
  2. 关键点说明

    • EM算法保证似然函数单调递增,但可能收敛到局部最优,因此需多次随机初始化。
    • 协方差矩阵 \(\Sigma_k\) 需为正定矩阵,实践中可添加正则项避免奇异性。
    • 责任值 \(\gamma(z_{ik})\) 软分配机制使GMM适用于重叠簇的聚类。
高斯混合模型(GMM)的期望最大化(EM)算法求解过程 题目描述 高斯混合模型(GMM)是一种用多个高斯分布的加权和来描述数据分布的聚类算法。假设观测数据由K个高斯分布生成,但每个数据点具体来自哪个分布未知(隐变量)。EM算法通过迭代优化,估计GMM的参数(各高斯分布的权重、均值和协方差)。题目要求详细讲解EM算法在GMM中的求解步骤,包括E步(求隐变量后验概率)和M步(更新参数)的数学推导与计算流程。 解题过程 问题定义 设观测数据集 \( X = \{x_ 1, x_ 2, ..., x_ N\} \),每个 \( x_ i \in \mathbb{R}^d \)。 GMM的概率密度函数为: \[ p(x_ i|\theta) = \sum_ {k=1}^K \pi_ k \mathcal{N}(x_ i|\mu_ k, \Sigma_ k) \] 其中: \( \pi_ k \):第k个高斯分布的权重,满足 \( \sum_ {k=1}^K \pi_ k = 1 \)。 \( \mu_ k, \Sigma_ k \):第k个高斯分布的均值和协方差矩阵。 \( \theta = \{\pi_ k, \mu_ k, \Sigma_ k\}_ {k=1}^K \) 为待估参数。 引入隐变量与EM算法框架 定义隐变量 \( Z = \{z_ 1, ..., z_ N\} \),其中 \( z_ i \in \{1, 2, ..., K\} \) 表示 \( x_ i \) 来自的高斯分布编号。 E步 :基于当前参数 \( \theta^{(t)} \),计算隐变量的后验概率(责任值 \( \gamma(z_ {ik}) \)): \[ \gamma(z_ {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)})} \] 这里 \( \gamma(z_ {ik}) \) 表示数据点 \( x_ i \) 属于第k个高斯分布的概率。 M步 :最大化完全数据的对数似然期望(Q函数),更新参数: \[ \theta^{(t+1)} = \arg\max_ {\theta} \mathbb{E}_ {Z|X,\theta^{(t)}}[ \log p(X,Z|\theta) ] \] M步的参数更新公式推导 Q函数的具体形式为: \[ Q(\theta, \theta^{(t)}) = \sum_ {i=1}^N \sum_ {k=1}^K \gamma(z_ {ik}) \left[ \log \pi_ k + \log \mathcal{N}(x_ i|\mu_ k, \Sigma_ k) \right ] \] 更新权重 \( \pi_ k \) : 引入拉格朗日乘子处理约束 \( \sum_ k \pi_ k = 1 \),求解以下优化问题: \[ \frac{\partial}{\partial \pi_ k} \left[ Q(\theta, \theta^{(t)}) + \lambda(1 - \sum_ {k=1}^K \pi_ k) \right ] = 0 \] 解得: \[ \pi_ k^{(t+1)} = \frac{1}{N} \sum_ {i=1}^N \gamma(z_ {ik}) \] 更新均值 \( \mu_ k \) : 对Q函数中与 \( \mu_ k \) 相关的项求导: \[ \frac{\partial Q}{\partial \mu_ k} = \sum_ {i=1}^N \gamma(z_ {ik}) \Sigma_ k^{-1} (x_ i - \mu_ k) = 0 \] 解得: \[ \mu_ k^{(t+1)} = \frac{\sum_ {i=1}^N \gamma(z_ {ik}) x_ i}{\sum_ {i=1}^N \gamma(z_ {ik})} \] 更新协方差 \( \Sigma_ k \) : 对Q函数中与 \( \Sigma_ k \) 相关的项求导(使用矩阵微分): \[ \frac{\partial Q}{\partial \Sigma_ k} = \sum_ {i=1}^N \gamma(z_ {ik}) \left[ -\frac{1}{2} \Sigma_ k^{-1} + \frac{1}{2} \Sigma_ k^{-1} (x_ i - \mu_ k)(x_ i - \mu_ k)^T \Sigma_ k^{-1} \right ] = 0 \] 解得: \[ \Sigma_ k^{(t+1)} = \frac{\sum_ {i=1}^N \gamma(z_ {ik}) (x_ i - \mu_ k^{(t+1)})(x_ i - \mu_ k^{(t+1)})^T}{\sum_ {i=1}^N \gamma(z_ {ik})} \] 算法流程总结 输入 :数据 \( X \),高斯分布数量 \( K \),迭代次数 \( T \)。 初始化 :随机设置 \( \pi_ k^{(0)}, \mu_ k^{(0)}, \Sigma_ k^{(0)} \)。 循环迭代 (直到收敛或达到 \( T \)): E步 :用当前参数计算所有 \( \gamma(z_ {ik}) \)。 M步 :用更新公式计算 \( \pi_ k^{(t+1)}, \mu_ k^{(t+1)}, \Sigma_ k^{(t+1)} \)。 输出 :参数 \( \theta \) 和每个数据点的聚类标签(取 \( \gamma(z_ {ik}) \) 最大的k)。 关键点说明 EM算法保证似然函数单调递增,但可能收敛到局部最优,因此需多次随机初始化。 协方差矩阵 \( \Sigma_ k \) 需为正定矩阵,实践中可添加正则项避免奇异性。 责任值 \( \gamma(z_ {ik}) \) 软分配机制使GMM适用于重叠簇的聚类。