变分推断(Variational Inference)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012313437/article/details/84329339


在概率模型的应用中,一个中心任务是在给定观测(可见)数据变量X的条件下,计算潜在变量Z的后验概率分布p(Z j X),以及计算关于这个概率分布的期望。对于实际应用中的许多模型来说,计算后验概率分布或者计算关于这个后验概率分布的期望是不可⾏的。这可能是由于潜在空间的维度太搞,以至于无法直接计算,或者由于后验概率分布的形式特别复杂,从而期望无法得到解析解。

变分

对于普通的函数f(x),我们可以认为f是一个关于x的一个实数算子,其作用是将实数x映射到实数f(x)。那么类比这种模式,假设存在函数算子F,它是关于f(x)的函数算子,可以将f(x)映射成实数F(f(x)) 。对于f(x)我们是通过改变x来求出f(x)的极值,而在变分中这个x会被替换成一个函数y(x),我们通过改变x来改变y(x),最后使得F(y(x))求得极值。

变分:指的是泛函的变分。它最终寻求的是极值函数:它们使得泛函取得极大或极小值。比如,从A点到B点有无数条路径,每一条路径都是一个函数,这无数条路径,每一条函数(路径)的长度都是一个数,那你从这无数个路径当中选一个路径最短或者最长的,这就是求泛函的极值问题。

变分推断

我们引入一个识别模型 qϕ(zx)q_\phi(z|x),它被用于逼近真实后验分布pθ(zx)p_\theta(z|x)。变分推断的目标是尽量缩小识别模型和后验分布的KL divergence,变分推断的将会得到一组qϕ(zx)q_\phi(z|x)
对对数边缘概率进行分解
我们通过对对数边缘概率的分解得到其ELOB与KL divergence的加和的形式。
KL divergence是衡量两个函数的不相似度,当等于0时表示两个分布完全一样。P(x)不变,那么想让KL( q || p )越小,即让ELOB越大,反之亦然。因为KL≥0,所以logP(x)≥ELOB。ELOB被称为变分下界。

平均场理论

在平均场理论中qϕ(zx)q\phi(z|x)被构造成了:
在这里插入图片描述
也就是假设qϕ(zx)q_\phi(z|x)函数的随机变量之间相互独立

变分下界

在这里插入图片描述

求解过程(极大化ELOB)

因为qi(zi)q_i(z_i)独立同分布,所以我们可以依次来优化,我们对其中一项qj(zj)q_j(z_j)为:
L(qj)=iqj{lnp(X,Z)ilnqi}dZ=qj{ln(X,Z)ijqidZi}dZjqjlnqjdZj+C=qjlnpˇ(X,Zj)dZjqjlnqjdZj+C \mathcal L(q_j)=\int \prod_i q_j\{ lnp(X,Z)-\sum_ilnq_i \} dZ \\=\int q_j\{ \int ln(X,Z) \prod_{i\neq j}q_i dZ_i \} dZ_j -\int q_j ln q_jd Z_j +C \\ =\int q_j ln\check{p}(X,Z_j)dZ_j - \int q_j lnq_jdZ_j +C
这其中的pˇ(X,Zj)\check{p}(X,Z_j)为出去第j项的期望Eij[lnp(X,Z)]+C\Bbb E_{i\neq j}[lnp(X,Z)]+C。波浪号代表的是近似。
=qilnpˇ(X,Zj)dZjqjlnqjdZj+C =\int q_iln\check p(X,Z_j) dZ_j-\int q_jlnq_jdZ_j+C
也就等价于-KL也就是说我们最小化KL散度,因此lnqj=Eij[lnp(X,Z)]+Clnq_j=\Bbb E_{i\neq j}[lnp(X,Z)]+C得到最优解。
归一化:
qj(Zj)=Eij[lnp(X,Z)]Eij[lnp(X,Z)]dZj q_j^*(Z_j)=\frac{\Bbb E_{i\neq j}[lnp(X,Z)]}{\int \Bbb E_{i\neq j}[lnp(X,Z)]dZ_j}

一元高斯分布的例子

