VAE:同时学习重建与采样
交互教程
VAE 将单个编码结果替换为分布,从而在重建与先验采样之间建立可训练的联系。
之前已经能做什么
Section titled “之前已经能做什么”普通 AE 学习每个输入去哪里,却没有简单的新编码采样规则。隐变量模型定义 p(z) 和 pθ(x|z),图像密度通过对全部 z 积分得到。非线性解码器下,这个积分和真实后验 pθ(z|x) 通常难以计算。
改变了什么,为什么
Section titled “改变了什么,为什么”编码器 qφ(z|x) 近似真实后验,它不是先验,也不必等于真实后验。AEVB 用变分下界 ELBO 联合学习推断网络和解码器;重参数化提供可用的梯度估计。这是核心贡献,而不只是给 AE 加噪。
阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。
后验网络
两个输出参数化 qφ,并非两个独立 latent 样本。
mu, logvar = encoder(x).chunk(2, dim=-1)重参数化
噪声独立于编码器参数,梯度通过仿射变换。
std = exp(0.5 * logvar)
z = mu + std * randn_like(std)似然与 KL
每样本对 latent 维求和,并明确像素 loss 的归约。
x_params = decoder(z)
kl = 0.5 * (mu**2 + exp(logvar) - logvar - 1).sum(-1)
loss = reconstruction_nll(x, x_params) + kl逐步理解机制
Section titled “逐步理解机制”对角高斯网络输出 μ 和 log σ²。先求 σ=exp(0.5 log σ²),再从 N(0,I) 采样 ε,得到 z=μ+σε。随机性来自 ε,μ、σ 到 z 的变换仍可微。μ=1、σ=0.5、ε=0.5 时,z=1.25。
演示展示一维后验与标准正态先验。μ=0、σ=1 时 KL 为零。减小 σ 并非总是有益:即使均值为零,极窄后验也会产生很大 KL。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
绿色:后验 q;灰色:先验 p。
| 量 | 值 |
|---|---|
| KL(q || p) | 0.000 |
| z = μ + σ × ε, ε = 0.5 | 0.500 |
| 对数方差 | 0.000 |
训练与采样的区别
Section titled “训练与采样的区别”最大化期望 log pθ(x|z) 减 KL(qφ(z|x)||p(z)),或最小化其负值。重建用 q 的样本;新生成从 p 采样,不需要编码器。只用 μ 做确定性重建是评估选择,不是完整训练过程。
这些结果不能证明什么
Section titled “这些结果不能证明什么”KL 正则不保证每个潜空间区域都能生成好图。强解码器可能忽略 z,称为后验塌缩。像素似然、latent 维数和 KL 权重都重要。β 不为 1 时,目标已改变标准 ELBO。
展开公式推导
在 latent 积分中引入 q(z|x)。Jensen 不等式把 log 移到期望内部,得到下界;这里假设 q 覆盖相关支撑集。
拆开 p(x,z)=p(x|z)p(z),得到期望重建对数似然减去对先验的 KL。而下界与 log p(x) 的差,是对真实后验的 KL。这是两个不同 KL 项。
q 为对角高斯、p 为标准正态时,可解析积分 KL。单维 μ=1、σ=0.5 时,KL≈0.818;解码器期望通常仍需 Monte Carlo 采样。
从先验生成新图像时,编码器在哪里?
不需要编码器。从 p(z) 采样后使用 pθ(x|z)。编码器用于从观测 x 推断 latent。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。