在这一章中,我们通过密度估计引出期望最大化算法。
在非监督式学习的情况下,给出一组训练集 {x(1),…,x(m)} ,我们试图通过指定一个联合分布 p(x(i),z(i))=p(x(i)|z(i))p(z(i)) 在数据集上建模。其中变量 z(i) 服从参数为 ϕ 的多项式分布且 x(i)|z(i) 服从均值为 μj 方差为 ∑j 的高斯分布,用k表示 z(i) 可能取值的总数。所以我们的模型表明,每个 x(i) 都来自k个基于 z(i) 的高斯分布的其中一个。这被称为混合高斯模型。
需要注意的是 z(i) 是隐藏随机变量,因为它们是无法被观测的,实际是我们假设出来的。因此我们的估计会比监督式学习的情况要更加困难。组成模型的参数有 ϕ,μ,Σ ,为了估计它们的值,我们可以写出数据的似然估计:
如果你对方程的各个参数求偏导,并令偏导为零联立方程组试图去解决该问题。你会发现极大似然估计在这种封闭形式下是无解的。
随机变量
z(i)
表示输入
x(i)
来自k个高斯分布中的哪一个。如果我们知道隐藏变量
z(i)
的值,那么这个极大似然估计问题就会变得很简单。具体而言,我们可以将似然估计改写成下面的形式:
求极大似然估计可得:
当我们假设 z(i) 是已知的时候,除了 z(i) 代替了类标签y的作用,极大似然估计求解出的值和高斯判别分析模型的参数值几乎是一致的。然而在我们的密度估计模型中,隐藏参数 z(i) 实际是未知的,我们该如何解决这个问题呢?
期望最大化算法(EM算法)是一个内含两个步骤的循环算法。对于我们的问题,在E阶段,它首先猜测 z(i) 的值;在M阶段,根据上一步的猜测,更新模型的参数值。具体步骤如下:
循环直至收敛:{
(E步骤)循环每个
i,j
,有:
(M步骤)更新模型参数:
}
在E阶段,通过贝叶斯公式我们求解通过 x(i) 等参数求解 z(i) 的后验概率:
p(x(i)|z(i)=j;μ,Σ) 样本所属的高斯分布在 x(i) 点处的概率密度计算得出; p(z(i)=j;ϕ) 由 ϕj 表示,E阶段中计算出的 w(i)j 是对 z(i) 的软猜测。
期望最大化算法是k-means算法的延伸,它只是将“硬”聚类分配 c(i) 替换成了“软”分配 w(i)j 。与k-means类似,它也可能嵌入局部最优解,所有你在具体应用时,最好多换几次初始参数。