1. 数学基础

1.1 似然函数

首先考虑一个条件概率p(xθ)p(x \mid \theta),这里的xx表示观测结果,θ\theta表示分布参数

如果固定θ=θ0\theta = \theta_0,得到

xp(xθ0)x \sim p(x \mid \theta_0)

这是关于xx的概率分布,在连续条件下满足p(xθ0)dx=1\int p(x \mid \theta_0) dx =1

如果已经观测到x=x0x = x_0,将同一个表达式看作参数θ\theta的函数,定义似然函数

L(θ;x0)p(x0θ)L(\theta ; x_0) \coloneqq p(x_0 \mid \theta)

可以理解为固定已经观测到的x0x_0,比较不同分布参数θ\theta对这个观测数据的解释程度,它只是关于θ\theta的普通函数,不要求L(θ;x)dθ\int L(\theta ; x) d\theta等于11

因此

L(θ;x)=p(xθ)L(\theta ; x) = p(x \mid \theta)

二者在数值表达式上完全相同,只是所研究的变量不同

  • θ\theta固定,研究xx \Rightarrow 概率分布
  • xx固定,研究θ\theta \Rightarrow 似然函数

这里解释一下;;\mid的区别

  • ;;是区分变量和参数,如L(θ;x)L(\theta;x)便是在强调这是关于θ\theta的函数
  • \mid表示条件,如p(x0θ)p(x_0 \mid \theta)便是强调当分布为θ\theta时,x0x_0发生的概率

1.2 贝叶斯公式

针对分布参数θ\theta和观测数据xx,贝叶斯公式写成

