LOADING

加载过慢请开启缓存 浏览器默认开启

变分推理、ELBO与变分自编码器

变分推理与ELBO

定义

变分推理是一种近似推断方法,用于估计难以直接计算的概率分布(如贝叶斯后验分布)。其核心思想是:

  • 选择一个简单的参数化分布族 q(z;λ)(称为变分分布)
  • 优化参数 λ,使 q(z) 尽可能接近目标分布 p(z|x)
  • 用 q(z) 作为 p(z|x) 的近似

公式推导

1. 问题设定

给定:观测数据 x,隐变量 z。

目标:计算后验分布

p(z|x)=p(x,z)p(x)

其中边缘似然

p(x)=∫p(x,z)dz

通常难以计算(高维积分)。

2. KL 散度最小化

用变分分布 q(z) 近似 p(z|x),最小化 KL 散度:

λ∗=arg⁡minλKL(q(z;λ)∥p(z∣x))

KL 散度展开:

KL(q∥p)=∫q(z)log⁡q(z)p(z∣x)dz

3. 导出证据下界 (ELBO)

将贝叶斯公式 p(z|x)=p(x,z)p(x) 代入:

KL(q∥p)=∫q(z)[log⁡q(z)−log⁡p(z∣x)]dz=∫q(z)[log⁡q(z)−log⁡p(x,z)p(x)]dz=∫q(z)log⁡q(z)dz−∫q(z)log⁡p(x,z)dz+log⁡p(x)

整理得:

KL(q∥p)=−[Eq[log⁡p(x,z)]−Eq[log⁡q(z)]]⏟ELBO+log⁡p(x)

其中 log⁡p(x) 是常数(证据),因此:

minKL(q∥p)⇔maxELBO(λ)

4. ELBO 分解

ELBO 可分解为两部分:

ELBO=Eq(z)[log⁡p(x∣z)]−KL(q(z)∥p(z))

推导:

ELBO=Eq[log⁡p(x,z)]−Eq[log⁡q(z)]=Eq[log⁡(p(x∣z)p(z))]−Eq[log⁡q(z)]=Eq[log⁡p(x∣z)]+Eq[log⁡p(z)]−Eq[log⁡q(z)]=Eq[log⁡p(x∣z)]−(Eq[log⁡q(z)]−Eq[log⁡p(z)])⏟KL(q∥p)

5. 变分优化

最大化 ELBO 的梯度上升更新:

λ(t+1)=λ(t)+η∇λELBO

梯度计算使用重参数化技巧(Reparameterization Trick):

令 z=g(ϵ;λ),其中 ϵ∼p(ϵ)

梯度:

∇λELBO=Ep(ϵ)[∇λlog⁡p(x,g(ϵ;λ))−∇λlog⁡q(g(ϵ;λ))]

关键点总结

  • 本质:用优化问题替代积分计算
  • ELBO 性质:
    • ELBO≤log⁡p(x)(故名"下界")
    • 最大化 ELBO 等价于最小化 KL(q∥p)
  • 变分族选择:
    • 平均场近似:q(z)=∏iqi(zi)
    • 高斯分布:q(z)=N(μ,Σ)
  • 优势:将推断转化为可扩展的优化问题(适合大数据)
  • 应用:贝叶斯神经网络、主题模型(LDA)、变分自编码器(VAE)

#变分自编码器

变分自编码器(VAE)

1. VAE 的定义

变分自编码器(Variational Autoencoder, VAE)是一种深度生成模型,结合了自编码器结构和变分推断。核心思想:

  • 用神经网络参数化概率分布(编码器为近似后验,解码器为生成模型)
  • 通过重参数化技巧实现端到端训练
  • 目标:学习数据的潜在表示并生成新样本

2. VAE 的概率图模型

z∼p(z)=N(0,I),x∼pθ(x∣z)

其中:

  • z∈Rd:潜在变量(低维表示)
  • x∈RD:观测数据(D≫d)
  • θ:生成模型(解码器)参数

3. VAE 的架构

  • 编码器(推断网络):qϕ(z∣x)=N(z;μϕ(x),σϕ2(x)I)
  • 解码器(生成网络):pθ(x∣z)={N(μθ(z),σ2I)(连续数据)Bernoulli(πθ(z))(二值数据)
  • ϕ:编码器参数
  • θ:解码器参数
  • 神经网络实现:μϕ,σϕ=Encoderϕ(x)μθ=Decoderθ(z)

4. VAE 的推导:目标函数

步骤 1:变分下界 (ELBO)

VAE 最大化观测数据的对数似然下界:

log⁡pθ(x)≥ELBO(θ,ϕ;x)=Eqϕ(z|x)[log⁡pθ(x|z)]−KL(qϕ(z|x)∥p(z))

步骤 2:KL 散度项解析解

当 p(z)=N(0,I) 且 qϕ=N(μ,σ2) 时:

KL(qϕ∥p)=−12∑j=1d(1+log⁡σj2−μj2−σj2)

其中 d 是潜在空间维度。

步骤 3:重建项估计

使用蒙特卡洛采样(随机抽样取平均)估计:

Eqϕ[log⁡pθ(x|z)]≈1L∑l=1Llog⁡pθ(x∣z(l))

其中 z(l)=gϕ(x,ϵ(l)),ϵ(l)∼N(0,I),通常 L=1。

5. 重参数化技巧 (Reparameterization Trick)

关键创新:将随机采样转化为确定性计算:

z=μϕ(x)+σϕ(x)⊙ϵ,ϵ∼N(0,I)

⊙ 表示逐元素乘法,ϵ 是随机采样的一个噪声,这样保证了"随机采样"的计算过程可以反向传播,即梯度可反向传播至编码器参数 ϕ。

6. 完整目标函数

对于数据集 D={x(i)}i=1N,优化:

maxθ,ϕL(θ,ϕ;D)=∑i=1NL(θ,ϕ;x(i))

其中单样本目标:

L(θ,ϕ;x)=Eqϕ[log⁡pθ(x|z)]⏟重建项−KL(qϕ(z|x)∥p(z))⏟正则项

实际计算(L=1):

L(θ,ϕ;x)≈log⁡pθ(x∣z)−12∑j=1d(1+log⁡σj2−μj2−σj2)

其中 z=μϕ+σϕ⊙ϵ。

7. 训练算法(伪代码)

典型的 VAE 训练流程如下:

  1. 从数据集中采样一个批次 {x(i)}i=1B
  2. 对每个 x(i):
    • 计算 μϕ(x(i)),σϕ(x(i))
    • 采样 ϵ∼N(0,I)
    • 计算 z(i)=μϕ+σϕ⊙ϵ
    • 计算重建 x^(i)=Decoderθ(z(i))
  3. 计算损失:
L=1B∑i=1B[−log⁡pθ(x(i)∣z(i))+12∑j=1d(μj2+σj2−log⁡σj2−1)]
  1. 反向传播,更新 θ 和 ϕ

8. 生成新样本

znew∼p(z)=N(0,I),xnew∼pθ(x∣znew)

关键创新点总结

  • 概率自编码器:
    • 编码器 → 近似后验 qϕ(z|x)
    • 解码器 → 生成模型 pθ(x|z)
  • 可微训练:重参数化技巧解决随机节点梯度问题
  • 正则化潜在空间:KL 散度项强制潜在分布匹配先验 N(0,I)
  • 生成能力:从 p(z) 采样 → 解码器 → 生成新样本