我们现在有给定的观测值数据D={x1,x2,...,xn}D=\{ x_1,x_2,...,x_n \}的情况下推断均值μ和精度τ\tau的后验。其中,我们假设数据是独立地从高斯分布中抽取的。似然函数为:
p(Dμ,τ)=(τ2π)N2exp{τ2n=1N(xnμ)2} p(D|μ,\tau) = (\frac{\tau}{ 2π })^{\frac{N}{2}}exp\{ -\frac{\tau}{2}\sum_{n=1}^{N} (x_n-μ)^2 \}
我们现在引入μ和τ\tau的共轭先验分布
p(μτ)=N(μμ0,(λ0τ)1) p(τ)=Gam(τa0,b0) p(μ|\tau)=\mathcal{N}(μ|μ_0,(\lambda_0\tau)^-1) \\ \ \\ p(\tau)=Gam(\tau|a_0,b_0)
其中Gam为
Gam(λa0,b0)=1Γ(a)b0a0λa01exp(b0λ) Gam(\lambda | a_0,b_0)=\frac{1}{\Gamma(a)} b^{a_0}_0\lambda^{a_0-1}exp(-b_0\lambda)
我们可以看出后验依然是高斯gamma分布,后验概率分布的一个分解变分近似,形式为
q(μ,τ)=qμ(μ)qτ(τ) q(μ,\tau)=q_μ(μ)q_\tau(\tau)
最优因子qμq_μqτq_\tau可以通过式子lnq(μτ)=Eij[lnp(X,Z)]+Clnq(μ,\tau)=\Bbb E_{i\neq j}[lnp(X,Z)]+C得到
由上式我们对于qμ(μ)q_μ(μ)有:
lnqμ(μ)=Eτ[lnp(D,μτ)]+C=Eτ[lnp(Dμ,τ)+ln(μτ)]+C=Eτ[τ2n=1N(xnμ)2+N2lnτ2π+λ0(μμ0)2]+C=Eτ[τ2n=1N(xnμ)2τ2λ0(μμ0)2]+C=12E[τ]{λ0(μμ0)2+n=1N(xnμ)2}+C lnq_μ^*(μ)=\Bbb E_{\tau}[lnp(D,μ|\tau)]+C \\=\Bbb E_{\tau}[lnp(D|μ,\tau)+ln(μ|\tau)]+C \\=\Bbb E_{\tau}[ -\frac{\tau}{2}\sum_{n=1}^{N} (x_n-μ)^2 +\frac{N}2 ln\frac{\tau}{2\pi}+\lambda_0(\mu-\mu_0)^2]+C \\=\Bbb E_{\tau}[ -\frac{\tau}{2}\sum_{n=1}^{N} (x_n-μ)^2 -\frac{\tau}{2}\lambda_0(\mu-\mu_0)^2]+C \\=-\frac12 \Bbb E[\tau]\{\lambda_0(\mu-\mu_0)^2+\sum_{n=1}^N(x_n-\mu)^2\}+C 现在将ln去掉,我们可以发现qμq_\mu为一个高斯分布N(μμN,λN1)\mathcal{N}(\mu|\mu_N,\lambda_N^{-1})均值和方差为:
μN=λ0μ0+Nxλ0+NλN=(λ0+N)E[τ] \mu_N=\frac{\lambda_0\mu_0+N\overline{x}}{\lambda_0+N} \\ \lambda_N=(\lambda_0+N)\Bbb E[\tau]

对于qτ(τ)q_\tau(\tau)
lnqτ(τ)=Eτ[lnp(D,μτ)+lnp(μτ)]+lnp(τ)+C7lnp(τ)=ln(1Γ(a)b0a0λa01exp(b0λ))=(a01)lnτb0τ+N+12lnτ7=Eτ[τ2n=1N(xnμ)2τ2λ0(μμ0)2]+C+(a01)lnτb0τ+N+12lnτ lnq_\tau^*(\tau)=\Bbb E_{\tau} [ lnp(D,μ|\tau) +lnp(\mu|\tau) ] +lnp(\tau)+C(7) \\其中lnp(\tau)=ln(\frac{1}{\Gamma(a)} b^{a_0}_0\lambda^{a_0-1}exp(-b_0\lambda)) \\=(a_0-1)ln\tau - b_0\tau+\frac{N+1}2ln\tau \\式子(7)=\Bbb E_{\tau}[ -\frac{\tau}{2}\sum_{n=1}^{N} (x_n-μ)^2 -\frac{\tau}{2}\lambda_0(\mu-\mu_0)^2]+C \\+(a_0-1)ln\tau - b_0\tau+\frac{N+1}2ln\tau

