变分推断 Variational Inference

贝叶斯与近似贝叶斯

贝叶斯推断(Bayesian Inference) ,在贝叶斯推断中我们有观测数据x={x1,x2,,xn}\mathrm{x} = \{\mathrm{x}_1, \mathrm{x}_2, \cdots, \mathrm{x}_n\},将模型的参数设置为z\mathrm{z},它具有mm个参数z={z1,z2,,zm}\mathrm{z} = \{\mathrm{z}_1, \mathrm{z}_2, \cdots, \mathrm{z}_m\}。给定一个 先验(prior) 分布p(z)p(\mathrm{z}),在我们观测到数据x\mathrm{x}之后,我们依据这个数据对z\mathrm{z}的分布有一个更新。这种更新我们通常称之为计算 后验分布(posterior distribution) p(zx)p(\mathrm{z|x})

p(zx)=p(x,z)p(x)=p(xz)p(z)p(x)p(\mathrm{z|x}) = \dfrac{p(\mathrm{x,z})}{p(\mathrm{x})} = \dfrac{p(\mathrm{x|z}) \cdot p(\mathrm{z})}{p(\mathrm{x})}

其中p(zx)p(\mathrm{z|x})后验分布(posterior distribution)p(xz)p(\mathrm{x|z})likelihood,相当于是一个方程,将数据x\mathrm{x}和我们所关心的参数z\mathrm{z}联系在了一起;p(z)p(\mathrm{z})是参数的先验prior信息;而p(x)p(\mathrm{x})是我们对于数据的信息,通常称之为evidence

一般来说,贝叶斯建模需要走以下几步:

  1. 选一个prior,然后去选一个给定的likelihood。一般我们需要有一些假设,比如prior或者likelihood是服从某种分布的。

  2. 基于观测数据,去计算后验分布。

  3. 如果后验分布变量z\mathrm{z}的维度非常高的话,我们就没办法将其全部表示出来,我们一般用后验分布的一些统计量,来代表整个后验分布。比如常见的用posterior mean and variances

但是有一个问题,就是要去计算后验分布 p(zx)p(\mathrm{z∣x}) 的话,我们需要去计算 p(x)=p(x,z)dz\displaystyle p(\mathrm{x})=\int p(\mathrm{x,z})\mathrm{dz} 这个积分,如果是高维度上的积分,数值上计算是非常困难的。并且有些情况是可能不存在解析解的。常用的方法有Markov Chain Monte Carlo(MCMC),但是计算比较慢。

另外一种思路,把贝叶斯模型的计算问题转化为一个优化问题。之后就可以通过一些优化上的手段来进行加速。

KL散度 Kullback-Leibler divergence

而用一个分布去拟合另一个分布通常需要衡量这两个分布之间的相似性,通常采用KL散度,当然还有其他的一些方法,像JS散度这种。

机器学习中比较重要的一个概念—相对熵(relative entropy)相对熵又被称为KL散度(Kullback–Leibler divergence)信息散度 (information divergence),是两个概率分布间差异的非对称性度量 。在信息论中,相对熵等价于两个概率分布的信息熵的差值,若其中一个概率分布为真实分布,另一个为理论(拟合)分布,则此时相对熵等于交叉熵与真实分布的信息熵之差,表示使用理论分布拟合真实分布时产生的信息损耗。其公式如下:

DKL(pq)=i=1N[p(xi)logp(xi)p(xi)logq(xi)]=i=1Np(xi)logp(xi)q(xi)\begin{aligned} D_{KL} (p||q) &= \sum_{i=1}^N \Big[ p(\mathrm{x}_i) \log p(\mathrm{x}_i) - p(\mathrm{x}_i) \log q(\mathrm{x}_i) \Big]\\ &= \sum_{i=1}^N p(\mathrm{x}_i) \log \dfrac{p(\mathrm{x}_i)}{q(\mathrm{x}_i)} \end{aligned}

