变分推断
为什么要进行推断?模型分为判别模型和生成模型,判别模型可以直接用来预测,但生成模型得到的是联合概率分布,因此需要进行概率推断,来进行预测。
概率推断的任务是,计算某个函数的期望、或计算边缘概率分布、或条件概率分布等。
近似推断分两个方向:抽样(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是完全对称的,求解释可以随机给一个初始值,然后迭代计算。
但这个例子中,有解析式,即对应的期望。