Background
数据量大,如何挖掘其中的含义,找到其中的因果关系?
我们用机器学习和统计方法找到其中的联系。
流程一般是提出假设,挖掘出特征,得到预测,修改模型,提出假设……迭代进行。
概率机器学习的目标是学习出后验,即 p(z|x)=p(z,x)p(x)。其中联合概率可以用生成式得到,关于分母则需要边缘化隐变量,因此不易求得。
Variational Inference
指数族分布
p(x)=h(x)exp{η⊤t(x)−a(η)}
- η the natural parameter
- t(x) the sufficient statistics
- a(η) the log normalizer
- h(x) the base density

找到一个后验的近似分布 q(z;ν) 使得它们的 KL 散度尽量小。
先选择一个分布族,如指数分布族,再在该分布族里优化参数 ν,使得 KL 散度最小,此时是最优的后验分布 q(z;ν∗),即
q∗ν(z|x)=argminνKL(qν(z|x)‖p(z|x))但由于真实后验为
p(z|x)=p(x,z)p(x)无从计算,因此很难从优化 KL 散度的角度入手。
由于
logp(x)=L(ν)+KL(qν(z|x)‖p(z|x))可以最大化 证据下界(ELBO) 进行优化。
ELBO
L(ν)=Eq[logp(β,z,x)]⏟Expected complete log likelihood −Eq[logq(β,z;ν)]⏟Negative entropy第一项相当于联合似然,要尽可能大。第二项则相当于变分分布的熵取反,使 q 分布 diffuse.
还有一种分解 ELBO 的方式:
L(ν)=Eq[logp(x|β,z)]⏟Expected log likelihood of data −KL(q(β,z;ν)‖p(β,z))⏟KL between variational and prior第一项相当于似然,第二项是变分分布和真实分布的 KL 散度。
注意: ELBO 不一定是凸的。
Mean-filed VI

平均场近似是指隐变量之间相互独立,则可以假设各自的分布。在优化其中一个变量时,固定住其他变量,进行优化。再迭代优化出所有变量。与 Gibbs Sampling 具有一些关联。
与 EM 类似,比较依赖于初始化设置,不同的初始化会得到截然不同的结果。由于非凸,只能取到局部最优值。
Stochastic VI
传统的 VI 不能处理大量数据。因此需要随机 VI 来处理。
思想:大数据采出子集,进行局部结构的优化,再更新全局结构。再进行下一次迭代。
原始的 ELBO 的 natural gradient 是这样的
∇natλL(λ)=(α+n∑i=1Eϕ∗i[t(Zi,xi)])−λ经过随机优化,得到 noisy natural gradient
j∼ Uniform (1,…,n)ˆ∇nat λL(λ)=α+nEϕ∗j[t(Zj,xj)]−λ这样一个数据点就可以更新整个自然梯度。需要满足的前提是 noisy natural gradient 是无偏的,即E[ˆ∇νL(ν)]=∇νL(ν)。
Recipe
一般的分布遵循以下步骤即可近似出后验分布:
- Start with a model
p(z,x) - 选择合适的变分分布
q(z;ν) - 根据两种拆分方式写出 ELBO,如
L(ν)=Eq(z;ν)[logp(x,z)−logq(z;ν)] - 积分得到 ELBO
Example: L(ν)=xν2+logν - 关于变分参数求梯度,优化 ELBO
Example: ∇νL(ν)=2xν+1ν
nut+1=νt+ρt∇νL
Black box VI
先积分 ELBO 再求梯度往往是比较困难的。是否可以先求梯度再积分,最后进行优化?
在推导模型时,求似然、后验、梯度等工作往往是费时费力的。能否将这些推理都放入黑盒中,我们最后只要输出后验?
Define
g(z,ν)=logp(x,z)−logq(z;ν)可以推导出
∇νL=Eq(z;ν)[∇νlogq(z;ν)g(z,ν)+∇νg(z,ν)]这样就把求梯度放在了积分里面。这样就可以从变分分布 q 中采样,用 Monte Carlo 估计出 q 的梯度,并进行随机优化,更新 q;迭代至收敛。
黑盒 VI 的主要目标是不论模型如何,我们只要做下面这三件事,其余的不用推理。最后黑盒可以输出近似的变分分布作为后验分布。
Black Box Criteria
- sample from q(β,z)
- evaluate q(β,z) or function of q
- evaluate logp(β,z,x)
有以下两种策略都符合 BBC:
- Score gradients
- Reparameterization gradients
Score Function Gradients
See score function, it is called likelihood ratio or REINFORCE gradient.
当Eq[∇νg(z,ν)]=Eq[∇νlogq(z;ν)]=0,则 ELBO 的梯度可写为:
∇νL=Eq(z;ν)[∇νlogq(z;ν)⏟score function (logp(x,z)−logq(z;ν))⏟instantaneous ELBO ]它的 noisy unbiased gradient 可以用 MC 得到:
ˆ∇νL=1S∑Ss=1∇νlogq(zs;ν)(logp(x,zs)−logq(zs;ν)) where zs∼q(z;ν)更新 q 时,有
ν=ν+ρˆ∇νL因此实际上需要做的步骤:
- Sampling from q(z)
- Evaluating ∇νlogq(z;ν)
- Evaluating logp(x,z) and logq(z)
这个方法适用于离散或连续的模型,但是 noisy gradient 的方差可能会很大。
Reparameterization gradients (Pathwise Gradients of the ELBO)
假设 logp(x,z) 和 logq(z) 关于 z 可微,可以将 z 分解成如下形式:
ϵ∼Normal(0,1)z=ϵσ+μ→z∼Normal(μ,σ2)这样不确定性就被转移到了 ϵ.
∇νL=Es(ϵ)[∇z[logp(x,z)−logq(z;ν)]⏟gradient of instanneous ELBO ∇νt(ϵ,ν)⏟gradient of transformation ]它的 noisy gradient 可以写成:
˜gt=1S∑Ss=1∇z[logp(x,t(ϵs,νn))−logq(t(ϵs,νn);νn)]∇νt(ϵs,νn) where ϵs∼s(ϵ)s=1…S这个方法要求模型必须可微。但是 noisy gradient 的方差是可控的。