例子:混合高斯的变分

我们现在使用变分推断的方法讨论高斯混合模型。如图所示,对于每一个观测xnx_n都有一个潜在的变量znz_n,它是一个1-of-K表示的二值向量,潜在变量Z={z1,...,zN}Z=\{z_1,...,z_N\}.观测数据集X={x1,...,xN}X=\{x_1,...,x_N \}
在这里插入图片描述
混合系数π,πkπ_k表示znk=1z_nk=1的概率:
p(Zπ)=n=1Nk=1Kπkznk p(Z|π)=\prod_{n=1}^N\prod_{k=1}^K π_k^{z_nk}
数据的条件概率分布为
p(XZ,μ,Λ)=n=1Nk=1KN(xnμk,Λk1)znk p(X|Z,μ,\Lambda)=\prod_{n=1}^N\prod_{k=1}^K \mathcal{N}(x_n|μ_k,\Lambda_k^{-1})^{z_nk}
然后我们引入参数μ,Λ,π\mu , \Lambda,\pi的先验分布,由共轭先验我们选择狄利克雷分布作为混合系数π\pi的先验
p(π)=Dir(πα0)=C(α0)k=1Kπkα01 p(\pi)=Dir(\pi|\alpha_0)=C(\alpha_0)\prod_{k=1}^K \pi_k^{\alpha_0-1}
其中C(α0\alpha_0)为归一化常数α0\alpha_0为超参数。
我们引入高斯-Wishart作为μ,Λ\mu,\Lambda的先验:
p(μ,Λ)=p(μΛ)p(Λ)=k=1KN(μkm0,(β0Λk)1)W(ΛkW0,v0) p(\mu,\Lambda)=p(\mu|\Lambda)p(\Lambda) \\=\prod_{k=1}^K\mathcal{N}(\mu_k|m_0,(\beta_0\Lambda_k)^{-1})\mathcal{W}(\Lambda_k|W_0,v_0)
在这里插入图片描述

变分分布

我们将上面的概率图模型表达的式子写出:
p(X,Z,π,μ,Λ)=p(XZ,μ,Λ)p(Zπ)p(π)p(μΛ)p(Λ)1 p(X,Z,\pi,\mu,\Lambda)=p(X|Z,\mu,\Lambda)p(Z|\pi)p(\pi)p(\mu|\Lambda)p(\Lambda) (1)
我们写出一个变分分布:
q(Z,π,μ,Λ)=q(Z)q(π,μ,Λ)2 q(Z,\pi,\mu,\Lambda)=q(Z)q(\pi,\mu,\Lambda) (2)
对于因子q(Z),最优因子对数为:
lnq(Z)=Eπ,μ,Λ[lnp(X,Z,π,μ,Λ)]+C3 lnq^*(Z)=\Bbb E_{\pi,\mu,\Lambda}[lnp(X,Z,\pi,\mu,\Lambda)]+C(3)
将上式拆分成式(1)的形式,我们现在只对变量Z相关的函数关系感兴趣,所以将与Z无关的项都整合到归一化系数中,上式可以改写成。
lnq(Z)=Eπ[lnp(Zπ)]+Eμ,Λ[lnp(XZ,μ,Λ)]+C4 lnq^*(Z)=\Bbb E_\pi[lnp(Z|\pi)]+\Bbb E_{\mu,\Lambda}[lnp(X|Z,\mu,\Lambda)]+C(4)
将上面的分布展开,把与z无关的项放入常数项中lnq(Z)=n=1Nk=1Kznklnρnk+C5lnρnklnρnk=E[lnπk]+12E[ln[Λk]]D2ln(2π)12Eμk,Λk[(xnμk)TΛk(xnμk)] lnq^*(Z)=\sum_{n=1}^{N}\sum_{k=1}^Kz_{nk}ln\rho_{nk}+C(5) \\其中ln\rho_{nk}为: \\ln\rho_{nk}=\Bbb E[ln\pi_k]+ \frac12 \Bbb E[ln[\Lambda_k]]-\frac{D}2ln(2\pi) \\-\frac12\Bbb E_{\mu_k,\Lambda_k}[(x_n-\mu_k)^T\Lambda_k(x_n-\mu_k)]
我们对式5两侧取指数可以得到:
在这里插入图片描述
我们要求这个概率分布是归一化的,并且我们注意到对于每个n值, znk都是二值的,在所有的k值上的加和等于1,因此我们有
q(Z)=n=1Nk=1Krnkznk:rnk=ρnkj=1kρnj q^*(Z)=\prod_{n=1}^N\prod_{k=1}^K r_{nk}^{z_{nk}} \\其中: \\r_{nk}=\frac{\rho_{nk}}{\sum_{j=1}^k\rho_{nj}}

