基于指数族分布的变分推断——变分推断(二)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于指数族分布的变分推断——变分推断(二)相关的知识,希望对你有一定的参考价值。

参考技术A

让我们书接上文。

前一篇博客( 基于近似计算解决推断问题——变分推断(一) )我们说到基于高斯贝叶斯混合的 CAVI (坐标上升变分推断),那么,我们能不能将这类变分推断进行扩展,变成更为通用的算法框架呢?

显然,基于 指数分布族 (exponential families)的某些特性,这样的做法是可行的。下面让我们先看看什么是指数分布族。

本文主要参考的文献为David M.Blei 2018年发表的论文 Variational Inference: A Review for Statisticians 。

指数族分布 (exponential family of distributions)也叫指数型分布族,包含 高斯分布 伯努利分布 二项分布 泊松分布 Beta 分布 Dirichlet 分布 Gamma 分布 。指数族分布通常可以表示为:


其中有几个比较重要的参数后面可能会用到:

或者,也可以采用另一种表示形式:

其中, 是指数族的 自然参数 , 为 尺度参数 讨厌参数 。 和 依据不同指数族而确定的函数。注意 只由 和 决定

常见的指数分布族

一维高斯分布

一维变量 若服从均值为 、方差为 的一维高斯分布,则可以表示为

公式(a)的形式

如果按照公式(a)对高斯分布的公式进行转变,则可以变为

可以看到,自然参数可以表示为 ,对数配分函数可以表示为 。按照这个公式,我们可以计算出均值、方差与自然函数的关系

这也是上一篇博客中,公式(34)的由来。

公式(b)的形式

按照公式(b),可以化为


其中,

对概率密度函数求积分:

两边对参数求导

类似的

由于方差为正,所以 一定是凸函数

对于独立分布采样得到的数据集

的的极大似然估计为

所以,如果要进行估算参数,只要知道 充分统计量 就可以了

信息熵公式为

对于一个数据集 ,在这个数据集上的经验分布为 ,实际不可能满足所有的经验概率相同,于是在上面的最大熵原理中还需要加入这个经验分布的约束。

对于任意一个函数,经验分布的经验期望可以求得为

Lagrange 函数为

求导可得

由于数据集是任意的,对数据集求和就意味着求和项里面的每一项都是0,所以有

这就是指数族分布的公式。

在推断问题中,我们常常要计算下列式子

上式中分母积分十分难计算,为了解决积分难计算的问题,一个思路是能否绕过积分呢?我们知道存在如下关系 ,其中 是后验分布, 是似然, 是先验

如果存在这样的⼀个先验分布,那么上⼀时刻的输出可以作为下⼀时刻计算的先验分布,那么这样整个计算就可以形成闭环。也就是说 如果后验分布和先验分布是同分布,此时我们称先验分布和后验分布是共轭分布,且称先验分布是似然函数的共轭先验 。⽐如⾼斯分布家族在⾼斯似然函数下与其⾃身共轭,也叫⾃共轭。

共轭先验的好处主要在于代数上的方便性 ,可以直接给出后验分布的封闭形式,否则的话只能做数值计算

对于一个模型分布假设(似然),那么我们在求解中,常常需要寻找一个共轭先验,使得先验与后验的形式相同,例如选取似然是二项分布,可取先验是 Beta 分布,那么后验也是 Beta 分布。指数族分布常常具有共轭的性质,于是我们在模型选择以及推断具有很大的便利。

在上一篇博客中,我们提到,在推断问题中,对于第 个隐变量 ,其 complete conditional (完全条件)为给定其他隐变量和观测数据时,它的条件密度,即 。结合指数族分布的概念,当后验分布为指数族分布时,我们可以将隐变量的 complete conditional 写为

其中,

所以,根据上一篇博客中,我们知道 CAVI 算法的参数更新公式(17),当假设后验分布为指数族分布时,坐标上升的更新公式为

更新公式揭示了更新变分因子的参数形式,每一个更新因子都 与它对应的 complete conditional 属于同一指数族 ,它的参数拥有相同维度以及相同的基本测量 和对数归因算子 。

我们可以令 为第 个数据点的变分参数,当我们更新每个因子时,只需要令其变分参数等于完全条件的期望参数

对于指数族模型,一个比较特殊的情况是 条件共轭模型 (conditionally conjugate models),它在贝叶斯学习和机器学习中常被运用。

我们将条件共轭模型涉及的变量可以分为两类

根据 i.i.d. 假设,其联合分布可以表示为

回顾前面提到的高斯混合,用这类的模型解释的话,全局变量就是混合组件参数,而局部变量就是每个数据点 的聚类分配。

我们假设基于全局变量 ,每个数据点 的联合分布,都有指数族形式

其中 为充分统计量。

接下来,我们可以假设全局变量的先验分布是公式(42)的共轭分布

这一分布的自然参数为 ,充分统计量为全局变量及其对数归一化的负数。

有了上述的共轭先验,我们也能让得到全局变量的 complete conditional 也在同一分布

其中,基本测量为 ,自然参数为 。

而对于局部变量 的 complete conditional ,在 i.i.d. 假设下有等式

我们假设其服从指数族分布

接下来让我们将这个模型引入 CAVI 算法框架。我们将 的变分后验分布近似表示为 ( 为 全局变分参数 ),它与后验分布有相同的指数族分布;将 的变分后验分布近似为 ,其中 为数据点 的 局部变分参数 ,它与局部 complete condititonal 有相同的指数族分布。

在 CAVI 算法中,我们将迭代地进行局部变分参数和全局变分参数的更新。

局部变分参数的更新

这里我们用到前面的公式(40),可以得到更新公式

得到的结果为公式(45)中自然参数的期望。

全局变分参数的更新

全局变分参数的更新利用类似的方法,更新公式为

得到的结果为公式(44)中自然参数的期望。

ELBO 的计算

CAVI 通过迭代更新局部变分参数和全局变分参数,每次迭代我们可以计算 ELBO ,来决定模型是否收敛。将公式(44)带入 ELBO 公式(13),我们可以得到条件共轭模型的 ELBO

后面一项可以表示为

论文中附录 C 还有描述了基于 LDA 的 CAVI 算法,有兴趣的小朋友可以看一下论文,这里不过多赘述。

CAVI 给了变分推断问题一个解决问题的框架,引入指数族分布使得模型更加简化,似乎到这里问题已经解决得差不多了,但事实上真的是这样吗?

实际上,在真实场景中,我们要应对的数据可能是成百上千甚至是上十万的,这就给 CAVI 这一算法框架带来了极大的挑战。 CAVI 在计算过程中,每一次迭代都需要遍历所有数据,随着数据量的增加,计算量也越来越大,这显然是不符合我们的需要。

所以,我们还需要另外一套计算方法,对算法的效率进行优化。这也是我下一篇博客会讲到的两种方法—— 随机变分推断 (Stochastic variational inference,SVI)和 变分自编码器 (Variational Auto-encoder,VAE)。

以上是关于基于指数族分布的变分推断——变分推断(二)的主要内容,如果未能解决你的问题,请参考以下文章

变分推断—— 进阶(续)

变分推断—— 进阶

文本主题模型之LDA LDA求解之变分推断EM算法

深度聚类一些

变分推断

文本主题模型之LDA LDA求解之变分推断EM算法