EM算法

/ 机器学习 / 没有评论 / 188浏览

本节内容基于Andrew Ng的机器学习讲义

混合高斯模型

  给定一个训练集\(\{x^{(1)},...,x^{(m)}\}\),我们想要对这个训练集的数据用一个联合分布\(p(x^{(i)},z^{(i)})\)来建模。其中\(z^{(i)}~PN(\phi)\),即\(p(z^{(i)}=j)=\phi_j(\phi_j\ge0,\sum_{i=1}^{k}\phi_i=1)\)。而且\(x^{(i)}|z^{(i)}\)~\(\mathcal{N}(\mu_j,\Sigma_j)\)

  因此,这个模型假设我们有k个高斯分布\(z^{(i)}\), 而数据是根据概率随机选择其中一个高斯分布\(z^{(i)}\)随机产生的\(x^{(i)}\)。这就叫做高斯混合模型

  而我们要解决的问题就是给定一个训练集和假设k个高斯分布,求出这k个高斯分布的概率,和他们各自的期望和方差。即我们需要对每一个高斯分布求出\(\phi_i,\mu_i,\Sigma_i\)。

  之前我们通常采用极大似然估计来估计参数的值。对这个问题,我们可以写出它的似然估计函数: $$\begin{align}\mathcal{l}(\phi,\mu,\Sigma)\ &=\ \sum_{k=1}^{m}log\ p(x_{(i)};\phi,\mu,\Sigma)\\ &=\ \sum_{i=1}^{m}log\sum_{z^{(i)}=1}^{k}p(x^{(i)}|z^{(i)};\mu,\Sigma)p(z^{(i)};\phi) \end{align} $$   要找到这个似然函数最大值,就把\(\ l\ \)对各个参数求偏导求导并置为0。但是我们会发现无法求解出这三个参数,因此我们需要另外一种方法来得到这三个参数。

Jensen不等式

在介绍实际内容之前,首先介绍一个后面会用到的不等式。

Jensen不等式:\(f\)是一个凸函数,X是一个随机变量。那么有$$E[f(X)]\ge f(E[X])$$

下面是对这个不等式的一个简单的几何解释 alt   假设随机变量X分别以0.5,0.5的概率取a和b。那么E(X)就应该是ab的中点,过这个中点做一条线垂直于坐标轴,与函数图像的交点的纵坐标就是\(f(E[X])\)。

  而\(E[f(X)]=0.5f(a)+0.5f(b)\),所有\(E[f(X)]\)可以在\(f(a),f(b)\)的中点处。在图像上就可以很明显看到:$$E[f(x)]\ge f(E[X])$$