p(θx)=p(xθ)p(θ)p(x)=p(xθ)p(θ)p(xθ)p(θ)dθp(\theta \mid x) = \frac{p(x \mid \theta) p(\theta)}{p(x)} = \frac{p(x \mid \theta) p(\theta)}{\int p(x \mid \theta') p(\theta') d\theta'}

这四部分分别是

p(θ)先验p(xθ)似然p(x)证据/边缘似然p(θx)后验\underbrace{p(\theta)}_{\text{先验}} \quad \underbrace{p(x\mid\theta)}_{\text{似然}} \quad \underbrace{p(x)}_{\text{证据/边缘似然}} \quad \underbrace{p(\theta\mid x)}_{\text{后验}}

可以把它理解成

后验似然×先验\text{后验} \propto \text{似然}\times\text{先验}

这个过程可以理解为

我原来通过先验p(θ)p(\theta)对参数θ\theta有一个认识;现在观察到了数据xx后,似然p(xθ)p(x\mid\theta)衡量不同θ\theta对当前数据的解释程度;将二者结合并归一化后,得到新的参数分布p(θx)p(\theta\mid x)

先验p(θ)p(\theta)

它表示在看到数据xx之前,我认为参数θ\theta取不同值的概率是多少。

比如有一枚硬币,θ\theta表示正面概率。在抛硬币之前,你可能根据经验认为这枚硬币大概率比较公平,所以认为概率密度p(θ)p(\theta)0.50.5附近较大,而在0.010.01附近很小。注意这是关于θ\theta的概率分布,所以满足

p(θ)dθ=1\int p(\theta) d \theta =1

所以先验分布应该是在0.50.5处非常大,在别的地方非常小

似然性p(xθ)p(x \mid \theta)

它表示参数取θ\theta时,数据xx取不同值的概率是多少。即θ\theta对当前观测数据的解释程度,也可以写为L(θ;x)L(\theta;x)

比如对于抛硬币来说,定义θ\theta表示正面概率,xx为抛硬币是正面的次数。抛了10次,那么有p(xθ)=C10xθx(1θ)10xp(x \mid \theta) = C_{10}^x \theta ^x (1-\theta)^{10-x}

似然性是关于xx的概率分布,所以满足

p(xθ)dx=1\int p(x \mid \theta) d x =1

后验p(θx)p(\theta\mid x)

它表示看到数据xx之后,我现在认为参数θ\theta取不同值的概率是多少。

证据p(x)p(x)

它的作用主要是归一化,让后验满足

p(θx)dθ=1.\int p(\theta\mid x)d\theta=1.

似然与后验的区别

似然只负责这个参数能不能很好解释数据,它没有考虑这个参数本身有多可能,也就是缺少了先验的部分。

只有把二者结合起来才是数据出现后参数为θ\theta的可能性大小,即后验

1.3 最大似然估计(Maximum Likelihood Estimation, MLE)

最大似然估计的思想在于,对于给定的观测数据xx,我们希望能从所有的参数θ1,θ2,,θn\theta_1,\theta _2,\cdots ,\theta _n中找出能最大概率生成观测数据的参数θ\theta ^*作为估计结果。前面提及对于已经观测到的数据xx,似然函数为

L(θ;x)=pθ(x)L(\theta ; x) = p_{\theta }(x)

因此最大似然估计定义为

θ=argmaxθL(θ;x)=argmaxθpθ(x)\theta ^* = \arg \max _{\theta } L(\theta ;x) = \arg \max _{\theta }p_{\theta }(x)

1.3.1 有限样本下的MLE

假设给定数据集

D={x1,x2,,xn}D = \left\{ x_1,x_2,\cdots ,x_n \right\}

并假设所有样本独立同分布

xipdata(x)x_i \sim p_{data}(x)

由于样本之间相互独立,整个数据集的联合概率为

pθ(D)=i=1npθ(xi)p_\theta(D) = \prod_{i=1}^{n}p_\theta(x_i)

因此似然函数为

L(θ;D)=i=1npθ(xi)L(\theta ; D) = \prod_{i=1}^{n} p_{\theta}(x_i)

由于连乘形式不方便求解,同时大量小概率相乘容易产生数值下溢,因此通常对似然取对数,得到对数似然(log-likelihood)

(θ;D)=logL(θ;D)\ell(\theta;D) = \log L(\theta;D)

(θ;D)=i=1nlogpθ(xi)\ell (\theta;D) = \sum_{i=1}^{n} \log p_{\theta}(x_i)

由于对数函数是单调递增函数,因此最大化似然最大化对数似然具有相同的最优解

1.3.2 MLE 的总体期望目标(理论极限)

这是假设样本无穷多时的极限,是理论总体版本。根据有限样本对数似然,计算平均对数似然

1n(θ)=1ni=1nlogpθ(xi)\frac{1}{n} \ell (\theta ) = \frac{1}{n} \sum_{i=1}^{n} \log p_{\theta}(x_i)

当样本数nn足够大时,根据大数定律,x1,,xnx_1,\cdots,x_n 独立同分布,只要期望存在,有

1ni=1ng(xi)nExpdata[g(x)]\frac{1}{n} \sum_{i=1}^{n} g(x_i) \xrightarrow{n \to \infty } \mathbb{E}_{x \sim p_{data}}[g(x)]

g(x)=logpθ(x)g(x)=\log p_{\theta}(x)便有

limn1ni=1nlogpθ(xi)=Expdata[logpθ(x)]\lim_{n \to \infty} \frac{1}{n} \sum_{i=1}^{n} \log p_{\theta}(x_i) = \mathbb{E}_{x \sim p_{data}}[\log p_{\theta}(x)]

因此,可以定义 MLE 对应的总体期望目标

J(θ)=Expdata[logpθ(x)]\mathcal{J}(\theta) = \mathbb{E}_{x \sim p_{data}}[\log p_{\theta}(x)]

对于连续随机变量,根据期望的定义有

J(θ)=pdata(x)logpθ(x)dx\mathcal{J}(\theta) = \int p_{data}(x) \log p_{\theta}(x) dx

这里的pdata(x)p_{\mathrm{data}}(x)表示真实数据分布,而pθ(x)p_\theta(x)表示模型学习到的分布

1.4 KL散度

为了衡量两个分布qϕ(x)q_\phi(x)pθ(x)p_\theta(x)之间的差异,通常使用 KL 散度

DKL(qϕ(x)pθ(x))D_{\mathrm{KL}}\left(q_\phi(x)\Vert p_\theta(x)\right)

其定义为

DKL(qp)=q(x)logq(x)p(x)dxD_{\mathrm{KL}}(q\Vert p) = \int q(x) \log \frac{q(x)}{p(x)} dx

KL 散度满足

DKL(qp)0D_{\mathrm{KL}}(q\Vert p)\ge 0

并且当且仅当q(x)=p(x)q(x)=p(x)几乎处处成立时取零。

2. 变分自编码器(Variational Autoencoder, VAE)

变分自编码器中有两个网络

  1. 推断模型/Encoderqϕ(zx)q_\phi(z\mid x),做的是xzx\rightarrow z
  2. 生成模型/Decoderpθ(xz)p_\theta(x\mid z),做的是zxz\rightarrow x

训练过程

现在假设训练集里拿出一张图片xx

第一步:把真实图片送进 Encoder,输入xx,经过编码器,输出μϕ(x),σϕ(x)\mu_\phi(x),\sigma_\phi(x),也就是构造qϕ(zx)q_\phi(z\mid x),完成xqϕ(zx)x \rightarrow q_\phi(z\mid x)

第二步:通过重参数化技巧从qϕ(zx)q_\phi(z\mid x)中得到潜变量zz

第三步:把zz输入生成模型,经过解码器,输出μθ(z),σθ(z)\mu_\theta(z),\sigma_\theta(z),也就是构造pθ(xz)p_\theta(x\mid z),完成zpθ(xz)z\rightarrow p_\theta(x\mid z)

第四步:将 Decoder 输出的均值记为x^=μθ(z)\hat{x}=\mu_\theta(z)

第五步:计算Lrec=xx^2\mathcal L_{\mathrm{rec}} = \|x-\hat x\|^2LKL=DKL(qϕ(zx)p(z))\mathcal L_{\mathrm{KL}} = D_{\mathrm{KL}} \left(q_\phi(z\mid x) \Vert p(z) \right)

第六步:反向更新参数ϕ\phiθ\theta

为什么需要两个方向

生成模型实现的是zxz\rightarrow x,但是训练数据给我们的是xx,于是出现矛盾:Decoder需要zz,可是训练集只有xx。所以我们增加一个 Encoder实现xzx\rightarrow z

生成阶段

生成阶段不需要使用编码器qϕ(zx)q_\phi(z\mid x),直接从先验分布p(z)p(z)中采样zz。然后传入到解码器中得到新图片。

这里的“先验分布”是我们在建模时人为指定的,由于训练时计算损失时包含DKL(qϕ(zx)p(z))D_{\mathrm{KL}} \left(q_\phi(z\mid x) \Vert p(z) \right),因此我们从先验分布中采样的zz会落在训练覆盖的区域中

2.1 为何引入潜变量

生成模型要想生成新数据,本质上就需要学数据分布。如果我们真的得到pθ(x)pdata(x)p_\theta(x)\approx p_{\text{data}}(x),那我们理论上可以做xpθ(x)x\sim p_\theta(x)。即从学到的数据分布里直接采样一个新样本,这就是“生成”的本质。

传统的最大似然估计默认模型能够直接描述观测变量xx的概率分布pθ(x)p_\theta(x),并通过最大似然估计学习模型参数

maxθlogpθ(x)\max_\theta \log p_\theta(x)

但是对于图像、视频等高维复杂数据,直接对pθ(x)p_\theta(x)建模通常比较困难。一种常见思路是:

假设观测数据xx背后存在一个无法直接观测到的隐变量zz,观测数据xx是由隐变量zz进一步生成的。

如此通过引入潜变量zz,将复杂的边缘分布pθ(x)p_\theta(x)表示为

pθ(x)=p(z)pθ(xz)dzp_\theta(x)=\int p(z)p_\theta(x\mid z)dz

这个过程称为对隐变量zz进行边缘化(marginalizatio)。因此pθ(x)p_\theta(x)称为观测数据xx的边缘似然(marginal likelihood)或证据(evidence)(类似贝叶斯公式)。其中:

  • p(z)p(z)称为隐变量的先验分布(prior)
  • pθ(xz)p_\theta(x\mid z)称为生成模型(generative model)或似然模型

从这里开始,θ\theta从具体的分布参数推广为模型参数。在深度学习中,概率分布的参数通常由神经网络输出,而神经网络由参数 θ\theta决定,因此θ\theta间接决定了分布参数。

2.2 为何要选用编码器实现xzx\rightarrow z

xzx\rightarrow z实际上在回答:给定当前观测xx,什么样的潜变量zz更可能产生它?

这对应隐变量的后验分布pθ(zx)p_\theta(z\mid x),根据贝叶斯公式有

pθ(zx)=pθ(xz)p(z)p(z)pθ(xz)dzp_\theta(z\mid x)=\frac{p_\theta(x\mid z)p(z)}{\int p(z)p_\theta(x\mid z)dz}

也可以利用联合概率写成

pθ(zx)=pθ(x,z)pθ(x)p_\theta(z\mid x)=\frac{p_\theta(x,z)}{p_\theta(x)}

其中分子

pθ(xz)p(z)p_\theta(x\mid z)p(z)

通常是可以计算的,真正困难的部分在于分母pθ(x)=p(z)pθ(xz)dzp_\theta(x)=\int p(z)p_\theta(x\mid z)\,dz

因此,要计算一个给定xx对应的后验分布pθ(zx)p_\theta(z\mid x)必须先计算这个积分

对于一些简单概率模型,如果选择了合适的分布族,积分可能存在解析解。例如在线性高斯模型中,p(z)p(z)p(xz)p(x\mid z)都是高斯分布时,后验p(zx)p(z\mid x)仍然可以得到解析形式。

因此问题真正出现在复杂的非线性、高维潜变量模型中

VAE等深度生成模型中,pθ(xz)p_\theta(x\mid z)通常由一个非线性的神经网络表示。此时边缘似然的积分通常不存在简单的解析解。特别是当zz是高维变量时,计算一个高维积分的计算代价可能非常高

因此边缘似然pθ(x)p_\theta(x)难以精确计算,从而进一步导致后验也难以直接计算。这种情况通常称为后验分布是不可解析intractable

既然真实后验pθ(zx)p_\theta(z\mid x)通常很难直接计算,一种自然的思路就是:构造一个容易计算的概率分布,去近似真实后验。

因此引入

qϕ(zx)pθ(zx)q_\phi(z\mid x) \approx p_\theta(z\mid x)

其中:

  • pθ(zx)p_\theta(z\mid x):真实后验;
  • qϕ(zx)q_\phi(z\mid x):人为选取的近似后验;
  • θ\theta:生成模型参数
  • ϕ\phi:近似后验模型的参数。

在 VAE 中,qϕ(zx)q_\phi(z\mid x)通常由一个神经网络实现,也就是所谓的 encoder / inference model

于是问题从直接计算pθ(zx)p_\theta(z\mid x)转换成寻找一个qϕ(zx)q_\phi(z\mid x),使其尽可能接近pθ(zx)p_\theta(z\mid x)

这个过程称为变分推断

之所以叫变分,是因为变分推断的优化对象不再只是一个数,而是一个函数或分布。这种对函数空间中对象进行优化的问题通常称为变分问题。

2.3 为什么损失中计算Lrec=xx^2\mathcal L_{\mathrm{rec}} = \|x-\hat x\|^2DKL(qϕ(zx)p(z))D_{\mathrm{KL}} \left(q_\phi(z\mid x) \Vert p(z) \right)

首先需要明确一点,VAE 虽然引入了潜变量和神经网络,其根本目标仍然没有改变:希望模型分布尽可能逼近真实数据分布,即

maxθlogpθ(x)\max_\theta \log p_\theta(x)

前面提及过,直接对pθ(x)p_\theta(x)建模比较困难,更不要说去优化它了,因此需要寻找一个可计算的目标去近似它,于是定义了证据下界(Evidence Lower Bound, ELBO),它是logpθ(x)\log p_\theta(x)的一个下界。

2.3.1 构造证据下界 ELBO

根据pθ(x)p_\theta(x)的定义pθ(x)=pθ(x,z)dzp_\theta(x)=\int p_\theta(x,z)dz,在积分中乘除同一个近似后验qϕ(zx)q_\phi(z\mid x)得到

pθ(x)=qϕ(zx)pθ(x,z)qϕ(zx)dzp_\theta(x)=\int q_\phi(z\mid x) \frac{p_\theta(x,z)}{q_\phi(z\mid x)}dz

根据期望定义

pθ(x)=Ezqϕ(zx)[pθ(x,z)qϕ(zx)]p_\theta(x)=\mathbb{E}_{z\sim q_\phi(z\mid x)}\left[\frac{ p_\theta(x,z)}{q_\phi(z\mid x)}\right]

因此

logpθ(x)=logEqϕ(zx)[pθ(x,z)qϕ(zx)]\log p_\theta(x) = \log \mathbb{E}_{q_\phi(z\mid x)} \left[ \frac{p_\theta(x,z)}{q_\phi(z\mid x)}\right]

由于对数函数是凹函数,根据 Jensen 不等式有

logE[Y]E[logY]\log\mathbb{E}[Y] \geq \mathbb{E}[\log Y]

因此

logpθ(x)Eqϕ(zx)[logpθ(x,z)qϕ(zx)]\log p_\theta(x) \geq \mathbb{E}_{q_\phi(z\mid x)} \left[ \log \frac{ p_\theta(x,z) }{ q_\phi(z\mid x) } \right]

定义右侧为

LELBO(x;θ,ϕ)=Eqϕ(zx)[logpθ(x,z)qϕ(zx)]\mathcal{L}_{\mathrm{ELBO}} (x;\theta,\phi) = \mathbb{E}_{q_\phi(z\mid x)} \left[\log \frac{ p_\theta(x,z) }{ q_\phi(z\mid x) } \right]

因此

logpθ(x)LELBO\log p_\theta(x) \geq \mathcal{L}_{\mathrm{ELBO}}

所以它被称为证据下界(Evidence Lower Bound)。这里的“证据”指的就是pθ(x)p_\theta(x),而 ELBO 是logpθ(x)\log p_\theta(x)的下界。

2.3.2 ELBO 与精确后验的关系

ELBO 不仅仅是通过 Jensen 不等式人为构造出的一个下界,它与近似后验和精确后验之间的差异还有非常直接的关系。

考虑

DKL(qϕ(zx)pθ(zx))D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p_\theta (z\mid x) \right)

