高斯混合模型(GMM)的期望最大化(EM)算法求解过程
题目描述
高斯混合模型(GMM)是一种用多个高斯分布的加权和来描述数据分布的聚类算法。假设观测数据由K个高斯分布生成,但每个数据点具体来自哪个分布未知(隐变量)。目标是通过EM算法迭代估计GMM的参数:每个高斯分布的权重、均值和协方差矩阵。
解题过程
- 问题定义
- 设观测数据 \(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) \]
其中 $ \theta = \{\pi_k, \mu_k, \Sigma_k\}_{k=1}^K $ 为参数,$ \pi_k $ 是混合权重(满足 $ \sum_k \pi_k = 1 $),$ \mathcal{N} $ 表示多元高斯分布。
-
引入隐变量与EM框架
- 定义隐变量 \(Z = \{z_{i,k}\}\),其中 \(z_{i,k} = 1\) 表示 \(x_i\) 属于第 \(k\) 个高斯分布,否则为0。
- EM算法通过交替执行以下两步迭代优化参数:
- E步(期望步):基于当前参数估计隐变量的后验分布 \(p(Z|X, \theta^{\text{old}})\)。
- M步(最大化步):根据E步的结果更新参数 \(\theta^{\text{new}} = \arg\max_{\theta} Q(\theta, \theta^{\text{old}})\),其中 \(Q\) 是完整数据的对数似然期望。
-
E步:计算隐变量后验(责任值)
- 对每个数据点 \(x_i\) 和每个高斯分布 \(k\),计算责任值 \(\gamma_{i,k}\)(即 \(z_{i,k}\) 的期望):
\[ \gamma_{i,k} = \frac{\pi_k^{\text{old}} \mathcal{N}(x_i | \mu_k^{\text{old}}, \Sigma_k^{\text{old}})}{\sum_{j=1}^K \pi_j^{\text{old}} \mathcal{N}(x_i | \mu_j^{\text{old}}, \Sigma_j^{\text{old}})} \]
- 这里需计算多元高斯分布的概率密度函数:
\[ \mathcal{N}(x_i | \mu_k, \Sigma_k) = \frac{1}{(2\pi)^{d/2} |\Sigma_k|^{1/2}} \exp\left(-\frac{1}{2}(x_i - \mu_k)^T \Sigma_k^{-1} (x_i - \mu_k)\right) \]
- 责任值 $ \gamma_{i,k} $ 表示数据点 $ x_i $ 由第 $ k $ 个高斯分布生成的概率。
- M步:更新参数
- 根据责任值重新估计参数,最大化似然函数:
- 更新混合权重:
- 根据责任值重新估计参数,最大化似然函数:
\[ \pi_k^{\text{new}} = \frac{1}{N} \sum_{i=1}^N \gamma_{i,k} \]
- **更新均值**:
\[ \mu_k^{\text{new}} = \frac{\sum_{i=1}^N \gamma_{i,k} x_i}{\sum_{i=1}^N \gamma_{i,k}} \]
- **更新协方差矩阵**:
\[ \Sigma_k^{\text{new}} = \frac{\sum_{i=1}^N \gamma_{i,k} (x_i - \mu_k^{\text{new}})(x_i - \mu_k^{\text{new}})^T}{\sum_{i=1}^N \gamma_{i,k}} \]
- 分母 $ N_k = \sum_{i=1}^N \gamma_{i,k} $ 可解释为属于第 $ k $ 个分布的“有效数据点数量”。
- 迭代与收敛
- 重复E步和M步,直到对数似然函数的变化小于阈值或达到最大迭代次数。
- 对数似然函数:
\[ \log p(X | \theta) = \sum_{i=1}^N \log \left( \sum_{k=1}^K \pi_k \mathcal{N}(x_i | \mu_k, \Sigma_k) \right) \]
关键点
- EM算法通过引入“软分配”的责任值避免硬分配的不确定性。
- 需注意协方差矩阵可能奇异的问题,可添加正则化项(如对角矩阵扰动)保证数值稳定性。