变分推断(variational inference)

变分推断(variational inference)

原创 2017年02月12日 12:13:49

variational inference

大家对贝叶斯公式应该都很熟悉

P(Z|X)=p(X,Z)zp(X,Z=z)dz

我们称 P(Z|X) posterior distributionposterior distribution的计算通常是非常困难的,为什么呢?
假设 Z 是一个高维的随机变量,如果要求 P(Z=z|X=x) ,我们不可避免的要计算 zp(X=x,Z=z)dz ,由于 Z 是高维随机变量,这个积分是相当难算的。

variational inference就是用来计算posterior distribution的。

core idea

variational inference的核心思想包含两步:

  • 假设分布 q(z;λ) (这个分布是我们搞得定的,搞不定的就没意义了)
  • 通过改变分布的参数 λ , 使 q(z;λ) 靠近 p(z|x)

总结称一句话就是,用一个简单的分布( q(z;λ) )拟合复杂的分布( p(z|x) )

这种策略将计算 p(z|x) 的问题转化成优化问题了

λ=argminλ divergence(p(z|x),q(z;λ))

收敛后,就可以用 q(z;λ) 来代替 p(z|x)

公式推倒

logP(x)=logP(x,z)logP(z|x)=logP(x,z)Q(z;λ)logP(z|x)Q(z;λ)

等式的两边同时对分布 Q(z) 求期望,得
Eq(z;λ)logP(x)logP(x)logP(x)=Eq(z;λ)logP(x,z)Eq(z;λ)logP(z|x)=Eq(z;λ)logp(x,z)q(z;λ)Eq(z;λ)logp(z|x)q(z;λ)=KL(q(z;λ)||p(z|x))+Eq(z;λ)logp(x,z)q(z;λ)=KL(q(z;λ)||p(z|x))+Eq(z;λ)logp(x,z)q(z;λ)

我们的目标是使 q(z:λ) 靠近 p(z|x) ,就是 minmizeλKL(q(z;λ)||p(z|x)) ,由于 KL(q(z;λ)||p(z|x)) 中包含 p(z|x) ,这项非常难求。将 λ 看做变量时, logP(x) 为常量,所以, minmizeλKL(q(z;λ)||p(z|x)) 等价于 maxmizeλEq(z;λ)logp(x,z)q(z;λ) Eq(z;λ)[logp(x,z)logq(z;λ)] 称为Evidence Lower BOund( ELBO)。

现在,variational inference的目标变成

maxmizeλEq(z;λ)[logp(x,z)logq(z;λ)]

为什么称之为ELBO呢?
p(x) 一般被称之为evidence,又因为 KL(q||p)>=0 , 所以 p(x)>=Eq(z;λ)[logp(x,z)logq(z;λ)] , 这就是为什么被称为ELBO

ELBO

继续看一下ELBO

ELBO(λ)=Eq(z;λ)[logp(x,z)logq(z;λ)]=Eq(z;λ)logp(x,z)Eq(z;λ)logq(z;λ)=Eq(z;λ)logp(x,z)+H(q)

The first term represents an energy. The energy encourages q to focus probability mass where the model puts high probability, p(x,z) . The entropy encourages q to spread probability mass to avoid concentrating to one location.

q(Z)

Z 包含K个独立部分(K 维, 当然,第i维也可能是高维向量),我们假设:

q(Z;λ)=k=1Kqk(Zk;λk)

这个被称为 mean field approximation。关于 mean field approximationhttps://metacademy.org/graphs/concepts/mean_field
ELBO则变成
ELBO(λ)=Eq(Z;λ)logp(X,Z)Eq(z;λ)logq(Z;λ)=q(Z;λ)logp(X,Z)dZq(Z;λ)logq(Z;λ)dZ=[k=1Kqk(Zk;λk)]logp(X,Z)dZ[k=1Kqk(Zk;λk)]logq(Z;λ)dZ

第一项为 energy, 第二项为 H(q)

energy

符号的含义:

Z={Zj,Z¯¯¯j},Z¯¯¯j=ZZj

λ={λj,λ¯j},λ¯j=λλj

先处理第一项:

[k=1Kqk(Zk;λk)]logp(X,Z)dZ=Zjqj(Zj;λj)Z¯j[k=1,kjKqk(Zk;λk)]logp(X,Z)dZ¯¯¯jdZj=Zjqj(Zj;λj)[Eq(Z¯j;λ¯j)logp(X,Z)]dZj=Zjqj(Zj;λj){logexp[Eq(Z¯j;λ¯j)logp(X,Z)]}dZj=Zj[qj(Zj;λj)logqj(Zj;λj)+logC]dZj

其中 qj(Zj;λj)=1Cexp[Eq(Z¯j;λ¯j)logp(X,Z)] , C 保证 qj(Zj;λj) 是一个分布。 C 与分布的参数 λ¯j 有关,与变量无关!!

H(q)

再处理第二项:

[k=1Kqk(Zk;λk)]logq(Z;λ)dZ=[k=1Kqk(Zk;λk)]n=1Klogq(Zn;λ)dZ=j[k=1Kqk(Zk;λk)]logq(Zj;λj)dZ=j[k=1Kqk(Zk;λk)]logq(Zj;λj)dZ=jZjqj(Zj;λj)logq(Zj;λj)dZj[k=1,kjKqk(Zk;λk)]dZ¯¯¯j=jZjqj(Zj;λj)logq(Zj;λj)dZj

再看ELBO

经过上面的处理,ELBO变为

ELBO=Ziqi(Zi;λj)logqi(Zi;λi)dZijZjqj(Zj;λj)logq(Zj;λj)dZj+logC={Ziqi(Zi;λj)logqi(Zi;λi)dZiZiqi(Zi;λj)logq(Zi;λi)dZi}+H(q(Z¯¯¯i;λ¯i))+logC

再看上式 {} 中的项:
Ziqi(Zi;λj)logqi(Zi;λi)dZiZiqi(Zi;λj)logq(Zi;λi)dZi=KL(qi(Zi;λj)||qi(Zi;λi))

所以ELBO又可以写成:
ELBO=KL(qi(Zi;λj)||qi(Zi;λi))+H(q(Z¯¯¯i;λ¯i))+logC

我们要 maxmizeELBO ,如何更新 qi(Zi;λi) 呢?

ELBO=KL(qi(Zi;λi)||qi(Zi;λi))+H(q(Z¯¯¯i;λ¯i))+logC

可以看出,当 qi(Zi;λj)=qi(Zi;λi) 时, KL(qi(Zi;λj)||qi(Zi;λi))=0 。 这时,ELBO取最大值。
所以参数更新策略就变成了
q1(Z1;λ1)=q1(Z1;λ1)q2(Z2;λ2)=q2(Z2;λ2)q3(Z3;λ3)=q3(Z3;λ3)...

关于 qi(Zi;λi)
qi(Zi;λi)qi(Zi;λi)=qi(Zi;λi)=1Cexp[Eq(Z¯i;λ¯i)logp(X,Z)]=1Cexp[Eq(Z¯i;λ¯i)logp(X,Zi,Z¯¯¯i)]

qi 是要更新的节点, X 是观测的数据,由于 Markov Blanket(下面介绍),更新公式变成:
log(qi(Zi;λi))=q(mb(Zi))logp(Zi,mb(Zi),X)d mb(Zi)

由于式子中和 Zi 无关的项都被积分积掉了,所以写成了 Markov Blanket 这种形式

Markov Blanket

In machine learning, the Markov blanket for a node A in a Bayesian network is the set of nodes mb(A) composed of As parents, its children, and its children’s other parents. In a Markov random field, the Markov blanket of a node is its set of neighboring nodes.
Every set of nodes in the network is conditionally independent of A when conditioned on the set mb(A) , that is, when conditioned on the Markov blanket of the node A . The probability has the Markov property; formally, for distinct nodes A and B :

Pr(A|mb(A),B)=Pr(A|mb(A))

The Markov blanket of a node contains all the variables that shield the node from the rest of the network. This means that the Markov blanket of a node is the only knowledge needed to predict the behavior of that node.

markov blanket

参考资料

https://en.wikipedia.org/wiki/Markov_blanket
http://edwardlib.org/tutorials/inference
http://edwardlib.org/tutorials/variational-inference

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值