于ρnk是一个实数值的指数,因此rnkr_{nk}是非负的,且加和等于1,满足要求。对于离散概率分布q(Z)q^*(Z),我们有标准的结果:
E[znk]=rnk \Bbb E[z_{nk}]=r_{nk}
得到了因子q(Z)的最优解,我们再来观察分布中的因子q(π,μ,Λ)q(\pi,\mu,\Lambda)
lnq(π,μ,Λ)=lnp(π)+k=1Klnp(μk,Λk)+EZ[lnp(Zπ)]+k=1Kn=1NE[znk]lnN(xnμk,Λk1)6 lnq^*(\pi,\mu,\Lambda)=lnp(\pi)+\sum_{k=1}^Klnp(\mu_k,\Lambda_k)+\Bbb E_Z[lnp(Z|\pi)] \\+\sum_{k=1}^K\sum_{n=1}^N\Bbb E[z_{nk}]ln\mathcal{N}(x_n|\mu_k,\Lambda_k^{-1})(6)
我们观察到,这个表达式右侧可以分解成若干项的和,其中一些只与π\pi有关,一些项只与μΛ\mu和\Lambda有关因此可以进一步的分解:
q(π,μ,Λ)=q(π)k=1Kq(μk,Λk)7 q(\pi,\mu,\Lambda)=q(\pi)\prod_{k=1}^K q(\mu_k,\Lambda_k) (7)
对(6)式分离出与π\pi相关的项有:
lnq(π)=(α01)k=1lnπk+k=1Kn=1Nrnklnπk+Cq(π)ααkq(π)=Dir(παk)αk=α0+Nk lnq^*(\pi)=(\alpha_0-1)\sum_{k=1}ln\pi_k+\sum_{k=1}^K\sum_{n=1}^Nr_{nk}ln\pi_k+C \\可以将q^*(\pi)看成是狄利克雷分布其中\alpha元素为\alpha_k,形式为:\\q^*(\pi)=Dir(\pi|\alpha_k) \\\alpha_k=\alpha_0+N_k
然后q(μk,Λk)q^*(\mu_k,\Lambda_k)可以使用乘积规则改写为q(μkΛk)q(Λk)q^*(\mu_k|\Lambda_k)q^*(\Lambda_k)观察式(6)为一个高斯-Wishart分布,形式为:
q(μk,Λk)=N(μkmk,(βk,Λk)1)W(ΛkWk,vk) q^*(\mu_k,\Lambda_k)=\mathcal N(\mu_k|m_k,(\beta_k,\Lambda_k)^{-1})\mathcal W(\Lambda_k|W_k,v_k)
其中我们已经定义了
在这里插入图片描述

变分下界

我们也可以计算这个模型的下界:
L(qj)=q{lnp(X,Z)ilnqi}dZ \mathcal L(q_j)=\int q\{ lnp(X,Z)-\sum_ilnq_i \} dZ
在重新估计期间监视模型的下界可以用来检测是否收敛。它也可以为解的数学表达式和它们的软件执行提供一个有价值的检查,因为在迭代重新估计的每个步骤中,这个下界的值应该不会减小。

预测概率密度

