1. GMM介绍
样本的分布有时候比较复杂,无法用单个分布来表示。
从几何角度:GMM是多个高斯分布的加权平均,可能由多个不同的分布叠加而成。$p(X) = \sum\limits_{i=k}^K\alpha_kN(\mu_k, \Sigma_k)$, 其中 $\sum\limits_{k=1}^K\alpha_k=1$.
从混合模型角度:除了观测变量$X$;引入隐变量$Z$,$Z$代表对应的样本$X$是属于哪一个高斯分布,GMM的$Z$是离散的随机变量,概率分布为(以下$\sum\limits_{k=1}^Kp_k=1$)
Z | C_1 | C_2 | … | C_K |
---|---|---|---|---|
p(z) | p_1 | p_2 | … | p_K |
如果GMM由K个高斯分布构成,每个样本x既可能属于分布$C_1$, …, 也可能属于$C_K$,只不过属于不同高斯分布的概率不同。
- 从生成模型角度:对每个样本$x_i$的生成过程如下
- 首先按照概率$p_k$选择隐变量Z的分类,假设选择的结果是第h类$Z_i=C_h$,
- 然后用第h类对应的高斯分布$N(\mu_h,\Sigma_h)$采样得到样本$x_i$
x的概率密度函数:
可以发现混合模型角度与几何角度是一致的。
2. GMM的求解
2.1. 极大似然无法得到解析解
观测数据$X={x_1, x_2,\dots, x_n}$,完整数据,$(X,Z) = {(x_1,z_1), (x_2, z_2), \dots, (x_n, z_n)}$参数$\theta={p_1,\dots,p_K,\mu_1,\dots,\mu_K, \Sigma_1,\dots,\Sigma_K}$,如果用极大似然估计直接求解参数
但是,极大似然估计是无法得到我们想要的参数结果(因为有隐变量的存在):
log函数的后面是一个连加的格式(GMM的隐变量导致的),所以对$\hat{\theta}_{MLE}$求偏导,无法得到解析解。况且,高维的高斯分布本身就很负杂,再乘以一个参数$p_k$,所以更加难以求解。
2.2. 用EM算法求解
含有隐变量Z的混合模型,用EM求解是一种流行且优美的方法。本文用EM算法求解GMM的learning问题。回顾EM算法:
2.2.1. E-step
其中$\sum\limits_{i=1}^n\log p(x_i,z_i|\theta)$展开会有n项,每一项均与$\prod\limits_{i=1}^n p(z_i|x_i,\theta^{(t)})$相乘(这里以第一项为例)
所以,将n项加起来,Q函数可简化为
回顾一下:
所以Q函数可以继续写为
我们要求$\theta$其实是${p_1,\dots,p_K,\mu_1,\dots,\mu_K, \Sigma_1, \Sigma_K}$,$\theta^{(t)}$都是已知的。
2.2.2. M-step
因为$\theta^{(t)}$是已知的,所以$Q(\theta,\theta^{(t)})$的后一项可以认为是已知的,记为$p(z_i|x_i,\theta^{(t)})$. 所以E-step的Q函数可以简写为
这样就得到了$\theta$,我们即将在M-step优化$\theta$,以$p_k$为例:
$p_k$是有约束优化,使用拉格朗日乘子法:
所以有$p_k^{(t+1)} = \frac{1}{n}\sum\limits_{i=1}^n p(z_i=C_K|x_i, \theta^{(t)})$,$p^{(t+1)} = (p^{(t+1)}_1, \dots, p^{(t+1)}_k)$
3. References
- 机器学习-白板推导系列(十一)-高斯混合模型GMM(Gaussian Mixture Model)
- PRML Chapter 9.2