根据 KL 散度定义

DKL(qϕ(zx)pθ(zx))=Eqϕ(zx)[logqϕ(zx)pθ(zx)]D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p_\theta(z\mid x) \right) = \mathbb E_{q_\phi(z\mid x)} \left[ \log \frac{ q_\phi(z\mid x) }{ p_\theta(z\mid x) } \right]

根据贝叶斯公式

pθ(zx)=pθ(x,z)pθ(x)p_\theta(z\mid x) = \frac{ p_\theta(x,z) }{ p_\theta(x) }

代入得到

DKL=Eqϕ[logqϕ(zx)logpθ(x,z)+logpθ(x)]D_{\mathrm{KL}} = \mathbb E_{q_\phi} \left[ \log q_\phi(z\mid x) - \log p_\theta(x,z) + \log p_\theta(x) \right]

由于logpθ(x)\log p_\theta(x)与潜变量无关,可以提出期望,因此

DKL=logpθ(x)Eqϕ[logpθ(x,z)qϕ(zx)]D_{\mathrm{KL}} = \log p_\theta(x) - \mathbb E_{q_\phi} \left[ \log \frac{ p_\theta(x,z) }{ q_\phi(z\mid x) } \right]

其中第二项恰好就是 ELBO,因此得到

logpθ(x)真实对数边缘似然=LELBO+DKL(qϕ(zx)pθ(zx))后验似然误差\boxed{ \underbrace{\log p_\theta(x)}_{\text{真实对数边缘似然}} = \mathcal L_{\mathrm{ELBO}} + \underbrace{D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p_\theta(z\mid x) \right)}_{\text{后验似然误差}} }

