变分推断
变分
对于普通的函数f(x),我们可以认为f是一个关于x的一个实数算子,其作用是将实数x映射到实数f(x)。那么类比这种模式,假设存在函数算子F,它是关于f(x)的函数算子,可以将f(x)映射成实数F(f(x)) 。对于f(x)我们是通过改变x来求出f(x)的极值,而在变分中这个x会被替换成一个函数y(x),我们通过改变x来改变y(x),最后使得F(y(x))求得极值。
变分:指的是泛函的变分。打个比方,从A点到B点有无数条路径,每一条路径都是一个函数吧,这无数条路径,每一条函数(路径)的长度都是一个数,那你从这无数个路径当中选一个路径最短或者最长的,这就是求泛函的极值问题。有一种老的叫法,函数空间的自变量我们称为宗量(自变函数),当宗量变化了一点点而导致了泛函值变化了多少,这其实就是变分。变分,就是微分在函数空间的拓展,其精神内涵是一致的。求解泛函变分的方法主要有古典变分法、动态规划和最优控制。
变分推断
推了这么多公式,让我们先喘口气,来看看这些公式究竟在做什么?
对于一类数据x(无论是音频还是图片),对它们进行编码后得到的特征数据往往服从某种分布q(z),z为隐变量,q(z)这个隐含分布我们无法得知,但是我们可以通过现有数据X来推断出q(z),即P(z|x)。KL散度是用来衡量两个分布之间的距离,当距离为0时,表示这两个分布完全一致。P(x)不变,那么想让KL(q(z)||P(z|x))越小,即让ELOB越大,反之亦然。因为KL≥0,所以logP(x)≥ELOB。这个结论还可以通过下面的公式同样得到:
这段公式推导的关键在于中间的不等式部分,即Jensen不等式:
变分贝叶斯(Variational Bayes)
变分贝叶斯学习算法通常也是变分贝叶斯期望最大(Variantional Bayesian Expectation Maximization)VBEM算法,是广义化的EM算法。
变分贝叶斯是一类用于贝叶斯估计和机器学习领域中近似计算复杂(intractable)积分的技术。它主要应用于复杂的统计模型中,这种模型一般包括三类变量:观测变量(observed variables, data),未知参数(parameters)和潜变量(latent variables)。在贝叶斯推断中,参数和潜变量统称为不可观测变量(unobserved variables)。变分贝叶斯方法主要是两个目的:
-
近似不可观测变量的后验概率,以便通过这些变量作出统计推断。近似求P(Z|D)
-
对一个特定的模型,给出观测变量的边缘似然函数(或称为证据,evidence)的下界。主要用于模型的选择,认为模型的边缘似然值越高,则模型对数据拟合程度越好,该模型产生Data的概率也越高。
对于第一个目的,蒙特卡洛模拟,特别是用Gibbs取样的MCMC方法,可以近似计算复杂的后验分布,能很好地应用到贝叶斯统计推断。此方法通过大量的样本估计真实的后验,因而近似结果带有一定的随机性。与此不同的是,变分贝叶斯方法提供一种局部最优,但具有确定解的近似后验方法。
从某种角度看,变分贝叶斯可以看做是EM算法的扩展,因为它也是采用极大后验估计(MAP),即用单个最有可能的参数值来代替完全贝叶斯估计。另外,变分贝叶斯也通过一组相互依然(mutually dependent)的等式进行不断的迭代来获得最优解。
问题描述
重新考虑一个问题:1)有一组观测数据D,并且已知模型的形式,求参数与潜变量(或不可观测变量)Z={Z1,...,Zn}的后验分布: P(Z|D)。
正如上文所描述的后验概率的形式通常是很复杂(Intractable)的,对于一种算法如果不能在多项式时间内求解,往往不是我们所考虑的。因而我们想能不能在误差允许的范围内,用更简单、容易理解(tractable)的数学形式Q(Z)来近似P(Z|D),即 P(Z|D)≈Q(Z)。
由此引出如下两个问题:
-
假设存在这样的Q(Z),那么如何度量Q(Z)与P(Z|D)之间的差异性 (dissimilarity).
-
如何得到简单的Q(Z)?
对于问题一,幸运的是,我们不需要重新定义一个度量指标。在信息论中,已经存在描述两个随机分布之间距离的度量,即相对熵,或者称为Kullback-Leibler散度。
对于问题二,显然我们可以自主决定Q(Z)的分布,只要它足够简单,且与P(Z|D)接近。然而不可能每次都手工给出一个与P(Z|D)接近且简单的Q(Z),其方法本身已经不具备可操作性。所以需要一种通用的形式帮助简化问题。那么数学形式复杂的原因是什么?在“模型的选择”部分,曾提到Occam’s razor,认为一个模型的参数个数越多,那么模型复杂的概率越大;此外,如果参数之间具有相互依赖关系(mutually dependent),那么通常很难对参数的边缘概率精确求解。
幸运的是,统计物理学界很早就关注了高维概率函数与它的简单形式,并发展了平均场理论。简单讲就是:系统中个体的局部相互作用可以产生宏观层面较为稳定的行为。于是我们可以作出后验条件独立(posterior independence)的假设。即,∀i,p(Z|D)=p(Zi|D)p(Z−i|D)
Kullback-Leibler散度
在统计学中,相对熵对应的是似然比的对数期望,相对熵 D(p||q)度量当真实分布为 P而假定分布为Q时的无效性。
为了极大化L(q),我们需要选择合适的函数q,使其便于计算。要注意到L(q)并非普通的函数,而是以函数q为自变量的函数,这就是泛函。泛函可以看成是函数概念的推广,而变分方法是处理泛函的数学领域,和处理函数的普通微积分相对。变分法最终寻求的是极值函数:它们使得泛函取得极大或极小值。
Gibbs Sampling这一类Monte Carlo算法,它们的做法就是通过抽取大量的样本估计真实的后验分布。而变分推断不同,与此不同的是,变分推断限制近似分布的类型,从而得到一种局部最优,但具有确定解的近似后验分布。
求解过程(极大化L(q))
根据以上假设,我们来最大化下界L(q),因为假设qi(Zi)分布之间都是独立的,所以我们依次轮流来优化,以qj(Zj)为例(为了简单起见,缩写为qj)。
这里我们定义一个新分布lnp~(X,Zj)为
我们发现它刚好是除去与qj分布相关的zj之后原似然的期望值,有
然后看式(5)的最后部分,就是qj(Zj)和p~(X,Zj)的KL散度的负值,这里我们固定qi≠j不变,那么最大化L(q)就变成了最小化这个KL散度,而KL 散度的最小值在qj(Zj)=lnp~(X,Zj)时取到。所以,最优解q∗j(Zj)为
另加的这个C是为了归一化整个分布,有然后依次更新其他Zj,最终相互迭代达到稳定。
变分下界
我们也可以直接衡量模型的下界。在实际应用中,变分下界可以直接判断算法是否收敛,也可以通过每次迭代都不会降低这一点来判断算法推导和实现的部分是否存在问题。
转自:https://www.cnblogs.com/yifdu25/p/8181185.html
变分推断和EM算法结合起来理解会让知识更具有连贯性,理解起来也会相对而言不那么抽象。