贝叶推断是统计学中的一个重要问题,也是许多机器学习方法中经常遇到的问题。贝叶斯推断已经被应用于各行各业。传统的贝叶斯技术需要通过积分来计算后验分布,而伴随着计算机的发展这一问题得到解决。在面对高维的参数空间时,基于蒙特卡洛抽样的方法难以直接评估或样本。而贝叶斯变分推断技术将后验推断问题巧妙地转化为优化问题进行求解,具有更好的收敛性和可扩展性。本文将对贝叶斯变分推断技术做出介绍。
贝叶斯推断(Bayesian inference)是推论统计的一种方法,是统计学(特别是数理统计学)中很重要的技巧之一。它使用贝叶斯定理,在有更多证据及信息时,更新特定假设的概率。近些年来,贝叶斯推断在许多的领域中扮演者日益重要的角色,包括科学、工程学、哲学、医学、体育运动、法律等。
贝叶斯推断的关键是要确定统计模型的后验分布,此后模型将被用来对未知样本做出预测。然而由于积分的求解并容易(特别是在较为复杂的参数空间),在很多情形下,我们无法直接获得后验分布的理论解。这一点制约着基于贝叶斯的统计推断方法普遍的应用于各种问题。
近年来,随着计算机技术的发展,后验分布的近似计算问题取得了突破。其中基于马尔可夫的方法通过采样的方法使用随机化方法完成近似。然而,随着后验分布的复杂化,基于蒙特卡洛抽样的方法,特别是,马尔可夫链蒙特卡罗方法,如吉布斯抽样采取完全贝叶斯方法的统计推断复杂分布,难以直接评估或样本。而变分贝叶斯推断则是一个好的替代方法。变分贝叶斯提供了一个局部最优的精确后验的解析解。下面我们主要介绍贝叶斯变分推断的基本思想。
变分推断方法的基本思想是通过使用已知简单分布来逼近需推断的复杂分布,并通过限制近似分布的类型,从而得到一种局部最优、但具有确定解的近似后验分布。在这一部分,我们将从问题的角度出发,介绍贝叶斯变分推断的具体流程。
给定一组数据 X = { x 1 , x 2 , , . . . , x n } \textbf{X} = \{x_1, x_2, , ..., x_n\} X={x1,x2,,...,xn},我们需要计算隐含变量 Z = { z 1 , z 2 , . . . , z m } \textbf{Z}=\{z_1, z_2, ..., z_m\} Z={z1,z2,...,zm} 的后验分布 P ( Z ∣ X ) P(\textbf{Z} | \textbf{X}) P(Z∣X),其中隐含变量 Z \textbf{Z} Z 可以是给定模型的未知参数,是不能观察到的。
对于以上问题,很自然的,我们尝试使用贝叶斯定理求解隐变量的后验分布:
P ( Z ∣ X ) = P ( X ∣ Z ) P ( Z ) P ( Z ) P(\textbf{Z}|\textbf{X})=\frac{P(\textbf{X}|\textbf{Z})P(\textbf{Z})}{P(\textbf{Z})} P(Z∣X)=P(Z)P(X∣Z)P(Z)
其中 P ( X ) = ∫ Z P ( X , Z ) d Z P(\textbf{X})=\int_\textbf{Z} P(\textbf{X},\textbf{Z})d\textbf{Z} P(X)=∫ZP(X,Z)dZ,为边缘密度, P ( X , Z ) P(\textbf{X},\textbf{Z}) P(X,Z) 表示样本 X \textbf{X} X 与隐变量 Z \textbf{Z} Z 的联合分布。我们注意到分子部分的样本的似然函数 P ( X ∣ Z ) P(\textbf{X}|\textbf{Z}) P(X∣Z) 与隐变量的先验 P ( Z ) P(\textbf{Z}) P(Z) 在给定了模型的假设的条件下很容易求得。我们重点关注分母——对于边缘分布 P ( X ) P(\textbf{X}) P(X) 的计算。由于积分计算的复杂性,很多情况下,我们无法得到积分的显式表达,因而就无法计算后验分布,进行贝叶斯推断。
对于后验分布,虽然难以直接得到其精确解,但我们仍可以采用近似估计的方法得到其近似解,即:我们构造一个分布 Q ( Z ) Q(\textbf{Z}) Q(Z) 使得:
P ( Z ∣ X ) ≈ Q ( Z ) P(\textbf{Z}|\textbf{X})\approx Q(\textbf{Z}) P(Z∣X)≈Q(Z)
其中 Q ( Z ) Q(\textbf{Z}) Q(Z) 称为变分分布(variational distribution),通常来说是几类比较简单的分布族(例如:高斯分布族)。举个例子,如图一所示,绿色的分布为真实的分布 P P P ,我们所希望的是找到一个分布 Q Q Q(其他颜色) ,来近似估计分布 P P P:
由此,我们就将求解后验分布问题转化为了近似分布问题。那么,如何衡量两个分布之间的差异呢?
我们引入KL散度(Kullback-Leibler Divergence) 来衡量两个分布之间的差异。定义分布 Q ( Z ) Q(\textbf{Z}) Q(Z) 与分布 P ( Z ∣ X ) P(\textbf{Z}|\textbf{X}) P(Z∣X) 间的KL散度如下:
D K L ( Q ( Z ) ∣ ∣ P ( Z ∣ X ) ) = ∑ Z Q ( Z ) log Q ( Z ) P ( Z ∣ X ) D_{KL}\Big(Q(\textbf{Z})||P(\textbf{Z}|\textbf{X})\Big)=\sum_{\textbf{Z}}Q(\textbf{Z})\log \frac{Q(\textbf{Z})}{P(\textbf{Z}|\textbf{X})} DKL(Q(Z)∣∣P(Z∣X))=Z∑Q(Z)logP(Z∣X)Q(Z)
注意,KL散度(又称相互熵)是一种不对称的度量标准,即: D K L ( Q ∣ ∣ P ) ≠ D K L ( P ∣ ∣ Q ) D_{KL}(Q||P)\ne D_{KL}(P||Q) DKL(Q∣∣P)=DKL(P∣∣Q)。并且KL散度的值是非负的,当两个分布相同时,即: Q ( Z ) = P ( Z ∣ X ) Q(\textbf{Z})=P(\textbf{Z}|\textbf{X}) Q(Z)=P(Z∣X) 时,KL散度的值为0。
更进一步的,我们将公式 ( 1 ) (1) (1) 代入上式消去后验分布,得到:
D K L ( Q ( Z ) ∣ ∣ P ( Z ∣ X ) ) = ∑ Z Q ( Z ) [ log Q ( Z ) − log P ( Z , X ) ] + ∑ Z Q ( Z ) [ log P ( X ) ] D_{KL}\Big(Q(\textbf{Z})||P(\textbf{Z}|\textbf{X})\Big)=\sum_{\textbf{Z}}Q(\textbf{Z})\Big[\log Q(\textbf{Z})- \log P(\textbf{Z},\textbf{X})\Big]+\sum_{\textbf{Z}}Q(\textbf{Z})\Big[\log P(\textbf{X})\Big] DKL(Q(Z)∣∣P(Z∣X))=Z∑Q(Z)[logQ(Z)−logP(Z,X)]+Z∑Q(Z)[logP(X)]
我们注意到等式右边第二项 P ( X ) P(\textbf{X}) P(X) 对于 Z \textbf{Z} Z 的求和来讲可以看作常量,并且 ∑ Z Q ( Z ) = 1 \sum_{\textbf{Z}}Q(\textbf{Z})=1 ∑ZQ(Z)=1。故上市可以简化为:
D K L ( Q ( Z ) ∣ ∣ P ( Z ∣ X ) ) = ∑ Z Q ( Z ) [ log Q ( Z ) − log P ( Z , X ) ] + log P ( X ) D_{KL}\Big(Q(\textbf{Z})||P(\textbf{Z}|\textbf{X})\Big)=\sum_{\textbf{Z}}Q(\textbf{Z})\Big[\log Q(\textbf{Z})- \log P(\textbf{Z},\textbf{X})\Big]+\log P(\textbf{X}) DKL(Q(Z)∣∣P(Z∣X))=Z∑Q(Z)[logQ(Z)−logP(Z,X)]+logP(X)
我们移项可以得到:
log P ( X ) = D K L ( Q ( Z ) ∣ ∣ P ( Z ∣ X ) ) + ∑ Z Q ( Z ) [ log P ( Z , X ) − log Q ( Z ) ] \log P(\textbf{X})= D_{KL}\Big(Q(\textbf{Z})||P(\textbf{Z}|\textbf{X})\Big)+\sum_{\textbf{Z}}Q(\textbf{Z})\Big[\log P(\textbf{Z},\textbf{X})-\log Q(\textbf{Z})\Big] logP(X)=DKL(Q(Z)∣∣P(Z∣X))+Z∑Q(Z)[logP(Z,X)−logQ(Z)]
在上式中,在给定了隐变量 Z \textbf{Z} Z 之后, P ( X ) P(\textbf{X}) P(X) 是恒定。由于 D K L ( Q ( Z ) ∣ ∣ P ( Z ∣ X ) ) > = 0 D_{KL}\Big(Q(\textbf{Z})||P(\textbf{Z}|\textbf{X})\Big)>=0 DKL(Q(Z)∣∣P(Z∣X))>=0,因而很自然的我们可以得到 log P ( X ) \log P(\textbf{X}) logP(X) 的下界 ∑ Z Q ( Z ) [ log P ( Z , X ) − log Q ( Z ) ] \sum_{\textbf{Z}}Q(\textbf{Z})\Big[\log P(\textbf{Z},\textbf{X})-\log Q(\textbf{Z})\Big] ∑ZQ(Z)[logP(Z,X)−logQ(Z)],在期望最大化框架下 log P ( X ) \log P(\textbf{X}) logP(X) 又被称为 log-evidence,而其下界又称ELBO(Evidence Lower Boundary)。
我们的目标——最小化KL散度可以转化为最大化 ∑ Z Q ( Z ) [ log P ( Z , X ) − log Q ( Z ) ] \sum_{\textbf{Z}}Q(\textbf{Z})\Big[\log P(\textbf{Z},\textbf{X})-\log Q(\textbf{Z})\Big] ∑ZQ(Z)[logP(Z,X)−logQ(Z)]:
arg min Q D K L ( Q ( Z ) ∣ ∣ P ( Z ∣ X ) ) ↔ arg max Q ∑ Z Q ( Z ) [ log P ( Z , X ) − log Q ( Z ) ] \mathop{\arg \min}\limits_{Q} D_{KL}\Big(Q(\textbf{Z})||P(\textbf{Z}|\textbf{X})\Big)\leftrightarrow\mathop{\arg \max}\limits_{Q}\sum_{\textbf{Z}}Q(\textbf{Z})\Big[\log P(\textbf{Z},\textbf{X})-\log Q(\textbf{Z})\Big] QargminDKL(Q(Z)∣∣P(Z∣X))↔QargmaxZ∑Q(Z)[logP(Z,X)−logQ(Z)]
我们可以借助平均场(Mean field)的思想简化上述目标的计算。平均场认为构成变分分布 Q ( Z ) Q(\textbf{Z}) Q(Z) 的隐变量相互之间时独立的,即:
Q ( Z ) = ∏ i = m Q ( z i ) Q(\textbf{Z})=\prod_{i=}^{m}Q(z_i) Q(Z)=i=∏mQ(zi)
我们将其带入ELBO的公式得:
E L B O = ∑ Z ∏ i = 1 m Q ( z i ) [ log P ( z i , X ) ] − ∑ Z ∏ i = 1 m Q ( z i ) [ log Q ( z i ) ] ELBO=\sum_{\textbf{Z}}\prod_{i=1}^{m}Q(z_i)\Big[\log P(z_i,\textbf{X})\Big]-\sum_{\textbf{Z}}\prod_{i=1}^{m}Q(z_i)\Big[\log Q(z_i)\Big] ELBO=Z∑i=1∏mQ(zi)[logP(zi,X)]−Z∑i=1∏mQ(zi)[logQ(zi)]
进一步的,我们可以利用条件概率公式对隐变量和观测值的联合概率进行展开:
E L B O = ∑ Z ∏ i = 1 m Q ( z i ) [ log P ( z i ∣ X ) ] + ∑ Z ∏ i = 1 m Q ( z i ) [ log P ( X ) ] − ∑ Z ∏ i = 1 m Q ( z i ) [ log Q ( z i ) ] ELBO=\sum_{\textbf{Z}}\prod_{i=1}^{m}Q(z_i)\Big[\log P(z_i|\textbf{X})\Big]+\sum_{\textbf{Z}}\prod_{i=1}^{m}Q(z_i)\Big[\log P(\textbf{X})\Big]-\sum_{\textbf{Z}}\prod_{i=1}^{m}Q(z_i)\Big[\log Q(z_i)\Big] ELBO=Z∑i=1∏mQ(zi)[logP(zi∣X)]+Z∑i=1∏mQ(zi)[logP(X)]−Z∑i=1∏mQ(zi)[logQ(zi)]
由此我们就得到了ELBO的平均场近似形式。之后。我们分别固定 i i i 的取值,对于每一个 z i z_i zi 我们利用坐标上升算法(coordinate ascent)进行优化,最终完成我们目标。
我们还可以节借助黑盒变分推断(Mean field)来完成最大化ELBO的计算。我们假设 变分分布 Q ( Z ) Q(\textbf{Z}) Q(Z) 的参数为 θ \theta θ,那么变分分布可以记为 Q ( Z ; θ ) Q(Z;\theta) Q(Z;θ) 因而ELBO可以重写做:
E L B O = ∑ Z Q ( Z ; θ ) [ log P ( Z , X ) − log Q ( Z ; θ ) ] ELBO=\sum_{\textbf{Z}}Q(\textbf{Z};\theta)\Big[\log P(\textbf{Z},\textbf{X})-\log Q(\textbf{Z};\theta)\Big] ELBO=Z∑Q(Z;θ)[logP(Z,X)−logQ(Z;θ)]
为了得到我们的优化目标,我们对 θ \theta θ 求导:
∇ E L B O = ∇ ∑ Z Q ( Z ; θ ) [ log P ( Z , X ) Q ( Z ; θ ) ] \nabla ELBO=\nabla \sum_{\textbf{Z}} Q(\textbf{Z};\theta)\Big[\log \frac{P(\textbf{Z},\textbf{X})}{Q(\textbf{Z};\theta)}\Big] ∇ELBO=∇Z∑Q(Z;θ)[logQ(Z;θ)P(Z,X)]
▽ E L B O = ∑ Z ∇ Q ( Z ; θ ) [ log P ( Z , X ) Q ( Z ; θ ) ] + ∑ Z Q ( Z ; θ ) ∇ [ log P ( Z , X ) Q ( Z ; θ ) ] \triangledown ELBO=\sum_{\textbf{Z}} \nabla Q(\textbf{Z};\theta)\Big[\log \frac{P(\textbf{Z},\textbf{X})}{Q(\textbf{Z};\theta)}\Big] + \sum_{\textbf{Z}} Q(\textbf{Z};\theta)\nabla \Big[\log \frac{P(\textbf{Z},\textbf{X})}{Q(\textbf{Z};\theta)}\Big] ▽ELBO=Z∑∇Q(Z;θ)[logQ(Z;θ)P(Z,X)]+Z∑Q(Z;θ)∇[logQ(Z;θ)P(Z,X)]
经过一系列变换我们可以发现ELBO的第二项为0:
∇ E L B O = ∑ Z ∇ Q ( Z ; θ ) [ log P ( Z , X ) Q ( Z ; θ ) ] \nabla ELBO=\sum_{\textbf{Z}} \nabla Q(\textbf{Z};\theta)\Big[\log \frac{P(\textbf{Z},\textbf{X})}{Q(\textbf{Z};\theta)}\Big] ∇ELBO=Z∑∇Q(Z;θ)[logQ(Z;θ)P(Z,X)]
进一步的,我们对其进行稍加变换:
∇ E L B O = ∑ Z Q ( Z ; θ ) ∇ Q ( Z ; θ ) Q ( Z ; θ ) [ log P ( Z , X ) Q ( Z ; θ ) ] = ∑ Z Q ( Z ; θ ) ∇ [ ln Q ( Z ; θ ) ] log P ( Z , X ) Q ( Z ; θ ) \nabla ELBO=\sum_{\textbf{Z}}Q(\textbf{Z};\theta)\frac{\nabla Q(\textbf{Z};\theta)}{Q(\textbf{Z};\theta)}\Big[\log \frac{P(\textbf{Z},\textbf{X})}{Q(\textbf{Z};\theta)}\Big]=\sum_{\textbf{Z}}Q(\textbf{Z};\theta)\nabla\Big[\ln{Q(\textbf{Z};\theta)}\Big]\log \frac{P(\textbf{Z},\textbf{X})}{Q(\textbf{Z};\theta)} ∇ELBO=Z∑Q(Z;θ)Q(Z;θ)∇Q(Z;θ)[logQ(Z;θ)P(Z,X)]=Z∑Q(Z;θ)∇[lnQ(Z;θ)]logQ(Z;θ)P(Z,X)
我们可以将上式看作 ∇ [ ln Q ( Z ; θ ) ] log P ( Z , X ) Q ( Z ; θ ) \nabla\Big[\ln{Q(\textbf{Z};\theta)}\Big]\log \frac{P(\textbf{Z},\textbf{X})}{Q(\textbf{Z};\theta)} ∇[lnQ(Z;θ)]logQ(Z;θ)P(Z,X) 的平均值,进而采取蒙特卡洛采样方法得到 ∇ E L B O \nabla ELBO ∇ELBO 的近似解:
∇ E L B O = 1 N ∑ i = 1 N F ( Z i ) = 1 N ∑ i = 1 N ∇ [ ln Q ( Z i ; θ ) ] log P ( Z i , X ) Q ( Z i ; θ ) \nabla ELBO = \frac1N \sum_{i=1}^N F(\textbf{Z}_i) = \frac1N \sum_{i=1}^N \nabla\Big[\ln{Q(\textbf{Z}_i;\theta)}\Big]\log \frac{P(\textbf{Z}_i,\textbf{X})}{Q(\textbf{Z}_i;\theta)} ∇ELBO=N1i=1∑NF(Zi)=N1i=1∑N∇[lnQ(Zi;θ)]logQ(Zi;θ)P(Zi,X)
然后我们可以使用如下的梯度下降方法,通过调整参数 θ \theta θ 使 ∇ E L B O \nabla ELBO ∇ELBO 不断增大,直到出现最优解:
θ t + 1 = θ t + η ∇ E L B O \theta^{t+1} = \theta^t + \eta \nabla ELBO θt+1=θt+η∇ELBO
其中, η \eta η 是梯度下降方法中的学习率。
至此贝叶斯变分推断的方法介绍完成。
贝叶斯推理基于著名的贝叶斯理论发展而来,是统计学和机器学习领域的经典方法。其主要的缺点在于,在大部分情况下,需要复杂的计算。马尔可夫链蒙特卡罗旨在根据密度估计参数。密度可以非常复杂,也可以仅由一个因子确定。马尔可夫链蒙特卡罗在贝叶斯推理中主要用于从后验分布的“非标准化部分”中直接生成样本,避免复杂计算。变分推断是用于搜寻最优近似分布的方法。该方法通过优化参数,在给定数族中找到最优近似分布。 由于变分推断优化过程对目标分布中的乘积常数不敏感,该方法可以用于生成仅由一个归一化因子定义的后验分布的最优近似分布。
由于马尔可夫链蒙特卡罗和变分推断各有特色,它们常用于不同类型的问题中。一方面,马尔可夫链蒙特卡罗复杂的采样过程不会造成偏差。所以,马尔可夫链蒙特卡罗方法在不考虑计算时间、需要得到精确结果的情况下更受青睐。另一方面,虽然变分推断的数族选择过程会造成结果偏差,但它的参数优化过程非常合理。所以,变分推断方法常用于需要快速计算的大规模推断问题中。
变分推断方法的基本思想是通过使用已知简单分布来逼近需推断的复杂分布,并通过限制近似分布的类型,从而得到一种局部最优、但具有确定解的近似后验分布。虽然变分推断的数族选择过程会造成结果偏差,但它的参数优化过程非常合理,变分推断方法常用于需要快速计算的大规模推断问题中。总之,变分推断与基于蒙特卡洛抽样的方法都在贝叶斯推断中起着举足轻重的作用。
本文为作者原创,转载请注明来源:https://blog.csdn.net/BrilliantAntonio/article/details/116885492