由于 KL 散度始终满足DKL0D_{\mathrm{KL}} \geq 0,因此必然有LELBOlogpθ(x)\mathcal L_{\mathrm{ELBO}} \leq \log p_\theta(x)

qϕ(zx)=pθ(zx)q_\phi(z\mid x) = p_\theta(z\mid x)时,DKL=0D_{\mathrm{KL}} = 0

此时

LELBO=logpθ(x)\mathcal L_{\mathrm{ELBO}} = \log p_\theta(x)

也就是说,当近似后验完全等于精确后验时,ELBO 就不再只是一个下界,而与真实对数边缘似然完全相等。

当固定参数θ\theta时,由于logpθ(x)\log p_\theta(x)θ\theta无关,因此

maxϕLELBOminϕDKL(qϕ(zx)pθ(zx))\max_\phi \mathcal L_{\mathrm{ELBO}} \Leftrightarrow \min_\phi D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p_\theta(z\mid x) \right)

因此 ELBO 同时解决了两个问题:

  1. 可以作为难以计算的logpθ(x)\log p_\theta(x)的可优化下界,从而训练生成模型;
  2. 会推动近似后验qϕ(zx)q_\phi(z\mid x)接近精确后验pθ(zx)p_\theta(z\mid x)从而训练推断模型。

