前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >变分推断 Variational Inference

变分推断 Variational Inference

作者头像
一只野生彩色铅笔
发布2023-04-27 19:20:27
5450
发布2023-04-27 19:20:27
举报

变分推断 Variational Inference

贝叶斯与近似贝叶斯

贝叶斯推断(Bayesian Inference) ,在贝叶斯推断中我们有观测数据

\mathrm{x} = \{\mathrm{x}_1, \mathrm{x}_2, \cdots, \mathrm{x}_n\}

,将模型的参数设置为

\mathrm{z}

,它具有

m

个参数

\mathrm{z} = \{\mathrm{z}_1, \mathrm{z}_2, \cdots, \mathrm{z}_m\}

。给定一个 先验(prior) 分布

p(\mathrm{z})

,在我们观测到数据

\mathrm{x}

之后,我们依据这个数据对

\mathrm{z}

的分布有一个更新。这种更新我们通常称之为计算 后验分布(posterior distribution)

p(\mathrm{z|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(\mathrm{z|x})

后验分布(posterior distribution)

p(\mathrm{x|z})

likelihood,相当于是一个方程,将数据

\mathrm{x}

和我们所关心的参数

\mathrm{z}

联系在了一起;

p(\mathrm{z})

是参数的先验prior信息;而

p(\mathrm{x})

是我们对于数据的信息,通常称之为evidence

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

  1. 选一个prior,然后去选一个给定的likelihood。一般我们需要有一些假设,比如prior或者likelihood是服从某种分布的。
  2. 基于观测数据,去计算后验分布。
  3. 如果后验分布变量z\mathrm{z}z的维度非常高的话,我们就没办法将其全部表示出来,我们一般用后验分布的一些统计量,来代表整个后验分布。比如常见的用posterior mean and variances

但是有一个问题,就是要去计算后验分布

p(\mathrm{z∣x})

的话,我们需要去计算

\displaystyle p(\mathrm{x})=\int p(\mathrm{x,z})\mathrm{dz}

这个积分,如果是高维度上的积分,数值上计算是非常困难的。并且有些情况是可能不存在解析解的。常用的方法有Markov Chain Monte Carlo(MCMC),但是计算比较慢。

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

KL散度 Kullback-Leibler divergence

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

\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(\mathrm{x})

跟真实的分布

p(\mathrm{x})

一模一样,即

q(\mathrm{x}) = p(\mathrm{x})

,那么

p(\mathrm{x}_i) \log q(\mathrm{x}_i)

就等于真实事件的信息熵,这一点显而易见。在理论拟合出来的事件概率分布跟真实的一模一样的时候,相对熵等于

0

。而拟合出来不太一样的时候,相对熵大于

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) \le x

进行的,因此当且仅当

\forall i, p(\mathrm{x}_i) = q(\mathrm{x}_i)

时,取等号。

这个性质很关键,因为它正是深度学习梯度下降法需要的特性。假设神经网络拟合完美了,那么它就不再梯度下降,而不完美则因为它大于

0

而继续下降。但它有不好的地方,就是它是不对称的。也就是用

P

来拟合

Q

和用

Q

来拟合

P

的相对熵居然不一样,而他们的距离是一样的。这也就是说,相对熵的大小并不跟距离有一一对应的关系。

变分推断 Variational Inference

我们经常利用贝叶斯公式求posterior distribution

p(\mathrm{z|x})
p(\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(\mathrm{z|x})

求解用贝叶斯的方法是比较困难的,因为我们需要去计算

\displaystyle \int p(\mathrm{x, z}) \mathrm{dz}

。而

\mathrm{z}

通常会是一个高维的随机变量,这个积分计算起来就非常困难。在贝叶斯统计中,所有的对于未知量的 推断(inference) 问题可以看做是对 后验概率(posterior) 的计算。因此提出了 Variational Inference 来计算 posterior distribution

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

  1. 假设一个用于近似的简单分布
q(\mathrm{z;\lambda})
  1. 通过改变分布的参数
\lambda

,使

q(\mathrm{z;\lambda})

靠近

p(\mathrm{z|x})

总结称一句话就是,为真实的后验分布引入了一个参数化的模型。 即:用一个简单的分布

q(\mathrm{z;\lambda})

拟合复杂的分布

p(\mathrm{z|x})

这种策略将计算

p(\mathrm{z|x})

的问题转化成优化问题了

D_{KL}\Big( p(\mathrm{z|x}) || q(\mathrm{z;\lambda}) \Big)

进行如下变形:

\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}

由此我们获得等式:

\log p(\mathrm{x}) = D_{KL}\Big( q(\mathrm{z;\lambda}) || p(\mathrm{z|x}) \Big) + \text{ELBO}

,已知KL Divergence的最小值为

0

,于是有不等式

\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}

其中

\log p(\mathrm{x})

称为evidence,所以根据上述不等式,

\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,两个分布相同。

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

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

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

Reference

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变分推断 Variational Inference
    • 贝叶斯与近似贝叶斯
      • KL散度 Kullback-Leibler divergence
        • 变分推断 Variational Inference
          • Reference
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档