EM & VI
这部分就不自己详细写到网上了,我自己倒是在本子上记了很多笔记。因为这块基本上资料讲的很清楚,我这篇博客就是分享一些总结和资料吧 :)
首先推荐的是CS229 Andrew的EM课和讲义,然后可以再看Bloomberg的EM,他这个EM是直接按照VI框架讲的,最后再去找点VI的资料就可以了。
Introduction
在贝叶斯的视角下,首先要知道的是
in words:
求posterior的过程是Inference,通过likelihood去求参数的过程是Learning,我们拥有的是prior先验概率,以及可以通过积分求出的evidence。
有了后验分布,我们就可以做很多事了,包括machine learning基本的各种任务,分类预测之类的,这也就是贝叶斯派的特点,能将频率派的优化问题(求极值点)转为积分问题。
而有时候这个积分问题是intractable的,我们又会转为优化问题去求解,这就是Variational Inference要做的事情了。
此外还需要补充一个重要的概念,完全的数据集(complete data set)和不完全数据集(incomplete data set),因为我们现在讨论的是无监督的,含有隐变量的模型。下面是一些符号说明,数据集为 .
- 为了叙述方便,我们将用 表示数据集:
并用 来表示相应的隐变量:
- 一个 的观测称为不完全数据集
- 一个 的观测称为完全数据集
但是我们只能得到不完全数据集,因为是无监督,如果有了 的信息的话,就相当于有了标签,那就是监督学习了 :)
在含有隐变量的模型中,上面的式子转换为了:
通过上面的叙述,不难得到下面的两点结论:
- 当我们有了参数,那么Inference就会变得简单
- 当我们有了Conditional distribution(posterior),那么Learning就会变得简单
而这其实也就是EM的核心idea之一,模型中出现隐变量时,似然就不是对数凹的了(之前的很多目标都是一些指数族的分布,都是对数凹的),且直接求导也有困难,这时我们采用的方法就是EM算法。只用上面说的两点idea,直接去迭代的话,收敛性和有效性是得不到保证的,EM的方法的思想是:虽然现在的似然不是对数凹的,但是利用log函数的凹性,我们可以得到对数似然函数的一个凹的下界,对数似然函数和这个下界之间差的是一个KL散度,这个下界其实是一个双变量的泛函(变量为似然函数里的参数和我们估计的隐变量分布),对每个变量都是凹的,我们可以用坐标下降的思路,交替地优化——这就是E和M步做的事了。而这就保证了我们可以收敛到似然函数的一个极值点。
变分往往意味着我们要对某个函数做近似。变分推断的出现是因为我们发现基于现在的模型的分布假设,推断参数太难了,因此从一个“变分分布族”中找到一个和现在的分布最像的,来近似我们当前的分布。这个分布族只要足够丰富,我们的近似效果应该是比较好的。变分这个名字就来自于我们从这个分布族中选择一个具体的分布(分布是个函数)来最小化和目标分布的差异(如KL散度),即优化KL这样的泛函。然后基于mean-field假设可以进一步将变分分布进行近似,得到一个类似于EM的对每个参数交替优化的过程,这叫做变分EM法。
EM
VI
EM & VI
EM和VI的关系:
不难发现,EM其实就是把KL divergence取为0了特殊情况。