2.3.3 将 ELBO 化为 VAE 可计算的形式

根据概率乘法公式

pθ(x,z)=p(z)pθ(xz)p_\theta(x,z) = p(z)p_\theta(x\mid z)

将其代入 ELBO:

LELBO=Eqϕ(zx)[logp(z)pθ(xz)qϕ(zx)]\mathcal L_{\mathrm{ELBO}} = \mathbb E_{q_\phi(z\mid x)} \left[ \log \frac{ p(z)p_\theta(x\mid z) }{ q_\phi(z\mid x) } \right]

进一步拆开:

LELBO=Eqϕ(zx)[logpθ(xz)]+Eqϕ(zx)[logp(z)logqϕ(zx)]\mathcal L_{\mathrm{ELBO}} = \mathbb E_{q_\phi(z\mid x)} \left[ \log p_\theta(x\mid z) \right] + \mathbb E_{q_\phi(z\mid x)} \left[ \log p(z) - \log q_\phi(z\mid x) \right]

等号右侧的第二项可以看成KL散度,最终得到 VAE 中最常见的 ELBO:

LELBO=Eqϕ(zx)[logpθ(xz)]数据拟合项DKL(qϕ(zx)p(z))潜变量分布约束\boxed{ \mathcal L_{\mathrm{ELBO}} = \underbrace{ \mathbb E_{q_\phi(z\mid x)} \left[ \log p_\theta(x\mid z) \right] }_{\text{数据拟合项}} - \underbrace{ D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right) }_{\text{潜变量分布约束}} }