在高斯模型的贝叶斯混合的应用中,我们通常对观测变量的新值xˇ\check{x}的预测概率密度感兴趣。与这个观测相关联的有一个潜在变量zˇ\check{z},从而预测概率分布为
p(xˇX)=zˇπkN(xˇμk,Λk1)p(π,μ,ΛX)dπdμdΛ p(\check{x}|X)=\sum_{\check{z}}\iiint\pi_k\mathcal{N}(\check{x}|\mu_k,\Lambda_k^{-1})p(\pi,\mu,\Lambda|X)d\pi d\mu d \Lambda
其中p(π,μ,ΛX)p(\pi,\mu,\Lambda|X)是参数的(未知)真实后验概率分布。我们可以先完成在zˇ\check z上的求和,得到
在这里插入图片描述
由于剩下的积分是无法计算的,因此我们通过将真实后验概率分布p(π,μ,ΛX)p(\pi,\mu,\Lambda|X)用它的变分近似q(π)q(µ,Λ)替换的方式来近似预测概率分布:
p(xˇX)k=1KπkN(xˇμk,Λk1)q(π)q(μk,Λk)dπdμkdΛk p(\check x|X)\backsimeq \sum_{k=1}^K\iiint\pi_k\mathcal N(\check x|\mu_k,\Lambda_k^{-1})q(\pi)q(\mu_k,\Lambda_k)d\pi d\mu_k d\Lambda_k
其中我们使用了(7)式给出的分解⽅式,并且在每⼀项中,我们已经隐式地将j ̸= k的全部{μj,Λj\mu_j,\Lambda_j}变量积分出去。,剩余的积分现在可以解析地计算,得到一个学生t分布的混合,即
在这里插入图片描述

变分线性回归

在模型证据框架中,我们通过使用最大化似然函数的方法进行点估计,从而近似了在α和β上的积分。一个纯粹的贝叶斯方法会对所有的超参数和参数进行积分。虽然精确的积分是无法计算的,但是我们可以使用变分法来找到一个可以处理的近似。
ω\omega的似然函数和先验分布为:
p(tω)=n=1NN(tnωTϕn,β1)p(ωα)=N(ω0,α1I)p(α)=Gam(αa0,b0) p(t|\omega)=\prod_{n=1}^N\mathcal{N}(t_n|\omega^T\phi_n,\beta^{-1}) \\p(\omega|\alpha)=\mathcal{N}(\omega|0,\alpha^{-1}I) \\p(\alpha)=Gam(\alpha|a_0,b_0)
可以表示为:
在这里插入图片描述
所有变量上的联合分布为:
p(t,ω,α)=p(tω)p(ωα)p(α) p(t,\omega,\alpha)=p(t|\omega)p(\omega|\alpha)p(\alpha)

变分分布

变分后验概率分布的分解表达式为:
q(ω,α)=q(ω)q(α) q(\omega,\alpha)=q(\omega)q(\alpha)
我们可以使用:
在这里插入图片描述
来找到这个分布中的因子的重新估计方程。对于每个因子,我们取所有变量上的联合概率分布的对数,然后关于不在这个因子中的变量求平均。首先考虑α上的概率分布。只保留与α有函数依赖关系的项,我们有
lnq(α)=lnp(α)+Eω[lnp(ωα)]+C=(α01)lnαb0α+M2lnαα2E[ωTω]+C lnq^*(\alpha)=lnp(\alpha)+\Bbb E_\omega[lnp(\omega|\alpha)]+C \\=(\alpha_0-1)ln\alpha-b_0\alpha+\frac M2ln\alpha-\frac{\alpha}2\Bbb E[\omega^T\omega]+C
通过观察我们有
q(α)=Gam(αa0+M2,b0+12E[ωTω]) q^*(\alpha)=Gam(\alpha|a_0+\frac M2,b_0+\frac 12\Bbb E[\omega^T\omega])
我们也可以找到ω\omega上的后验概率分布的变分冲估计方程:
lnq(ω)=lnp(tω)+Eα[lnp(ωα)]+c=β2n=1N{ωTϕntn}212E[α]ωTω+C=12ωT(E[α]I+βΦTΦ)ω+βωTΦTt+C lnq^*(\omega)=lnp(t|\omega)+\Bbb E_\alpha[lnp(\omega|\alpha)]+c \\=-\frac\beta 2\sum_{n=1}^N\{ \omega^T\phi_n-t_n \}^2-\frac12\Bbb E[\alpha]\omega^T\omega+C \\=-\frac12\omega^T(\Bbb E[\alpha]I+\beta\Phi^T\Phi)\omega+\beta\omega^T\Phi^Tt+C
由于这是一个二次型,因此分布q∗(w)是一个高斯分布,因此我们可以使用一般的配平方的方法,得到均值和协方差,结果为
在这里插入图片描述

预测分布

给定一个新的输如x,使用参数的高斯变分后验概率很容易计算出t上的预测分布,即
在这里插入图片描述
这里,与输入相关的方差为:
在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页