跳到主要内容

变分自编码器

变分自编码器(VAE)是一种潜变量生成模型。它定义了一个先验分布 p(z)p(z) 和一个解码器似然 pθ(xz)p_{\theta}(x\mid z)

pθ(x)=p(z)pθ(xz)dz.p_{\theta}(x) = \int p(z)\,p_{\theta}(x\mid z)\,dz.

给定观测 xx,后验分布 pθ(zx)p_{\theta}(z\mid x) 描述哪些潜变量取值能够在模型下解释这个观测。真实后验通常难以直接计算,因此用编码器 qϕ(zx)q_{\phi}(z\mid x) 来近似。所有观测共用同一个编码器及其参数 ϕ\phi,由它为每个输入给出相应的近似后验。这种共享推断过程的做法称为摊销推断

证据下界 (ELBO)

训练过程旨在最大化证据下界(ELBO):

L(x;θ,ϕ)=Eqϕ(zx)[logpθ(xz)]KL ⁣(qϕ(zx)p(z)).\mathcal{L}(x;\theta,\phi) = \mathbb{E}_{q_{\phi}(z\mid x)} \left[\log p_{\theta}(x\mid z)\right] - \mathrm{KL}\!\left(q_{\phi}(z\mid x)\,\|\,p(z)\right).

之所以称为“下界”,是因为对数似然可以分解为 ELBO 加上一个非负的 KL 散度项:

logpθ(x)=L(x;θ,ϕ)+KL ⁣(qϕ(zx)pθ(zx)).\log p_{\theta}(x) = \mathcal{L}(x;\theta,\phi) + \mathrm{KL}\!\left( q_{\phi}(z\mid x) \,\|\, p_{\theta}(z\mid x) \right).

ELBO 中的期望解码对数似然鼓励解码器更好地解释观测数据;其中相对于先验的 KL 惩罚项则约束近似后验不要偏离先验太远,让从先验抽取的潜变量更有机会落在解码器训练过的区域,但不保证生成质量。

简单地将期望对数似然称为“重建损失”可能会掩盖关键的建模细节。选择伯努利、高斯或类别分布作为似然函数,对应着不同的优化目标和数据假设,这直接影响模型的表现。

重参数化技巧

对于对角高斯编码器:

qϕ(zx)=N ⁣(z;μϕ(x),diag(σϕ2(x))),q_{\phi}(z\mid x) = \mathcal{N}\!\left(z;\mu_{\phi}(x), \operatorname{diag}(\sigma_{\phi}^2(x))\right),

我们采用重参数化采样:

ϵN(0,I),z=μϕ(x)+σϕ(x)ϵ.\epsilon\sim\mathcal{N}(0,I), \qquad z=\mu_{\phi}(x)+\sigma_{\phi}(x)\odot\epsilon.

这种技巧把随机抽样放到与参数无关的噪声上,使梯度能够通过 μϕ\mu_{\phi}σϕ\sigma_{\phi} 进行反向传播。

当先验为标准正态分布时,KL 散度项存在解析解:

KL(qp)=12j(1+logσj2μj2σj2).\mathrm{KL}(q\|p) = -\frac{1}{2}\sum_j \left(1+\log\sigma_j^2-\mu_j^2-\sigma_j^2\right).

一个观测值如何得到训练损失

这里 KL(qp)=Eq[logqlogp]\mathrm{KL}(q\|p)=E_q[\log q-\log p] 衡量分布差异,非负但不对称,仅当两个分布几乎处处相同时为零。ELBO 恒等式要求相关密度和期望有定义;把贝叶斯公式 pθ(zx)=pθ(xz)p(z)/pθ(x)p_\theta(z\mid x)=p_\theta(x\mid z)p(z)/p_\theta(x) 代入 KL 定义即可得到。下界与对数似然的差距在编码器等于真实后验时消失,仅重建得好还不够。这是 Auto-Encoding Variational Bayes 的变分推导。

取一维编码器 μ=1\mu=1σ=0.5\sigma=0.5,固定一次噪声抽样 ϵ=0.2\epsilon=0.2,得到 z=1.1z=1.1。设解码器为 p(xz)=N(z,1)p(x\mid z)=\mathcal N(z,1),观测值 x=2x=2,则本次抽样的负对数似然为 (21.1)2/2+log(2π)/21.3239(2-1.1)^2/2+\log(2\pi)/2\approx1.3239。相对 N(0,1)\mathcal N(0,1) 的解析 KL 为 (1+0.251log0.25)/20.8181(1+0.25-1-\log0.25)/2\approx0.8181。因此单样本负 ELBO 估计为 2.14212.1421。它估计的是期望;某一次蒙特卡洛抽样本身不保证给出 logp(x)\log p(x) 的下界。

批次大小为 BB、潜变量宽度为 dzd_z 时,编码器输出形状均为 [B, d_z] 的均值和对数方差。令 σ=exp(logvar/2)\sigma=\exp(\text{logvar}/2),采样同形状噪声;重建对数似然沿观测维求和,KL 沿潜变量维求和,最后沿批次取平均。若只把重建项改为按维平均,就会悄悄改变它相对 KL 的权重。生成时从先验采样并使用解码器,无需编码器;只返回解码器均值是确定性摘要,不是完整的似然抽样。

生成与常见变体

  • 生成过程:从先验 p(z)p(z) 中采样 zz,再通过解码器生成 xpθ(xz)x \sim p_{\theta}(x\mid z)
  • 条件 VAE:在编码器和解码器中引入额外条件信息 yy,实现条件生成。
  • β\beta-VAE:引入系数 β\beta 加权 KL 项,以调节率失真权衡。但需注意,增大 β\beta 并不保证潜变量能自动解耦或具备清晰的语义含义。

常见失效模式

  • 后验坍塌 (Posterior Collapse):解码器能力过强时可能直接忽略潜变量 zz,导致 qϕ(zx)q_{\phi}(z\mid x) 坍缩至先验分布。
  • 近似误差:选定的变分族(如高斯分布)可能无法充分表达真实后验的复杂结构。
  • 似然失配:为了计算方便而选择的解码器分布,可能与实际数据分布不符,导致生成样本质量下降。
  • 潜变量可解释性:潜空间中的平滑插值并不等同于人类可理解的独立概念轴。
  • 异常检测局限:基于重建误差或似然分数的异常检测在分布外数据上往往失效,需结合具体任务进行验证。

核心参考文献为 Auto-Encoding Variational Bayes。此处省略具体的框架训练代码,因为模型假设和 ELBO 推导才是理解 VAE 的核心所在。

探索关联

先了解 (2)

被引用 (1)

同主题的其他笔记 (1)

打开关联网络