注意,VAE 中出现DKL(qϕ(zx)p(z))D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right),并不是因为我们人为把原来想比较的精确后验pθ(zx)p_\theta(z\mid x)替换成了先验p(z)p(z)而是因为将 ELBO 展开之后,这一 KL 项自然出现。

因此,下面两个 KL 散度承担的角色不同:

  1. DKL(qϕ(zx)pθ(zx))D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p_\theta(z\mid x) \right)是优化ELBO达成的目标之一
  2. DKL(qϕ(zx)p(z))D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right)是ELBO的组成部分

第一项

Eqϕ(zx)[logpθ(xz)]\mathbb E_{q_\phi(z\mid x)} \left[ \log p_\theta(x\mid z) \right]

要求从近似后验得到的潜变量能够使生成模型对真实观测数据赋予较高概率。
也就是说,需要让pθ(xz)p_\theta(x\mid z)尽可能大。它对应生成模型对观测数据的拟合能力。

第二项

DKL(qϕ(zx)p(z))D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right)

则要求编码器产生的近似后验不要过度偏离事先规定的潜变量先验。

2.3.4 从最大化 ELBO 到实际训练 Loss

理论上 VAE 希望最大化 ELBO:

maxθ,ϕLELBO\max_{\theta,\phi} \mathcal L_{\mathrm{ELBO}}

但是深度学习训练通常采用最小化损失函数的形式,因此定义

