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