变分推断(变分贝叶斯)

泛涵与变分法

函数通常可以表示为y=f(x),指自变量x到因变量y的映射关系。而泛函可以表示为y=F(f(x)),表示为函数的函数到一实数的映射关系,称F(f(x))f(x)的泛函。微积分的方法用于求函数的极值,变分法则是用于求使得泛函F(f(x))取得极值的函数f(x)。常见的泛函是熵,-\sum_{x\in X}p(x)\log{p(x)},其中,p(x)为一离散随机变量的概率密度函数。变分法则用于解决最大熵问题,寻找一个概率分布,使得这个概率分布的熵最大。泛函和变分法在贝叶斯模型里也有应用。

变分推断

假设在一个贝叶斯模型中,\boldsymbol{\mathbf{}x}为一组观测变量,\mathbf{z}为一组隐变量,参数也看作随机变量,包含于\mathbf{z}中,一个最重要的问题就是计算后验概率,即条件概率p(\mathbf{z}|\mathbf{x})

\displaystyle p(\mathbf{z}|\mathbf{x}) = \frac{p(\mathbf{x},\mathbf{z})}{p(\mathbf{x})}=\frac{p(\mathbf{x},\mathbf{z})}{\int _zp(\mathbf{x},\mathbf{z})dz}

在GMM中,p(\mathbf{z}|\mathbf{x})还算比较好计算,隐变量是一维离散变量,

\displaystyle p(z^{(n)}|x^{(n)};\theta_t) = \frac{p_{z^{(n)}}^{t}N(x^{(n)};\mu_{z^{(n)}}^{t},\sigma_{z^{(n)}}^{t})}{\sum_{k=1}^{K}p_{k}^{t}N(x^{(n)};\mu_{k}^{t},\sigma_{k}^{t})}

其中,上标为t的参数均为之前一步中求得的参数,是已知的,详情可见笔者的上一篇文章GMM高斯混合模型

如果隐变量是连续或高维的,可能达到指数级的计算复杂度。这时候就需要使用变分推断的方法去近似条件概率p(\mathbf{z}|\mathbf{x})。变分推断是变分法在推断问题中的应用,寻找一个简单分布q*(\mathbf{z})来近似p(\mathbf{z}|\mathbf{x}),可以写成一个泛函优化的问题,即求使得泛函取极值的函数。

q^*(\mathbf{z}) = \underset{q(\mathbf{z})\in \mathbb{Q} }{argmin}KL(q(\mathbf{z})||p(\mathbf{z}|\mathbf{x}))

其中\mathbb{Q}是候选的概率分布族,在这个式子中,又涉及到了p(\mathbf{z}|\mathbf{x})的求解问题,这不兜了一个圈子回来了吗?不急,这个式子只是一个基本思想,接下来需要将其转换为好求解的式子。在笔者的EM算法及公式推导这篇文章中,已经证明了

\begin{aligned} \displaystyle \log{p(\mathbf{x})} &= \int_{\mathbf{z}}q(\mathbf{z})log\frac{p(\mathbf{x},\mathbf{z})}{q(\mathbf{z})}d\mathbf{z}+KL(q(\mathbf{z})||p(\mathbf{z}|\mathbf{x}))\\ &=ELBO(q,\mathbf{x})+KL(q(\mathbf{z})||p(\mathbf{z}|\mathbf{x})) \end{aligned}

在这里,参数\theta被视为随机变量,包含于隐变量\mathbf{z}中。这样就可以将问题转换为

\begin{aligned} q^*(\mathbf{z}) &= \underset{q(\mathbf{z})\in \mathbb{Q} }{argmin}\log{p(\mathbf{x})}-ELBO(q,\mathbf{x})\\ &=\underset{q(\mathbf{z})\in \mathbb{Q} }{argmax}ELBO(q,\mathbf{x}) \end{aligned}

为方便之后的公式推导。将这里的ELBO写成泛函的形式

\displaystyle L(q) = \int_{\mathbf{z}}q(\mathbf{z})\log{p(\mathbf{x},\mathbf{z})}d\mathbf{z}-\int_{\mathbf{z}}q(\mathbf{z})\log{q(\mathbf{z})}d\mathbf{z}

基于平均场假设的变分推断