假设理论拟合出来的事件概率分布q(x)q(\mathrm{x})跟真实的分布p(x)p(\mathrm{x})一模一样,即q(x)=p(x)q(\mathrm{x}) = p(\mathrm{x}),那么p(xi)logq(xi)p(\mathrm{x}_i) \log q(\mathrm{x}_i)就等于真实事件的信息熵,这一点显而易见。在理论拟合出来的事件概率分布跟真实的一模一样的时候,相对熵等于00。而拟合出来不太一样的时候,相对熵大于00。其证明如下:

DKL(pq)=i=1Np(xi)logp(xi)q(xi)=i=1Np(xi)logq(xi)p(xi)i=1Np(xi)(q(xi)p(xi)1)=i=1N(q(xi)p(xi))=i=1Nq(xi)+i=1Np(xi)=1+1=0\begin{aligned} D_{KL} (p||q) &= \sum_{i=1}^N p(\mathrm{x}_i) \log \dfrac{p(\mathrm{x}_i)}{q(\mathrm{x}_i)}\\ &= -\sum_{i=1}^N p(\mathrm{x}_i) \log \dfrac{q(\mathrm{x}_i)}{p(\mathrm{x}_i)}\\ &\ge -\sum_{i=1}^N p(\mathrm{x}_i) \Big(\dfrac{q(\mathrm{x}_i)}{p(\mathrm{x}_i)} - 1\Big)\\ &= -\sum_{i=1}^N \Big(q(\mathrm{x}_i) - p(\mathrm{x}_i)\Big)\\ &= -\sum_{i=1}^N q(\mathrm{x}_i) + \sum_{i=1}^N p(\mathrm{x}_i)\\ &= -1 + 1\\ &= 0 \end{aligned}

放缩那一步是根据 ln(1+x)x\ln(1+x) \le x 进行的,因此当且仅当 i,p(xi)=q(xi)\forall i, p(\mathrm{x}_i) = q(\mathrm{x}_i) 时,取等号。

这个性质很关键,因为它正是深度学习梯度下降法需要的特性。假设神经网络拟合完美了,那么它就不再梯度下降,而不完美则因为它大于00而继续下降。但它有不好的地方,就是它是不对称的。也就是用PP来拟合QQ和用QQ来拟合PP的相对熵居然不一样,而他们的距离是一样的。这也就是说,相对熵的大小并不跟距离有一一对应的关系。

变分推断 Variational Inference

我们经常利用贝叶斯公式求posterior distributionp(zx)p(\mathrm{z|x})

p(zx)=p(x,z)p(x)=p(x,z)p(x,z)dzp(\mathrm{z|x}) = \dfrac{p(\mathrm{x,z})}{p(\mathrm{x})} = \dfrac{p(\mathrm{x,z})}{\displaystyle \int p(\mathrm{x, z}) \mathrm{dz}}

posterior distribution p(zx)p(\mathrm{z|x}) 求解用贝叶斯的方法是比较困难的,因为我们需要去计算p(x,z)dz\displaystyle \int p(\mathrm{x, z}) \mathrm{dz}。而z\mathrm{z}通常会是一个高维的随机变量,这个积分计算起来就非常困难。在贝叶斯统计中,所有的对于未知量的 推断(inference) 问题可以看做是对 后验概率(posterior) 的计算。因此提出了 Variational Inference 来计算 posterior distribution

Variational Inference 核心思想主要包括两步:

  1. 假设一个用于近似的简单分布 q(z;λ)q(\mathrm{z;\lambda})

  2. 通过改变分布的参数λ\lambda,使q(z;λ)q(\mathrm{z;\lambda})靠近p(zx)p(\mathrm{z|x})

总结称一句话就是,为真实的后验分布引入了一个参数化的模型。 即:用一个简单的分布q(z;λ)q(\mathrm{z;\lambda})拟合复杂的分布p(zx)p(\mathrm{z|x})

这种策略将计算p(zx)p(\mathrm{z|x})的问题转化成优化问题了

λ=arg minλDKL(q(z;λ)p(zx))\lambda^{*} = \argmin_\lambda D_{KL}\Big( q(\mathrm{z;\lambda}) || p(\mathrm{z|x}) \Big)

