高斯混合模型(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适用于重叠簇的聚类。