<机器学习> EM算法

文章参考来源:

CS229和PRML中关于EM的推导的过程。

当年写下面的笔记的时候有一些疏漏性的笔误,很影响后续的理解,再次进行修改,直接从考虑数据点独立性的EM算法入手。当前是做的算是很清晰了。
首先要回答问题。

为什么要用EM
一般是考虑去优化混合模型,例如GMM,由于似然函数中,在ln函数内有求和项,难以求导。我们认为这是由于数据点观测缺失造成的。完整的数据点还有另一个变量z,。以GMM为例,p(x,z)或者是p(x|z)的公式中没有求和项,且p(x,z)p(z)的结构都是清楚的(z表示为1-of-k的多项式分布),此即经典的用EM算法求解的问题。

EM的推导的过程
推导的时候有时候往往会产生一些符号混淆的问题,导致产生疑问,为什么每个观测数据点都有一个不同分布的隐变量?实际上公式推导过程中,依然是不同样本点的不同隐变量的分布是相同的。
下面都是带入GMM的思路来列的公式。x是我们观测到的一个样本点
\ln p(x) = \ln \sum_i p(x,z_i)
注意这里,是枚举了变量z的所有取值,也就是说,这里默认了z是离散变量,连续变量的情况下是同理的。
\ln \sum_i p(x,z_i) = \ln \sum_i q_i \space \frac{p(x,z_i)}{q_i}
这里,q_i代表累加式中的每个子项,可以有不同的系数和分母。
\ln \sum_i q_i \space \frac{p(x,z_i)}{q_i} \geq \sum_i q_i \ln \frac{p(x,z_i)}{q_i}
上式是用了琴生不等式,其恒成立有一个必须条件,也就是 \sum_i q_i =1,这个很容易满足,那么我们就用此办法让\ln中的求和项目给拿出来了,现在要做的事情就是,让Jensen不等式取等,然后优化p(x,z_i)中的概率参数。
这里就直接给出,取等的话就要取值为q_i= p(z_i|x,\theta)
到这里其实就已经完成了对EM算法的论述。回顾一下,我们只是重点找到一个q_i的合理的取值,来找到一个更好的优化目标,q_i\theta的值没有一点关系的!跟隐变量的分布也没啥关系。如果说是有关系的话,就是由于不同样本点x的值大小不同,所以其隐变量的后验概率的分布也不同。
而后验概率的计算公式为p(z_i | x) = \frac{p(z_i) p(x_i | z_i)}{p(x)},所以其先验就是由当前模型的参数\theta_{old}决定的。

文章内容:

1. 不考虑数据点独立性的EM算法

  • E步和M步骤内容
  • 收敛性证明(利用了jesson不等式以及KL散度)
  • Q函数的自然导出

2. 考虑数据点独立性的EM算法

  • E步和M步骤内容
  • 收敛性证明(利用了jesson不等式以及KL散度)
  • Q函数的自然导出

3. 将考虑数据点独立性的EM应用到GMM的参数估计上

  • Q函数导出
  • 迭代更新公式
  • 多元高斯分布常用求导公式
0002.jpg

优化过程:

对于核心式lnp(X,\theta) = L(q(z),\theta)+KL(q(z)||p(z|X,\theta),优化目标为\theta, 即X固定,lnp(X,\theta)\theta的函数,找到使其最大的\theta. 等号右边是q\theta的函数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。