DKL(p(zx)q(z;λ))D_{KL}\Big( p(\mathrm{z|x}) || q(\mathrm{z;\lambda}) \Big)进行如下变形:

DKL(q(z;λ)p(zx))=Ezq(z;λ)(logq(z;λ))Ezq(z;λ)(logp(zx))=Ezq(z;λ)(logq(z;λ))Ezq(z;λ)(logp(x,z)p(x))=Ezq(z;λ)(logq(z;λ))Ezq(z;λ)(logp(x,z))+Ezq(z;λ)(logp(x))=Ezq(z;λ)(logq(z;λ))Ezq(z;λ)(logp(x,z))+logp(x)=[Ezq(z;λ)(logp(x,z))Ezq(z;λ)(logq(z;λ))ELBO]+logp(x)\begin{aligned} D_{KL}\Big( q(\mathrm{z;\lambda}) || p(\mathrm{z|x}) \Big) &= \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})}\Big(\log q(\mathrm{z;\lambda})\Big) - \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log p(\mathrm{z|x}) \Big)\\ &= \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})}\Big(\log q(\mathrm{z;\lambda})\Big) - \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log \dfrac{p(\mathrm{x, z})}{p(\mathrm{x})}\Big)\\ &= \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})}\Big(\log q(\mathrm{z;\lambda})\Big) - \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log p(\mathrm{x, z})\Big) + \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log p(\mathrm{x})\Big)\\ &= \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})}\Big(\log q(\mathrm{z;\lambda})\Big) - \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log p(\mathrm{x, z})\Big) + \log p(\mathrm{x})\\ &= -\Big[\underbrace{\mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log p(\mathrm{x, z})\Big) - \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})}\Big(\log q(\mathrm{z;\lambda})\Big)}_{\text{ELBO}}\Big] + \log p(\mathrm{x}) \end{aligned}

由此我们获得等式:logp(x)=DKL(q(z;λ)p(zx))+ELBO\log p(\mathrm{x}) = D_{KL}\Big( q(\mathrm{z;\lambda}) || p(\mathrm{z|x}) \Big) + \text{ELBO},已知KL Divergence的最小值为00,于是有不等式

logp(x)=DKL(q(z;λ)p(zx))+ELBOELBO\begin{aligned} \log p(\mathrm{x}) &= D_{KL}\Big( q(\mathrm{z;\lambda}) || p(\mathrm{z|x}) \Big) + \text{ELBO}\\ &\ge \text{ELBO} \end{aligned}

其中logp(x)\log p(\mathrm{x})称为evidence,所以根据上述不等式,Ezq(z;λ)(logp(x,z)logq(z;λ))\mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log p(\mathrm{x, z}) - \log q(\mathrm{z;\lambda})\Big)这一项称为ELBO(Evidence Lower Bound)。当evidence达到ELBO时,KL Divergence为0,两个分布相同。

再结合之前的最优化问题的目标函数,有:

λ=arg minλDKL(q(z;λ)p(zx))=arg minλELBO+logp(x)=arg minλELBO=arg maxλELBO=arg maxλEzq(z;λ)(logp(x,z)logq(z;λ))\begin{aligned} \lambda^{*} &= \argmin_\lambda D_{KL}\Big( q(\mathrm{z;\lambda}) || p(\mathrm{z|x}) \Big)\\ &= \argmin_\lambda -\text{ELBO}+ \log p(\mathrm{x})\\ &= \argmin_\lambda -\text{ELBO}\\ &= \argmax_\lambda \text{ELBO}\\ &= \argmax_\lambda \mathbb{E}_{\mathrm{z}\sim q(\mathrm{z;\lambda})} \Big(\log p(\mathrm{x, z}) - \log q(\mathrm{z;\lambda})\Big)\\ \end{aligned}

由此可见,最小化KL Divergence 就等价于 最大化ELBO(Evidence Lower Bound)

暂时只需要知道这么多,以后还需要更多内容的时候再更新。

Reference