JVAE=LELBO=Eqϕ(zx)[logpθ(xz)]Lrec+DKL(qϕ(zx)p(z))LKL\boxed{ \begin{aligned} \mathcal J_{\mathrm{VAE}} &= - \mathcal L_{\mathrm{ELBO}} \\ &= \underbrace{- \mathbb E_{q_\phi(z\mid x)} \left[ \log p_\theta(x\mid z) \right]}_{\mathcal L_{\mathrm{rec}}} + \underbrace{D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right)}_{\mathcal L_{\mathrm{KL}}} \end{aligned} }

式中的DKL(qϕ(zx)p(z))D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right)都是可以直接获取的,此项可以直接作为损失函数

VAE中将生成模型设定为采用固定方差的高斯分布,因此Eqϕ(zx)[logpθ(xz)]- \mathbb E_{q_\phi(z\mid x)} \left[ \log p_\theta(x\mid z) \right]在VAE中可以进一步简化

理论上的重构项为

Eqϕ(zx)[logpθ(xz)]-\mathbb E_{q_\phi(z\mid x)} \left[ \log p_\theta(x\mid z) \right]

按照定义,需要对qϕ(zx)q_\phi(z\mid x)下所有可能的潜变量求期望。
实际训练中通常通过 Monte Carlo 采样进行估计。首先从近似后验采样

z(k)qϕ(zx)z^{(k)} \sim q_\phi(z\mid x)

然后利用样本均值估计期望:

Eq[f(z)]1Kk=1Kf(z(k))\mathbb E_q[f(z)] \approx \frac{1}{K} \sum_{k=1}^{K} f \left( z^{(k)} \right)

VAE 实际训练中通常只需要少量样本,常见情况为K=1K=1因此

Eq[logpθ(xz)]logpθ(xz(1))\boxed{ -\mathbb E_q \left[ \log p_\theta(x\mid z) \right] \approx -\log p_\theta \left( x\mid z^{(1)} \right) }

VAE的生成模型采用固定方差的高斯分布:

pθ(xz)=N(x;μθ(z),σx2I)p_\theta(x\mid z) = \mathcal N \left( x; \mu_\theta(z), \sigma_x^2I \right)

因此Decoder仅输出该分布的均值μθ(z)\mu_\theta(z),此时高斯分布的负对数似然为

logpθ(xz)=12σx2xμθ(z)2+d2log(2πσx2)-\log p_\theta(x\mid z) = \frac{1}{2\sigma_x^2} \|x-\mu_\theta(z)\|^2 + \frac{d}{2} \log \left( 2\pi\sigma_x^2 \right)

如果σx2\sigma_x^2被设为固定常数,那么第二项与待优化参数无关,而第一项前面的系数也只是常数。将μθ(z)\mu_\theta(z)记为x^\hat{x},因此在优化意义上

logpθ(xz)xx^2\boxed{ -\log p_\theta(x\mid z) \propto \|x-\hat{x}\|^2 }

Lrec\mathcal L_{\mathrm{rec}}本质上是生成模型的负对数似然,并不天然等于xx^2\|x-\hat{x}\|^2具体采用什么重构损失,取决于如何定义生成分布pθ(xz)p_\theta(x\mid z)

2.3.5 从最大似然到 VAE Loss 的完整逻辑

整个 VAE 的训练目标可以总结为:
首先,我们真正希望通过最大似然估计学习生成模型:

maxθlogpθ(x)\max_\theta \log p_\theta(x)

但是

pθ(x)=p(z)pθ(xz)dzp_\theta(x) = \int p(z)p_\theta(x\mid z)dz

通常难以计算。因此引入qϕ(zx)q_\phi(z\mid x)并构造logpθ(x)\log p_\theta(x)的下界:

LELBOlogpθ(x)\mathcal L_{\mathrm{ELBO}} \leq \log p_\theta(x)

于是改为最大化

maxθ,ϕLELBO\max_{\theta,\phi} \mathcal L_{\mathrm{ELBO}}

同时有

logpθ(x)=LELBO+DKL(qϕ(zx)pθ(zx))\log p_\theta(x) = \mathcal L_{\mathrm{ELBO}} + D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p_\theta(z\mid x) \right)

