变分推断
变分推断就是用简单的分布q去近似复杂的分布p。
以上这句话是对变分推断最直接的理解。那么,为什么要选择用变分推断?
因为,大多数情况下后验分布很难求。如果后验概率好求解的话我们直接采用EM就可以。当后验分布难于求解的时候我们就希望选择一些简单的分布来近似这些复杂的后验分布。特别的,如果我们选择的q是指数族内的分布,更易于积分求解。
Evidence Lower Bound(ELOB)
由贝叶斯公式可得 ln(p(X))=ln(p(X,Z)−ln(p(Z|X))ln(p(X))=ln(p(X,Z)−ln(p(Z|X)) 继续推导如下:
ln(p(X))=ln(p(X,Z)−ln(p(Z|X))ln(p(X))=ln(p(X,Z)−ln(p(Z|X))
ln(p(X))=ln(p(X,Z)−ln(q(Z))−(ln(p(Z|X))−ln(q(Z)))ln(p(X))=ln(p(X,Z)−ln(q(Z))−(ln(p(Z|X))−ln(q(Z)))
ln(p(X))=ln(P(X,Z)q(Z))−ln(p(Z|X)ln(q(Z))ln(p(X))=ln(P(X,Z)q(Z))−ln(p(Z|X)ln(q(Z))
以q(Z)q(Z)为概率密度对其积分:
ln(p(X))=∫q(Z)ln(P(X,Z)q(Z))dZ−∫q(Z)ln(p(Z|X)ln(q(Z))dZln(p(X))=∫q(Z)ln(P(X,Z)q(Z))dZ−∫q(Z)ln(p(Z|X)ln(q(Z))dZ
ln(p(X))=∫q(Z)ln(p(X,Z))dZ−∫q(Z)lnq(Z)dZ−∫q(Z)ln(p(Z|X)ln(q(Z))dZln(p(X))=∫q(Z)ln(p(X,Z))dZ−∫q(Z)lnq(Z)dZ−∫q(Z)ln(p(Z|X)ln(q(Z))dZ
其中∫q(Z)ln(p(X,Z))dZ−∫q(Z)ln(q(Z))dZ∫q(Z)ln(p(X,Z))dZ−∫q(Z)ln(q(Z))dZ 为(q)L(q) ELOB ,∫q(Z)ln(p(Z|X)ln(q(Z))dZ∫q(Z)ln(p(Z|X)ln(q(Z))dZ 为(q//p)KL(q//p)。
我们要做的就是不断更新q(Z)q(Z) 使得q(Z)q(Z) 不断的接近pp分布,这样他们的分布距离越小,Lower bound则越大。
另一个问题,如何选择?
q(Z)q(Z) 的选择
方式一: 选择各维度独立 q(Z)=∏Mi=1qi(Zi)q(Z)=∏i=1Mqi(Zi)
(q)=∫q(Z)ln(p(X,Z))dZ−∫q(Z)ln(q(Z))dZL(q)=∫q(Z)ln(p(X,Z))dZ−∫q(Z)ln(q(Z))dZ
=∏Mi=1qi(Zi)ln(p(X,Z))dZ−∫∏Mi=1qi(Zi)ln∏Mi=1qi(Zi)dZ=∏i=1Mqi(Zi)ln(p(X,Z))dZ−∫∏i=1Mqi(Zi)ln∏i=1Mqi(Zi)dZ
考虑第一项:
∏Mi=1qi(Zi)ln(p(X,Z))dZ∏i=1Mqi(Zi)ln(p(X,Z))dZ
=∫z1∫z2..∫zM∏Mi=1qi(Zi)ln(p(X,Z))dz1dz2...dzM=∫z1∫z2..∫zM∏i=1Mqi(Zi)ln(p(X,Z))dz1dz2...dzM
=∫zjqj(Zj)(∫zi≠j...∫∏Mi≠jqi(Zi)lnp(X,Z)∏Mi≠jdZi)dZj=∫zjqj(Zj)(∫zi≠j...∫∏i≠jMqi(Zi)lnp(X,Z)∏i≠jMdZi)dZj
=∫zjqj(Zj)(∫zi≠j...∫lnp(X,Z)∏Mi≠jqi(Zi)dZi)dZj=∫zjqj(Zj)(∫zi≠j...∫lnp(X,Z)∏i≠jMqi(Zi)dZi)dZj
=∫zjqj(Zj)Ei≠jln(p(X,Z))dZj=∫zjqj(Zj)Ei≠jln(p(X,Z))dZj
考虑第二项:
在推导第二项之前:
∫x1∫x2(f(x1)+f(x2))p(x1,x2)dx1dx2∫x1∫x2(f(x1)+f(x2))p(x1,x2)dx1dx2
=∫x1f(x1)dx1+∫x2f(x2)dx2=∫x1f(x1)dx1+∫x2f(x2)dx2
将其推广到n项,可以得到第二项
∫∏Mi=1qi(Zi)ln∏Mi=1qi(Zi)dZ∫∏i=1Mqi(Zi)ln∏i=1Mqi(Zi)dZ
=∫∏Mi=1qi(Zi)∑Mi=1lnqi(Zi)dZ=∫∏i=1Mqi(Zi)∑i=1Mlnqi(Zi)dZ
=∑Mi=1∫ziqi(Zi)ln(q(zi)dZi=∑i=1M∫ziqi(Zi)ln(q(zi)dZi
若只关注第j 维度,第二项可记作:∫Zjqj(Zj)ln(qj(Zj))dZj+const.∫Zjqj(Zj)ln(qj(Zj))dZj+const.
由此可得
(qj)=∫zjqj(Zj)Ei≠jln(p(X,Z))dZj−∫Zjqj(Zj)ln(qj(Zj))dZj+constL(qj)=∫zjqj(Zj)Ei≠jln(p(X,Z))dZj−∫Zjqj(Zj)ln(qj(Zj))dZj+const
该极值在KL散度为0时最大,因此更新公式为:
ln(q∗i≠j(Zi))=Ei≠jln(p(X,Z))ln(qi≠j∗(Zi))=Ei≠jln(p(X,Z))
方式二:指数家族分布
首先,要引出指数分布族的概念。它的标准表达式为
h(x)exp(T(x)Tη−A(η))h(x)exp(T(x)Tη−A(η))
其中 ηη是分布的自然参数(natural parameter)或典范参数(canonical parameter),T(x)T(x)叫做充分统计量(sufficient statistic),通常情况下T(x)=xT(x)=x, A(η)A(η)是对数分配函数(log partition function)。
对指数家族,首先给个公式EqT(x)=∇ηA(η)EqT(x)=∇ηA(η), 证明如下:
∫h(x)exp(T(x)Tη−A(η))=1∫h(x)exp(T(x)Tη−A(η))=1
∇η(∫h(x)exp(T(x)Tη−A(η))dx)=0∇η(∫h(x)exp(T(x)Tη−A(η))dx)=0
=> ∫∇ηh(x)exp(T(x)Tη−A(η))dx=0∫∇ηh(x)exp(T(x)Tη−A(η))dx=0
=>∫h(x)exp(T(x)Tη−A(η))T(x)−(∫h(x)exp(T(x)Tη−A(η))∇η(A(η))∫h(x)exp(T(x)Tη−A(η))T(x)−(∫h(x)exp(T(x)Tη−A(η))∇η(A(η))
第二项前面是个概率密度积分 为1
=>EqT(x)=∇ηA(η)EqT(x)=∇ηA(η)
同样的我们需要最大化ELBO,选择的q依然满足q(β,Z)=q(β)q(Z)q(β,Z)=q(β)q(Z), 更新时,fix某一个参数,计算如下
计算λλ 保留和ββ 相关的
(λ,ϕ)=EqZ,β[log(p(x,Z,β))]−EqZ,β[log(q(Z,β))]L(λ,ϕ)=EqZ,β[log(p(x,Z,β))]−EqZ,β[log(q(Z,β))]
=EqZ,β[log(p(β|Z,x))+log(p(Z,x))]−EqZ[log(q(Z)−Eqβ[log(q(β)]=EqZ,β[log(p(β|Z,x))+log(p(Z,x))]−EqZ[log(q(Z)−Eqβ[log(q(β)] 去除于当前所求无关项目
=EqZ,β[log(p(β|Z,x))]−Eqβ[log(q(β)]=EqZ,β[log(p(β|Z,x))]−Eqβ[log(q(β)]
将以上两部分利用指数家族分布 代换
=EqZ,β[logh(β)]+EqZ,β[TT(β)η(Z,x)]−EqZ,β[Ag(η(Z,x))]−EqZ,βlog(h(β))−EqZ,β[TT(β)λ]+EqZ,β[Al(λ)]=EqZ,β[logh(β)]+EqZ,β[TT(β)η(Z,x)]−EqZ,β[Ag(η(Z,x))]−EqZ,βlog(h(β))−EqZ,β[TT(β)λ]+EqZ,β[Al(λ)]
将与λλ无关的去除可得
EqZ,β[TT(β)η(Z,x)]−EqZ,β[TT(β)λ]+EqZ,β[Al(λ)]EqZ,β[TT(β)η(Z,x)]−EqZ,β[TT(β)λ]+EqZ,β[Al(λ)]
将EqT(x)=∇ηA(η)EqT(x)=∇ηA(η) 带入,易得
λ=E(qϕ[ηg(x,Z,α)])λ=E(qϕ[ηg(x,Z,α)]) 即除当前参数以外的所有参数的期望。
本文介绍了变分推断的基本概念及其数学推导过程,解释了为何使用变分推断及如何选择近似分布。
1万+

被折叠的 条评论
为什么被折叠?