\mathbb{Q}为平均场分布族时,上述的变分推断就是基于平均场假设的变分推断。平均场分布族中,隐变量\mathbf{z}可以分拆为多组相互独立的变量,概率密度q(\mathbf{z})可以分解为

\displaystyle q(\mathbf{z}) = \prod_{m=1}^{M}q_m(\mathbf{z_m})

其中z_m\mathbf{z}的子集,可以是单变量,也可以是多元变量。接着看L(q)的第一项,将q(\mathbf{z})表达式代入,同时分离出q_j(\mathbf{z_j})

\begin{aligned} \int_{\mathbf{z}}q(\mathbf{z})\log{p(\mathbf{x},\mathbf{z})}d\mathbf{z}& = \int_{\mathbf{z}} \prod_{m=1}^{M}q_m(\mathbf{z_m})\log{p(\mathbf{x},\mathbf{z})}d\mathbf{z}\\ &=\int _{\mathbf{z_j}}q_j(\mathbf{z_j})\int _{\mathbf{z_m}(\mathbf{z_m}\neq \mathbf{z_j})}\prod_{m\neq j}q_m(\mathbf{z_m})\log{p(\mathbf{x},\mathbf{z})}d\mathbf{z_m}d\mathbf{z_j} \\ &=\int _{\mathbf{z_j}}q_j(\mathbf{z_j})E_{\prod_{m\neq j}q_m(\mathbf{z_m})}\log{p(\mathbf{x},\mathbf{z})}d\mathbf{z_j} \\ &=\int _{\mathbf{z_j}}q_j(\mathbf{z_j})\log{\tilde{p}(\mathbf{x},\mathbf{z_j})}d\mathbf{z_j}+C \end{aligned}

其中,\log{\tilde{p}(\mathbf{x},\mathbf{z_j})}是关于\mathbf{z_j}的未归一化的分布,有

\log{\tilde{p}(\mathbf{x},\mathbf{z_j})}=E_{\prod_{m\neq j}q_m(\mathbf{z_m})}\log{p(\mathbf{x},\mathbf{z})}+C

L(q)的第二项可写为

\begin{aligned} \displaystyle \int_{\mathbf{z}}q(\mathbf{z})\log{q(\mathbf{z})}d\mathbf{z} &= \int_{\mathbf{z}}\prod_{m=1}^{M}q_m(\mathbf{z_m})\sum_{m=1}^{M}\log{q_m(\mathbf{z_m})}d\mathbf{z}\\ &=\int_{\mathbf{z}}\prod_{m=1}^{M}q_m(\mathbf{z_m})[\log{q_1(\mathbf{z_1})}+......+\log{q_M(\mathbf{z_M})}]d\mathbf{z} \end{aligned}

再次将其展开,写成多个积分相加的形式,看其中的第一项(q_mq_m(\mathbf{z_m})的缩写)

\begin{aligned} \displaystyle \int_{\mathbf{z}}\prod_{m=1}^{M}q_m(\mathbf{z_m})\log{q_1(\mathbf{z_1})}d\mathbf{z} &=\int_{\mathbf{z_1}...\mathbf{z_M}}q_1q_2...q_M\log{q_1}d\mathbf{z_1}...d\mathbf{z_M}\\ &=\int_{\mathbf{z_1}}q_1\log{q_1}d\mathbf{z_1}\int_{\mathbf{z_2}}q_2d\mathbf{z_2}...\int_{\mathbf{z_M}}q_Md\mathbf{z_M} \\ &=\int_{\mathbf{z_1}}q_1\log{q_1}d\mathbf{z_1} \end{aligned}

所以,L(q)的第二项又可写为

\begin{aligned} \displaystyle \int_{\mathbf{z}}q(\mathbf{z})\log{q(\mathbf{z})}d\mathbf{z} &= \sum_{m=1}^{M}\int_{\mathbf{z_m}}q_{\mathbf{z_m}}\log{q_{\mathbf{z_m}}}d\mathbf{z_m} \\ &=\int_{\mathbf{z_j}}q_{\mathbf{z_j}}\log{q_{\mathbf{z_j}}}d\mathbf{z_j}+C\end{aligned}

最终,L(q)可以写为

