贝叶斯学派是数理统计学中的一大学派,其理论在机器学习和深度学习中有大量的运用。

熟悉贝叶斯理论的朋友应该清楚,在贝叶斯理论框架下,参数估计、期望、方差、区间估计、假设检验等等统计方法都要建立在后验分布上。理论上,后验分布的计算相当优雅,但是数值计算十分困难。统计学家为了避免计算的麻烦,引入数学技巧:共轭先验分布来避免后验分布计算困难问题。然而,工程运用中,许多情况下先验分布并非是共轭先验。于是,为了把这套精妙的统计理论运用到工程上,需要数值计算技巧,常见的方法有:MCMC、变分推断。MCMC 方法请参考资料。前者是采样方法,后者是解析方法。贝叶斯理论在深度学习中典型的例子是著名的变分自编码器(VAE)。

本文先从贝叶斯公式开始,导出贝叶斯的计算之难,然后引出变分推断这个强大的计算利器。

贝叶斯理论

从贝叶斯统计来看,分布的未知参数和隐变量都是随机变量, 因此可以一并纳入到隐变量中统一处理. 假定隐变量的先验分布服从 $z \sim p(z)$

则在观察到样本 $ { x_{i} \sim p(x)| i=1,2,3,..,N}$ 情况下,隐变量的后验分布可表示为

通常情况下,上式的求解及其困难。更多内容可参看神经的贝叶斯公式

近似推断

贝叶斯公式难计算的部分是积分

为了计算上述公式中积分部分,在概率图中有两类方法:

  1. 采样法
  2. 变分法

采样法

采样方法也称为蒙特卡洛方法,具体做法是从给定的概率密度函数 $p(x)$ 中采样并带入到积分中,一离散的方式估计积分值。积分 $\int{p(x|z)p(z)dz}$ 计算困难,那么可以采用近似的方法计算数值。

这类方法目前包括:拒绝采样、重要性采样、MCMC。后期有空我们再展开。

变分法

这种方法其实和数学上处理泛函极值的变分法没有直接关系,只不过是 KL 散度涉及到变分法而已。 其做法是,既然积分的计算十分困难,那么我们可以引入一个简单的分布(称为变分分布)来近似这个真实的分布。然后确定一种度量分布差异的方法,并最小化分布差异。

可以看到,第一种方法是随机方法,而第二种方法是解析方法,可以获得变分分布的解析式。

接下来介绍变分推断方法的多种理解或导出思路。

正统思路

既然积分$\int{p(x|z)p(z)dz}$计算困难,进而导致后验分布难以计算,那么我们干脆绕开对它的计算,直接对后验分布进行估计:首先假定其具体形式,然后估计其参数。

假定变分分布的形式为 $q(z)$,如正态分布,但参数未知,其所属的分布簇为 $Q$ ,那么目标分布为:

我们来进一步推导(离散形式):

由于 KL 散度的特点,使用 Jensen 不等式:

上式取值大于等于零,当两个分布一样时取值为零。

于是,我们可以上式结果改为如下形式:

上式左端是一个不依赖 $z$ 的常量,于是,为让 KL 散度最小化,只需要让上式右端最大化即可。这看起来很显然,但我们还是不厌其烦的推断一下:

通过以上的分析和推导可以知道,最小化 KL 散度可以通过最大化 ELBO 实现。

最大化证据

除此之外,我们还可以通过 Jensen 不等式推导得到以上结果:

由于 $\log{x}$ 是凹函数,所以符号取反。

从最大化 $p(x)$ 角度我们也能得到一样的结果,思路上和最大似然估计类似。之所以能观察到样本$x$,是因为它发生的概率最大。

信息论视角

在纯信息论的视觉下,我们也有同样的结果:

这个推导看起来很技巧化,事实上有很明确的信息论意义。整个推导过程其实就是为了避开直接求解证据最大化。

总结

以上从信息论视角、最大化证据以及正统思路来介绍变分推断方法。

转载请包括本文地址:https://allenwind.github.io/blog/10313
更多文章请参考:https://allenwind.github.io/blog/archives/