因此 ELBO 越紧,近似后验就越接近精确后验。再将 ELBO 展开:

LELBO=Eq[logpθ(xz)]DKL(qϕ(zx)p(z))\mathcal L_{\mathrm{ELBO}} = \mathbb E_q \left[ \log p_\theta(x\mid z) \right] - D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right)

实际神经网络训练最小化负 ELBO:

JVAE=Eq[logpθ(xz)]+DKL(qϕ(zx)p(z))\mathcal J_{\mathrm{VAE}} = - \mathbb E_q \left[ \log p_\theta(x\mid z) \right] + D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right)

在固定方差 Gaussian Decoder 下,进一步得到常见形式:

JVAExx^2+DKL(qϕ(zx)p(z))\mathcal J_{\mathrm{VAE}} \propto \|x-\hat{x}\|^2 + D_{\mathrm{KL}} \left( q_\phi(z\mid x) \Vert p(z) \right)

2.4 为什么需要重参数化技巧

普通的随机采样操作并没有把zz显式写成 Encoder 参数ϕ\phi的可微函数,因此难以直接通过标准反向传播计算损失关于ϕ\phi的梯度。

注意,这并不是说“随机变量本身不能求导”,而是说按照zqϕ(zx)z\sim q_\phi(z\mid x)这种写法,采样过程是一个参数依赖的随机操作,在普通计算图中没有明确的确定性函数关系可以让梯度继续传播。

因此需要对采样过程进行重新表示,这就是重参数化技巧(Reparameterization Trick)

2.4.1 重参数化的基本思想

原本的采样过程为

zN(μϕ(x),diag(σϕ2(x)))z \sim \mathcal N \left( \mu_\phi(x), \operatorname{diag} \left( \sigma_\phi^2(x) \right) \right)

其中随机性与 Encoder 输出的分布参数

μϕ(x),σϕ(x)\mu_\phi(x),\sigma_\phi(x)

混合在一起。
重参数化的核心思想是:
将随机性从参数相关的分布 qϕ(zx)q_\phi(z\mid x) 中分离出来,放到一个与参数 ϕ\phi 无关的固定噪声分布中。

首先从标准高斯分布采样

ϵN(0,I)\epsilon \sim \mathcal N(0,I)

然后令

z=μϕ(x)+σϕ(x)ϵ\boxed{ z = \mu_\phi(x) + \sigma_\phi(x) \odot \epsilon }

其中\odot表示逐元素乘法。由于

ϵN(0,I)\epsilon \sim \mathcal N(0,I)

因此

μϕ(x)+σϕ(x)ϵ\mu_\phi(x) + \sigma_\phi(x)\odot\epsilon

仍然服从

N(μϕ(x),diag(σϕ2(x)))\mathcal N \left( \mu_\phi(x), \operatorname{diag} \left( \sigma_\phi^2(x) \right) \right)

所以重参数化并没有改变原来的概率分布,只是改变了产生这个随机变量的计算方式。

重参数化以后变成

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

2.4.2 为什么重参数化以后可以反向传播

重参数化以后,随机性全部集中在ϵ\epsilon中。
ϵ\epsilon的分布N(0,I)\mathcal N(0,I)与 Encoder 参数ϕ\phi没有关系。
在一次前向传播中,采样得到某个具体的ϵ\epsilon之后,可以把它看作一个固定值。
于是

z=μϕ(x)+σϕ(x)ϵz = \mu_\phi(x) + \sigma_\phi(x)\odot\epsilon

就变成了关于μϕ(x)\mu_\phi(x)σϕ(x)\sigma_\phi(x)的普通可微函数。
例如

zμϕ(x)=I\frac{\partial z}{\partial \mu_\phi(x)} = I

以及

zσϕ(x)=ϵ\frac{\partial z}{\partial \sigma_\phi(x)} = \epsilon

因此损失关于 Encoder 参数的梯度可以通过链式法则计算,这就是重参数化技巧最核心的作用。这使得 VAE 既可以保留潜变量的随机性,又能够利用标准反向传播算法同时训练 Encoder 和 Decoder。