\displaystyle L(q) = \int_{\mathbf{\mathbf{z_j}}}q_j(\mathbf{z_j})\log{\frac{\tilde{p}(\mathbf{x},\mathbf{z_j})}{q_j(\mathbf{z_j})}}d\mathbf{z_j}+C = -KL(q_j(\mathbf{z_j})||\tilde{p}(\mathbf{x},\mathbf{z_j}))+C\leq C

因此最大化ELBO(q,\mathbf{x})等价于最小化KL(q_j(\mathbf{z_j})||\tilde{p}(\mathbf{x},\mathbf{z_j})),即找到了最优的简单分布q_j^*(\mathbf{z_j}) = \tilde{p}(\mathbf{x},\mathbf{z_j})

\tilde{p}(\mathbf{x},\mathbf{z_j})\propto exp(E_{\prod_{m\neq j}q_m(\mathbf{z_m})}\log{p(\mathbf{x},\mathbf{z})})

这样,关于q_j^*(\mathbf{z_j})的计算依赖于其他的q_m(\mathbf{z_m}),对于每一个q_j,采用坐标上升的方法,固定其余q_m,依次求解,直到求出局部最优解q(\mathbf{z})

随机梯度变分推断(SGVI)

优化方法除了坐标上升,还有梯度上升,这里将阐述通过梯度上升来得到变分推断的另一种算法。

首先假设q(\mathbf{z})=q_\phi(\mathbf{z}),即\phiq(\mathbf{z})相关联。于是可以将泛函优化转换为函数优化,即

\underset{q(\mathbf{z})}{argmax}L(q)=\underset{\phi }{argmax}L(\phi )

其中\displaystyle L(\phi) = E_{q_\phi(\mathbf{z})}[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}],接着对该式中的\phi进行梯度计算

\begin{aligned} \nabla_\phi L(\phi) &= \nabla_\phi E_{q_\phi(\mathbf{z})}[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]\\ &= \nabla_\phi\int_{\mathbf{z}}q_\phi(\mathbf{z})[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]d\mathbf{z}\\ &=\int_{\mathbf{z}}\nabla_\phi q_\phi(\mathbf{z}) \cdot [\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]d\mathbf{z}+\int_{\mathbf{z}} q_\phi(\mathbf{z}) \cdot \nabla_\phi[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]d\mathbf{z} \end{aligned}

上述式子将期望写成积分的形式,同时交换求导和积分次序,最后展开的第二项又可写为

\displaystyle \int_{\mathbf{z}} q_\phi(\mathbf{z}) \cdot \nabla_\phi[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]d\mathbf{z}\\ =-\int_{\mathbf{z}} q_\phi(\mathbf{z})\nabla_\phi \log{q_\phi(\mathbf{z})}d\mathbf{z}\\ =-\int_{\mathbf{z}} q_\phi(\mathbf{z})\frac{1}{q_\phi(\mathbf{z})}\nabla_\phi q_\phi(\mathbf{z})d\mathbf{z}\\ =-\int_{\mathbf{z}}\nabla_\phi q_\phi(\mathbf{z})d\mathbf{z}\\ =-\nabla_\phi\int_{\mathbf{z}} q_\phi(\mathbf{z})d\mathbf{z}\\ =-\nabla_\phi1\\ =0

因此,\nabla_\phi L(\phi)等于展开后的第一项,即

\begin{aligned} \nabla_\phi L(\phi) &= \int_{\mathbf{z}}\nabla_\phi q_\phi(\mathbf{z}) \cdot [\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]d\mathbf{z}\\ &= \int_{\mathbf{z}}q_\phi(\mathbf{z})[\nabla_\phi \log{q_\phi(\mathbf{z})}][\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]d\mathbf{z}\\ &=E_{q_\phi(\mathbf{z})}[\nabla_\phi \log{q_\phi(\mathbf{z})}][\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}] \end{aligned}

最终的表达式是一个期望,这个期望可以采用蒙特卡洛采样来近似,得到梯度后,使用梯度上升的方式来得到参数\phi的梯度,即

\mathbf{z}^{(l)}\sim q_\phi(\mathbf{z})

q_\phi(\mathbf{z})里采样,得到样本\mathbf{z}^{(l)}

