高斯混合模型(GMM)的参数估计与EM算法求解过程
题目描述
高斯混合模型(GMM)是一种用多个高斯分布的线性组合来描述复杂数据分布的聚类算法。假设观测数据由K个高斯分布生成,但每个数据点具体来自哪个分布未知(隐变量)。目标是通过观测数据估计每个高斯分布的参数(均值、协方差、混合权重)。由于隐变量的存在,直接使用最大似然估计困难,需采用期望最大化(EM)算法迭代求解。
解题过程
- 问题建模
- 设观测数据为 \(X = \{x_1, x_2, ..., x_N\}\),其中 \(x_i \in \mathbb{R}^d\)。
- 隐变量 \(Z = \{z_1, z_2, ..., z_N\}\),\(z_i\) 表示 \(x_i\) 所属的高斯分布编号,\(z_i \in \{1, 2, ..., K\}\)。
- 第k个高斯分布的参数为均值 \(\mu_k\)、协方差矩阵 \(\Sigma_k\)、混合权重 \(\pi_k\)(满足 \(\sum_{k=1}^K \pi_k = 1\))。
- 数据似然函数为:
\[ p(X|\theta) = \prod_{i=1}^N \sum_{k=1}^K \pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k) \]
其中 $ \theta = \{\pi_k, \mu_k, \Sigma_k\}_{k=1}^K $。
- EM算法框架
EM算法通过交替执行E步(求隐变量期望)和M步(最大化期望似然)迭代优化参数:- E步:基于当前参数 \(\theta^{\text{old}}\),计算隐变量的后验概率(责任值 \(\gamma(z_{ik})\)):
\[ \gamma(z_{ik}) = \frac{\pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k)}{\sum_{j=1}^K \pi_j \mathcal{N}(x_i|\mu_j, \Sigma_j)} \]
表示数据点 $ x_i $ 属于第k个分量的概率。
- M步:利用E步得到的责任值更新参数,最大化期望似然函数:
\[ \begin{aligned} \pi_k^{\text{new}} &= \frac{1}{N} \sum_{i=1}^N \gamma(z_{ik}), \\ \mu_k^{\text{new}} &= \frac{\sum_{i=1}^N \gamma(z_{ik}) x_i}{\sum_{i=1}^N \gamma(z_{ik})}, \\ \Sigma_k^{\text{new}} &= \frac{\sum_{i=1}^N \gamma(z_{ik}) (x_i - \mu_k^{\text{new}})(x_i - \mu_k^{\text{new}})^T}{\sum_{i=1}^N \gamma(z_{ik})}. \end{aligned} \]
- 收敛性判断
重复E步和M步直到对数似然函数的变化小于阈值或参数变化趋稳:
\[ \log p(X|\theta) = \sum_{i=1}^N \log \sum_{k=1}^K \pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k). \]
- 示例说明
假设有一维数据 \(X = \{1.2, 1.8, 3.1, 4.5\}\),设定K=2。初始化参数:- \(\pi_1 = \pi_2 = 0.5\), \(\mu_1 = 1.0, \mu_2 = 4.0\), \(\Sigma_1 = \Sigma_2 = 1.0\)。
- E步:计算每个数据点的责任值。例如对 \(x_1 = 1.2\):
\[ \gamma(z_{11}) = \frac{0.5 \times \mathcal{N}(1.2|1.0,1.0)}{0.5 \times \mathcal{N}(1.2|1.0,1.0) + 0.5 \times \mathcal{N}(1.2|4.0,1.0)} \approx 0.95. \]
- M步:更新参数。例如更新 \(\mu_1\):
\[ \mu_1 = \frac{0.95 \times 1.2 + 0.90 \times 1.8 + 0.10 \times 3.1 + 0.02 \times 4.5}{0.95 + 0.90 + 0.10 + 0.02} \approx 1.6. \]
迭代至收敛后,两个高斯分布将分别拟合数据中的低值簇和高值簇。
- 关键点
- EM算法保证每次迭代后似然函数不下降,但可能收敛到局部最优,因此需多次随机初始化。
- 协方差矩阵可约束为对角矩阵以简化计算,避免过拟合。
- GMM常用于聚类、密度估计,且是生成式模型,可采样新数据。