ref:http://www.crescentmoon.info/?p=709#more-709
变分推断是一类用于贝叶斯估计和机器学习领域中近似计算复杂(intractable)积分的技术,它广泛应用于各种复杂模型的推断。本文是学习PRML第10章的一篇笔记,错误或不足的地方敬请指出。
先给出问题描述。记得在上一篇EM的文章中,我们有一个观察变量 X={x{1},…,x{m}} 和隐藏变量 Z={z{1},…,z{m}} , 整个模型 p(X,Z) 是个关于变量 X,Z 的联合分布,我们的目标是得到后验分布 P(Z|X) 的一个近似分布。
在之前介绍过Gibbs Sampling这一类Monte Carlo算法,它们的做法就是通过抽取大量的样本估计真实的后验分布。而变分推断不同,与此不同的是,变分推断限制近似分布的类型,从而得到一种局部最优,但具有确定解的近似后验分布。
之前在EM算法的介绍中我们有似然的式子如下:
这里公式中不再出现参数 θ ,因为参数不再是固定的值,而变成了随机变量,所以也是隐藏变量,包括在 Z 之内了。
这里的KL散度 KL(q||p) 描述了估计分布与真实分布的差别。当 KL(q||p)=0 时,俩分布就是相同的。因为我们不知道真实的后验分布是啥,所以直接最小化KL是做不到的,但是我们可以通过最大化 L(q) 来达到这个目的。可以认为 L(q) 越大,则模型对数据拟合程度越好。由于 lnp(X)≥L(q) 始终成立,所以 L(q) 被称作证据下界(evidence lower bound),见图1。
为了极大化 L(q) ,我们需要选择合适的函数 q ,使其便于计算。要注意到 L(q) 并非普通的函数,而是以函数 q 为自变量的函数,这就是泛函。泛函可以看成是函数概念的推广,而变分方法是处理泛函的数学领域,和处理函数的普通微积分相对。变分法最终寻求的是极值函数:它们使得泛函取得极大或极小值。
如果参数之间具有相互依赖关系(mutually dependent),求积分时会比较麻烦。所以我们为 q(Z) 的分布加一个限制条件,将 Z 分为 M 组变量,组与组之间变量相互独立,这样 q 的分布就可以分解为
根据以上假设,我们来最大化下界 L(q) ,因为假设 qi(Zi) 分布之间都是独立的,所以我们依次轮流来优化,以 qj(Zj) 为例(为了简单起见,缩写为 qj )。
我们也可以直接衡量模型的下界。在实际应用中,变分下界可以直接判断算法是否收敛,也可以通过每次迭代都不会降低这一点来判断算法推导和实现的部分是否存在问题。
变分推断和Gibbs sampling其实挺相似的:
参考:
1.《Pattern_Recognition_and_Machine_Learning》第10章
2.http://en.wikipedia.org/wiki/Variational_Bayesian_methods