\displaystyle E_{q_\phi(\mathbf{z})}\nabla_\phi \log{q_\phi(\mathbf{z})}[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}] =\frac{1}{L}\sum_{l=1}^{L}\nabla_\phi \log{q_\phi(\mathbf{z}^{(l)})}[\log{p(\mathbf{x},\mathbf{z}^{(l)})}-\log{q_\phi(\mathbf{z}^{(l)})}]

但是在采样过程中,求和符号中有一个对数项,直接采样的话,如果q_\phi(\mathbf{z})采到接近于 0的样本点会造成这个对数值非常的不稳定,也就是说直接采样的方差很大,为了解决方差很大的问题,可以采用重参数化技巧(Reparameterization)。

\displaystyle \mathbf{z}=g_\phi(\varepsilon ,\mathbf{x}),\varepsilon \sim p(\varepsilon),对\mathbf{z}\sim q_\phi(\mathbf{z}),存在| q_\phi(\mathbf{z})d\mathbf{z}| = |p(\mathbf{\varepsilon} )d\mathbf{\varepsilon} |,这样就将\mathbf{z}的随机性转移到\varepsilon上,

\begin{aligned} \nabla_\phi L(\phi) &=\nabla_\phi E_{q_\phi(\mathbf{z})} [\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}] \\ &=\nabla_\phi \int_{\mathbf{z}}[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]q_\phi(\mathbf{z})d\mathbf{z}\\ &=\nabla_\phi \int_{\mathbf{\varepsilon }}[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]p(\mathbf{\varepsilon })d\mathbf{\varepsilon } \\ &=\nabla_\phi E_{p(\varepsilon )}[\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})}]\\ &=E_{p(\varepsilon )}[\nabla_\phi(\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})})]\\ &=E_{p(\varepsilon )}[\nabla_{\mathbf{z}}(\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})})\nabla_{\phi}\mathbf{z}]\\ &=E_{p(\varepsilon )}[\nabla_{\mathbf{z}}(\log{p(\mathbf{x},\mathbf{z})}-\log{q_\phi(\mathbf{z})})\nabla_{\phi}g_\phi(\varepsilon ,\mathbf{x})] \end{aligned}

最终采用蒙特卡洛采样来近似,即从p(\varepsilon )中采样得到\varepsilon,然后再计算期望,得到梯度后利用式子

\phi^{(t+1)}=\phi^{(t)}+\lambda \nabla_\phi L(\phi)

来更新参数\phi,从而求出最优的后验概率p(\mathbf{z}|\mathbf{x})的近似分布q(\mathbf{z})

参考资料

神经网络与深度学习https://nndl.github.io/白板推导之变分推断https://www.bilibili.com/video/BV1aE411o7qd?p=70&vd_source=ae87fac745d78042d477bc11e9bf41b0

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
变分贝叶斯推断(Variational Bayesian Inference)是一种用于近似推断概率模型参数的方法,而高斯混合模型(Gaussian Mixture Model,简称GMM)是一种常用的概率模型,用于对数据进行聚类和密度估计。 在变分贝叶斯推断中,我们希望找到一个近似的后验分布来描述模型参数的不确定性。对于GMM而言,我们需要推断每个高斯分量的均值、协方差矩阵以及每个分量的权重。为了达到这个目标,我们需要引入一个变分分布来逼近后验分布。 具体步骤如下: 1. 假设变分分布由一组参数表示,例如均值和协方差矩阵。可以选择一个具有高灵活性的分布族,如高斯分布。 2. 使用变分推断方法,通过最小化原始模型与变分分布之间的KL散度来找到最佳的变分分布参数。 3. 在高斯混合模型中,我们可以使用变分EM算法来进行推断。首先,使用EM算法通过迭代更新估计模型参数。然后,使用变分推断来更新变分分布参数。 4. 变分推断的迭代过程通常涉及期望步骤(E-step)和最大化步骤(M-step)。在E步中,计算变分分布的期望参数。在M步中,使用这些期望参数来更新模型参数。 5. 迭代上述步骤,直到满足收敛准则,如变分下界(variational lower bound)的收敛。 总的来说,变分贝叶斯推断对于GMM的推断过程涉及到选择适当的变分分布以及迭代的EM算法变分推断步骤。它通过近似计算后验分布来推断GMM的参数,可用于聚类分析、异常检测等任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值