Auto-Encoding Variational Bayes from PGM概率图模型
1. PGM 概率图模型
AVEB(Auto-Encoding Variational Bayes)的思想可以从概率图模型来理解。它是建立在概率图模型Inference中的Variational Inference基础上的。
1.1 Variational Inference
概率图的inference,是一种从概率图模型中获取信息的方式(通俗的来说,就是向模型提问)。inference一般由两种常见的形式:
- Marginal inference : 用来得到整个系统状态的某一部分(从其他状态变量中marginalize之后)的概率。(以图像处理为例,如果扣掉图像的一块,如何使用其他的图像信息补全这一块缺失的内容)。
- MAP inference : 最大后验概率,从模型中得到结果。(以图像为例,输入一张图像,通过我们的概率模型,得到它是猫的概率和它是狗的概率)
Variational Inference是把inference问题,考虑成一个优化问题 :
我们有一组候选的概率分布Q,真实的概率分布记为p(p是未知的,但是我们有服从它的观测结果)。我们的目标则是在Q中找到一个元素q,使得q最接近于p。最后,我们使用p(完全已知的一个分布)来回答上面的inference问题。
这样的问题就涉及到了两个方面:
- 一个是如何判断p与q的相似程度。
- 如果找到这个最相似的q。
比较常用的方法是使用KL divergence衡量相似程度,并且使用gradient descent的方法找到最佳的q。
1.2 KL divergence
定义:
KL(q∣∣p)=x∑q(x)logp(x)q(x)
重要性质:
KL(q∣∣p)≥0
KL(q∣∣p)=0, if p=q
KL(q∣∣p)=KL(p∣∣q), if p=q
在这里,p和q都是归一化的概率分布。但是实际上我们还是不能衡量KL,因为p对我们来说是未知的(intractable)。我们考虑一个更加一般的p分布, 它可能不是归一化的,所以p的表达式为:
p(x1,x2,...,xn;θ)=Z(θ)pˉ(x1,x2,...,xn;θ)=Z(θ)1k∏ϕk(xk;θ)
ϕk是一个factor(因子)。看这个表达式我们也可以更好的理解为什么p是intractable。这是由于Z(θ)是intractable,为了求这个归一化常数,我们需要对所有可能的状态x进行计算,但是鉴于p其实是未知的分布,我们不可能分析它对于所有x状态的可能结果(当然我们可以用monte carto的方法sampling近似)。这里也其实表达了对于一般的分布,我们无法用直接KL衡量它与另一个分布q的相似程度。
1.3 The Variational Lower bound
我们先分析下面的等式(直接把新的pˉ带入KL的表达式):
J(q)=x∑q(x)logpˉ(x)q(x)
J(q)=x∑q(x)logp(x)q(x)−logZ(θ)=KL(q∣∣p)−logZ(θ)
我们可以得到下面的等式不等式:
logZ(θ)=KL(q∣∣p)−J(q)≥−J(q)
这表示了,−J(q) 其实是logZ(θ)的一个下界(lower bound)。而KL(q∣∣p)恰好是下界与真实值之间的gap。如果我们尝试最大化这个下界−J(q) ,那么会促使−J(q)和logZ(θ)变得越来越接近,也就是说他们之间的gap越来越小,也就是达到了最小化KL(q∣∣p)的目的。
−J(q)被称作 the variational lower bound 或者 the evidence lower bound (ELBO)。
−J(q)=−x∑q(x)logq(x)+x∑q(x)logpˉ(x)
−J(q)=Eq(x)[logpˉ(x)−logq(x)]
通常上面的结论也被写为:
logZ(θ)≥Eq(x)[logpˉ(x)−logq(x)]=L(p,q)
对这个表达式求相对于q分布的期望值。
2. Black-box variational inference
2.1 gradient descent
这是一个用来最大化ELBO的算法,它的核心思想很简单,它不在乎p和q的分布具体是什么,而单纯的只考虑他们的梯度,然后使用梯度下降(gradient descent)来优化目标函数。
- q分布的参数为ϕ,p分布的参数为θ。所以我们需要分别对ELBO对ϕ和θ进行求导。
- 也就引出的它的唯一一个前提条件(或者说假设):q是相对于ϕ可微的(differentiable)。
我们需要计算的梯度为:
∇θ,ϕEqϕ(z)[logpθ(z)−logqϕ(z)]
注意这里的标记和前面的不一样了,在这里z是我们在这个inference中想要求的量,x是它的输入值,p可以理解为我们的观测数据,q是我们预测模型。
2.2 Score function gradient estimator
我们把上面的梯度公式分开ϕ和θ两部分来求:
θ部分:
∇θEqϕ(z)[logpθ(z)−logqϕ(z)]=∇θEqϕ(z)[logpθ(z)]=Eqϕ(z)[∇θlogpθ(z)]
这样我们可以通过Monte Carlo来对Δθlogpθ(z)进行sample,得到它的结果。
ϕ部分:
∇ϕEqϕ(z)[logpθ(z)−logqϕ(z)]
这一个部分则更为复杂,因为它涉及到的期望的分布也是和ϕ相关的。我们可以通过score function estimator求(可以在这篇文章的 附录B中得到下面公式的证明 paper):
∇ϕEqϕ(z)[logpθ(z)−logqϕ(z)]=Eqϕ(z)[(logpθ(z)−logqϕ(z))∇ϕlogqϕ(z)]
然后我们就可以通过Monte Carlo来sample期望的结果了。
但是这个算法存在一个很大的问题 :high variance。
3. Our problem - Latent variable model
在继续讲解算法之前,我们先把我们的问题整理一下,并且把前面的公式,使用符合问题的记号重新在这里表达:
- 我们假设我们在这里的问题是生成随机的人脸图片。
- 准备阶段时候,我们有一系列的人脸图片数据集{x}。
- 我们的目的是,使用算法在这些图片中找到一定的规律,encode这些图片为一系列的参数(特征)z:
P(z∣x)
- 我们随机给出一组参数(特征)z,可以通过算法生成一张新的人脸的图像x:
P(x∣z)
我们在这里的p分布为:
pθ(z∣x)=pθ(x)pθ(x,z)
J(q)=(z∣x)∑qϕ(z∣x)logpθ(z,x)qϕ(z∣x)=(z∣x)∑qϕ(z∣x)logpθ(z∣x)qϕ(z∣x)−logpθ(x)=−L(p,q)
我们可以得到下面的等式不等式:
logpθ(x)=KL(qϕ(z∣x)∣∣pθ(z∣x))+L(p,q)
4. Auto-encoding reformulation
这里对ELBO的公式进行了简单的reform:
logpθ(x)=KL(qϕ(z∣x)∣∣pθ(z∣x))−(z∣x)∑qϕ(z∣x)logpθ(z,x)qϕ(z∣x)
=(z∣x)∑qϕ(z∣x)log[pθ(x∣z)pθ(z∣x)pθ(x∣z)qϕ(z∣x)]−(z∣x)∑qϕ(z∣x)logpθ(z)qϕ(z∣x)pθ(z,x)pθ(z)
=Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))+(z∣x)∑qϕ(z∣x)logpθ(z∣x)pθ(x∣z)qϕ(z∣x)pθ(z)pθ(z,x)
=Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))+KL(qϕ(z∣x)∣∣pθ(z∣x))
(因为上面最右边一个很长的表达式也是一个KL,而且我们知道KLdivergence是非负的)
logpθ(x)≥Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))
- 上面的右边是在z~$q(z|x)上sample的期望和divergence。相当于前面我们提到的,提供一个x(图像),把它encode成一个特征表达z,所以在这里q就是相当于是一个encoder。
- Eqϕ(z∣x)[log[pθ(x∣z)]这一项则是一个maximal log-likelihood函数,它表达了如果给到我们的提取的z特征,能不能最大程度恢复原本的图像x。p就相当于一个decoder。
- KL(qϕ(z∣x)∣∣pθ(z))这一项是一个的divergence。用来限制qϕ(z∣x),以保证它不会每次都生成一样的特征qϕ(z)。
5. The Reparameterization Trick
这里考虑对分布重新进行参数化,以简化求梯度的难度。
原本的分布为:
qθ(z∣x)
假设误差是正态分布:
ϵ∼p(ϵ)
假设z的分布是依赖于x的函数,同时包含一定的误差ϵ:
z=gϕ(ϵ,x)
z=gϕ,σ(ϵ)=μ+ϵ⋅σ
所以对任意一个函数的期望的梯度可以表示为:
∇ϕEz∼qϕ(z∣x)[f(x,z)]=∇ϕEϵ∼p(ϵ)[f(x,gϕ(ϵ,x))]=Eϵ∼p(ϵ)[∇ϕf(x,gϕ(ϵ,x))]
用这样的重新参数化,可以更加轻松的解决前面的梯度问题。而且在这种方法下没有那么多的variance (这个在文章中有更加细节的讨论)
6. Neural Network pick q and p
接下来就是使用神经网络来选择适当的decoder(p)和encoder(q)的问题了。
7. Loss function in Neural Network
7.1 reformulation of ELBO
从上面的推导,我们得到:
logpθ(x)=Eqϕ(z∣x)[log[pθ(x∣z)]−KL(qϕ(z∣x)∣∣pθ(z))+KL(qϕ(z∣x)∣∣pθ(z∣x))
可以写为:
logpθ(x)−Eqϕ(z∣x)[log[pθ(x∣z)]+KL(qϕ(z∣x)∣∣pθ(z))=KL(qϕ(z∣x)∣∣pθ(z∣x))
所以其实我们的目标函数其实可以看作为最小化:
logpθ(x)−Eqϕ(z∣x)[log[pθ(x∣z)]+KL(qϕ(z∣x)∣∣pθ(z))
- 第一项是最小化从x通过decode p恢复的图像和原本的输入图像的差异。
- 第二项则是前面解释过的regulatization项。
7.2 Neural Network distribution
使用前面提到的reparameterization之后,我们的分布则变为:
p(x∣z)=N(x;μ(z),diag(σ(z))2)
p(z)=N(z;0,I)
q(z∣x)=N(z;μ(x),diag(σ(x))2)
7.3 Loss function
带入到我们的reformulation ELBO表达式中:
logpθ(x)−Eqϕ(z∣x)[log[pθ(x∣z)]+KL(N(z;μ(x),diag(σ(x))2)∣∣N(z;0,I))
下图来自Medium
