变分推断

Posted by ZhengYang on 2016-06-29

变分推断

为什么要进行推断?模型分为判别模型和生成模型,判别模型可以直接用来预测,但生成模型得到的是联合概率分布,因此需要进行概率推断,来进行预测。

概率推断的任务是,计算某个函数的期望、或计算边缘概率分布、或条件概率分布等。

近似推断分两个方向:抽样(MCMC,Gibbs)、确定性近似(Variational Inference,variational Bayesian)。

变分法:从某个函数空间中找到满足某些约束条件的函数。

变分推断:用简单的、容易积分的分布,去近似复杂的、不易积分的分布;另外,常假设多元分布间独立,这样就可以分解为多个一元分布,容易积分,解决高维问题。用KL散度衡量分布间的相似度,优化极小KL散度。

因为模型的参数没有改变,因此lnp(X)是一个常数。p分布为真实的复杂分布,我们需要构造一个简单的分布q,去近似p分布。根据公式(10.2),极小化KL散度,等于极大化L函数。

为什么要转求解目标KL变为L?首先,我们已经建立好了生成模型,学习到了联合分布,计算p(Z|X)需要归一化因子p(X),计算p(X)需要对p(Z,X)做积分,但p(Z,X)又不容易积分。所以,可以通过极小化L,间接使得KL极小,使q(Z)近似p(Z|X)。

我们希望q分布是容易积分的,因此构造的q分布是可分解的形式,即变量间独立。

因为q分布可以分解为多个一元变量的乘积的形式,所以每次仅计算L(q)其中一个q_j作为变量,其他q_i作为常量,公式推到如下:

具体的推导过程如下:

L最后的形式是一个负KL的形式,所以极小化KL,就等于极大化负KL,就等于极大化L。所以最近似p的q_j分布为:

两边取指数,然后归一化,

将q的所有一元变量相乘,得到一个近似p(Z|X)的分布。

二元高斯分布的近似

真实分布:二元高斯分布

期望,协方差,

我们希望构造的分布,具有可分解的形式 q(z)=q(z_i)q(z_j)。

具体推到过程如下,

通过配元,得到z1变量高斯分布的形式,

z2变量高斯分布的形式如下,

z1和z2是完全对称的,求解释可以随机给一个初始值,然后迭代计算。
但这个例子中,有解析式,即对应的期望。