MIT 6.S184 | 流匹配与扩散模型导论 | 2026 | Course Notes | 翻译 | Appendix D E
前言
MIT6.S184: Generative AI with Stochastic Differential Equations 最新 2026 年课程笔记 An Introduction to Flow Matching and Diffusion Models 翻译,本篇文章翻译附录 D、E 相关内容🤗。
Course Notes:https://diffusion.csail.mit.edu/2026/docs/lecture_notes.pdf
Course Website:https://diffusion.csail.mit.edu/2026/index.html
D. Additional Perspectives on VAEs
在本节中,我们进一步扩展正文中关于 VAE 的讨论,并从变分(variational)的角度,重新推导 公式 (83) 中的总 VAE loss。作为第一步,注意 encoder 与 decoder 都会在数据 x x x 和 latent variable z z z 上诱导出一个联合分布:
q ϕ ( x , z ) = p d a t a ( x ) q ϕ ( ⋅ ∣ x ) ( encoder joint ) p θ ( x , z ) = p θ ( x ∣ z ) p p r i o r ( z ) ( decoder joint ) \begin{align*} q_\phi(x,z) &= p_{\mathrm{data}}(x)q_\phi(\cdot|x) \qquad \qquad \qquad \qquad (\text{encoder joint}) \\[8pt] p_\theta(x,z) &= p_\theta(x|z)p_{\mathrm{prior}}(z) \qquad \qquad \qquad \qquad (\text{decoder joint}) \end{align*} qϕ(x,z)pθ(x,z)=pdata(x)qϕ(⋅∣x)(encoder joint)=pθ(x∣z)pprior(z)(decoder joint)
因此,我们可以将训练 VAE 理解为学习参数 ϕ , θ \phi,\theta ϕ,θ ,使得 encoder 与 decoder 所对应的联合分布尽可能接近。我们可以通过 latent-data 联合分布的 KL 散度来做到这一点:
D K L ( q ϕ ( x , z ) ∥ p θ ( x , z ) ) = D K L ( p d a t a ( x ) q ϕ ( z ∣ x ) ∥ p θ ( x ∣ z ) p p r i o r ( z ) ) = E ■ [ log ( p d a t a ( x ) q ϕ ( z ∣ x ) p θ ( x ∣ z ) p p r i o r ( z ) ) ] = E ■ [ log p d a t a ( x ) ] + E ■ [ log ( q ϕ ( z ∣ x ) p p r i o r ( z ) ) ] − E ■ [ log p θ ( x ∣ z ) ] ■ = x ∼ p d a t a ( x ) , z ∼ q ϕ ( z ∣ x ) . (132) \begin{aligned} D_{\mathrm{KL}} \!\left( q_\phi(x,z) \,\|\, p_\theta(x,z) \right) &= D_{\mathrm{KL}} \!\left( p_{\mathrm{data}}(x)\, q_\phi(z\mid x) \,\|\, p_\theta(x\mid z)\, p_{\mathrm{prior}}(z) \right) \\[14pt] &= \mathbb{E}_{\blacksquare} \!\left[ \log \left( \frac{ p_{\mathrm{data}}(x)\, q_\phi(z\mid x) }{ p_\theta(x\mid z)\, p_{\mathrm{prior}}(z) } \right) \right] \\[14pt] &= {\color{red}{ \mathbb{E}_{\blacksquare} \!\left[ \log p_{\mathrm{data}}(x) \right] }} + {\color{blue}{ \mathbb{E}_{\blacksquare} \!\left[ \log \left( \frac{ q_\phi(z\mid x) }{ p_{\mathrm{prior}}(z) } \right) \right] }} - {\color{green}{ \mathbb{E}_{\blacksquare} \!\left[ \log p_\theta(x\mid z) \right] }} \tag{132} \\[16pt] \blacksquare &= x\sim p_{\mathrm{data}}(x), \quad z\sim q_\phi(z\mid x). \end{aligned} DKL(qϕ(x,z)∥pθ(x,z))■=DKL(pdata(x)qϕ(z∣x)∥pθ(x∣z)pprior(z))=E■[log(pθ(x∣z)pprior(z)pdata(x)qϕ(z∣x))]=E■[logpdata(x)]+E■[log(pprior(z)qϕ(z∣x))]−E■[logpθ(x∣z)]=x∼pdata(x),z∼qϕ(z∣x).(132)
现在,我们依次分析剩余的三个项。首先,我们有:
E ■ [ log p d a t a ( x ) ] = E x ∼ p d a t a ( x ) [ log p d a t a ( x ) ] = C , (133) {\color{red}{\mathbb{E}_{{\blacksquare}} [\log p_{\mathrm{data}}(x)] = \mathbb{E}_{x\sim p_{\mathrm{data}}(x)} [\log p_{\mathrm{data}}(x)] = C}}, \tag{133} E■[logpdata(x)]=Ex∼pdata(x)[logpdata(x)]=C,(133)
其中 C C C 是一个与 ϕ , θ \phi,\theta ϕ,θ 无关的常数。接下来,我们发现:
E ■ [ log ( q ϕ ( z ∣ x ) p p r i o r ( z ) ) ] = E x ∼ p d a t a ( x ) [ D K L ( q ϕ ( z ∣ x ) ∥ p p r i o r ( z ) ) ] (134) \color{blue}\mathbb{E}_{{\blacksquare}} \left[ \log \left( \frac{ q_\phi(z|x) }{ p_{\mathrm{prior}}(z) } \right) \right] = \mathbb{E}_{x\sim p_{\mathrm{data}}(x)} \Big[ D_{\mathrm{KL}} (q_\phi(z|x)\,\|\,p_{\mathrm{prior}}(z)) \Big] \tag{134} E■[log(pprior(z)qϕ(z∣x))]=Ex∼pdata(x)[DKL(qϕ(z∣x)∥pprior(z))](134)
这一项鼓励 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x) 尽可能接近先验 p p r i o r ( z ) p_{\mathrm{prior}}(z) pprior(z) 。
最后,我们发现:
− E x ∼ p d a t a ( x ) , z ∼ q ϕ ( z ∣ x ) [ log p θ ( x ∣ z ) ] (135) \color{green} - \mathbb{E}_{x\sim p_{\mathrm{data}}(x), \,z\sim q_\phi(z|x)} [ \log p_\theta(x|z) ] \tag{135} −Ex∼pdata(x),z∼qϕ(z∣x)[logpθ(x∣z)](135)
对应于平均负对数似然,因此它的作用就是最小化重建损失。忽略常数项之后,我们将先验惩罚与重建项合并,得到 VAE loss 实际上就是 latent-data 联合空间上的 KL 散度:
L V A E ( ϕ , θ ) = E x ∼ p d a t a ( x ) [ D K L ( q ϕ ( z ∣ x ) ∥ p p r i o r ( z ) ) ] ⏟ prior enforcement loss − E x ∼ p d a t a ( x ) , z ∼ q ϕ ( z ∣ x ) [ log p θ ( x ∣ z ) ] ⏟ reconstruction loss = D K L ( q ϕ ( x , z ) ∥ p θ ( x , z ) ) + const \begin{align*} \mathcal{L}_{\mathrm{VAE}}(\phi,\theta) &= \underbrace{ {\color{blue} \mathbb{E}_{x\sim p_{\mathrm{data}}(x)} \Big[ D_{\mathrm{KL}} (q_\phi(z|x)\,\|\,p_{\mathrm{prior}}(z)) \Big]} }_{\text{prior enforcement loss}} - \underbrace{ {\color{green} \mathbb{E}_{x\sim p_{\mathrm{data}}(x), \,z\sim q_\phi(z|x)} [ \log p_\theta(x|z) ]} }_{\text{reconstruction loss}} \tag{136} \\[8pt] &= D_{\mathrm{KL}} \big( q_\phi(x,z)\,\|\,p_\theta(x,z) \big) + \text{const} \tag{137} \end{align*} LVAE(ϕ,θ)=prior enforcement loss Ex∼pdata(x)[DKL(qϕ(z∣x)∥pprior(z))]−reconstruction loss Ex∼pdata(x),z∼qϕ(z∣x)[logpθ(x∣z)]=DKL(qϕ(x,z)∥pθ(x,z))+const(136)(137)
因此,我们可以将 VAE 理解为在 latent 与 image 的联合空间上最小化一个 KL 散度。
VAEs as generative models.
现在,我们来解释如何将 VAE 理解为 generative model。我们可以通过如下方式生成一个样本:首先设置 z ∼ p p r i o r = N ( 0 , I k ) z\sim p_{\mathrm{prior}} = \mathcal{N}(0,I_k) z∼pprior=N(0,Ik) ,然后从 decoder 中采样 x ∼ p θ ( ⋅ ∣ z ) x\sim p_\theta(\cdot|z) x∼pθ(⋅∣z) ,最终得到的分布为:
p θ ( x ) = ∫ z p θ ( x ∣ z ) p p r i o r ( z ) d z p_\theta(x) = \int_z p_\theta(x|z)p_{\mathrm{prior}}(z)\,dz pθ(x)=∫zpθ(x∣z)pprior(z)dz
现在,我们希望证明 VAE 学到的是如何近似从 p θ p_\theta pθ 中采样。为了说明这一点,我们需要下面这个结果:
Proposition 3 (Chain rule)
令 q ( x , z ) , p ( x , z ) q(x,z),\, p(x,z) q(x,z),p(x,z) 为两个关于变量 x ∈ R l 1 , z ∈ R l 2 x\in\mathbb{R}^{l_1}, \, z\in\mathbb{R}^{l_2} x∈Rl1,z∈Rl2 的联合分布。那么有:
D K L ( q ( z , x ) ∥ p ( z , x ) ) = D K L ( q ( x ) ∥ p ( x ) ) + E x ∼ q [ D K L ( q ( z ∣ x ) ∥ p ( z ∣ x ) ) ] . D_{\mathrm{KL}} (q(z,x)\,\|\,p(z,x)) = D_{\mathrm{KL}} (q(x)\,\|\,p(x)) + \mathbb{E}_{x\sim q} \Big[ D_{\mathrm{KL}} (q(z|x)\,\|\,p(z|x)) \Big]. DKL(q(z,x)∥p(z,x))=DKL(q(x)∥p(x))+Ex∼q[DKL(q(z∣x)∥p(z∣x))].
特别地,由于第二项根据 公式 (76) 总是非负,我们得到数据处理不等式:
D K L ( q ( x ) ∥ p ( x ) ) ≤ D K L ( q ( z , x ) ∥ p ( z , x ) ) . (138) D_{\mathrm{KL}} (q(x)\,\|\,p(x)) \le D_{\mathrm{KL}} (q(z,x)\,\|\,p(z,x)). \tag{138} DKL(q(x)∥p(x))≤DKL(q(z,x)∥p(z,x)).(138)
Proof.
D K L ( q ( z , x ) ∥ p ( z , x ) ) = E q [ log q ( z , x ) p ( z , x ) ] = E ( x , z ) ∼ q [ log q ( z ∣ x ) q ( x ) p ( z ∣ x ) p ( x ) ] = E ( x , z ) ∼ q [ log q ( z ∣ x ) p ( z ∣ x ) ] + E x ∼ q [ log q ( x ) p ( x ) ] = D K L ( q ( x ) ∥ p ( x ) ) + E x ∼ q [ D K L ( q ( z ∣ x ) ∥ p ( z ∣ x ) ) ] \begin{align*} D_{\mathrm{KL}} (q(z,x)\,\|\,p(z,x)) &= \mathbb{E}_q \left[ \log \frac{q(z,x)}{p(z,x)} \right] \\[8pt] &= \mathbb{E}_{(x,z)\sim q} \left[ \log \frac{ q(z|x)q(x) }{ p(z|x)p(x) } \right] \\[8pt] &= \mathbb{E}_{(x,z)\sim q} \left[ \log \frac{ q(z|x) }{ p(z|x) } \right] + \mathbb{E}_{x\sim q} \left[ \log \frac{ q(x) }{ p(x) } \right] \\[8pt] &= D_{\mathrm{KL}} (q(x)\,\|\,p(x)) + \mathbb{E}_{x\sim q} \Big[ D_{\mathrm{KL}} (q(z|x)\,\|\,p(z|x)) \Big] \end{align*} DKL(q(z,x)∥p(z,x))=Eq[logp(z,x)q(z,x)]=E(x,z)∼q[logp(z∣x)p(x)q(z∣x)q(x)]=E(x,z)∼q[logp(z∣x)q(z∣x)]+Ex∼q[logp(x)q(x)]=DKL(q(x)∥p(x))+Ex∼q[DKL(q(z∣x)∥p(z∣x))]
其中,我们反复使用了 KL 散度的定义。
根据 Proposition 3,我们现在可以证明:
L V A E ( ϕ , θ ) = D K L ( q ϕ ( x , z ) ∥ p θ ( x , z ) ) + const ≥ D K L ( p d a t a ( x ) ∥ p θ ( x ) ) + const (139) \mathcal{L}_{\mathrm{VAE}}(\phi,\theta) = D_{\mathrm{KL}} (q_\phi(x,z)\,\|\,p_\theta(x,z)) + \text{const} \ge D_{\mathrm{KL}} (p_{\mathrm{data}}(x)\,\|\,p_\theta(x)) + \text{const} \tag{139} LVAE(ϕ,θ)=DKL(qϕ(x,z)∥pθ(x,z))+const≥DKL(pdata(x)∥pθ(x))+const(139)
其中,我们使用了 q ϕ ( x , z ) q_\phi(x,z) qϕ(x,z) 关于 x x x 的边缘分布就是 p d a t a p_{\mathrm{data}} pdata 。换句话说,VAE loss 实际上是在最小化数据分布 p d a t a p_{\mathrm{data}} pdata 与 VAE 所生成分布之间 KL 散度的一个上限。因此,我们可以将 VAE 本身视为 generative model。
同样地,我们还可以证明:
L V A E ( ϕ , θ ) = D K L ( q ϕ ( x , z ) ∥ p θ ( x , z ) ) + const ≥ D K L ( q ϕ ( z ) ∥ p p r i o r ( z ) ) + const (140) \mathcal{L}_{\mathrm{VAE}}(\phi,\theta) = D_{\mathrm{KL}} (q_\phi(x,z)\,\|\,p_\theta(x,z)) + \text{const} \ge D_{\mathrm{KL}} (q_\phi(z)\,\|\,p_{\mathrm{prior}}(z)) + \text{const} \tag{140} LVAE(ϕ,θ)=DKL(qϕ(x,z)∥pθ(x,z))+const≥DKL(qϕ(z)∥pprior(z))+const(140)
换句话说,VAE objective 还最小化了 latent distribution 与 prior 之间 KL 散度的一个上限。
Why not stop at VAEs?
根据上面的讨论,VAE 本身其实已经可以作为 generative model。其中,encoder 的作用仅仅是帮助训练一个 decoder,使其能够把高斯分布映射到目标数据分布。因此,我们完全可以通过 z ∼ p p r i o r z\sim p_{\mathrm{prior}} z∼pprior ,然后 x ∼ p θ ( x ∣ z ) x\sim p_\theta(x|z) x∼pθ(x∣z) 来生成样本。那么,为什么我们还要坚持在学习到的 latent space 中,再额外训练一个 generative model 呢?
答案与所谓的 amortization gap 有关。它对应于 公式 (139) 与 公式 (140) 左右两边之间的 gap,本质上正是信息处理不平等中的 gap。这个 gap 为 0 的充要条件是 q ϕ ( z ∣ x ) = p θ ( z ∣ x ) q_\phi(z|x)=p_\theta(z|x) qϕ(z∣x)=pθ(z∣x) ,即 encoder 刚好表示真实 posterior。
因此,虽然 D K L ( q ϕ ( x , z ) ∥ p θ ( x , z ) ) D_{\mathrm{KL}}(q_\phi(x,z)\,\|\,p_\theta(x,z)) DKL(qϕ(x,z)∥pθ(x,z)) 被最小化,会推出 D K L ( q ϕ ( z ) ∥ p p r i o r ( z ) ) D_{\mathrm{KL}}(q_\phi(z)\,\|\,p_{\mathrm{prior}}(z)) DKL(qϕ(z)∥pprior(z)) 也被最小化(见 公式 (140)),但前者的下降,并不一定意味着后者也以相同程度下降。因此,在训练结束时,往往会同时存在 joint KL 没有完全最小化,amortization gap 也没有完全消失。也就是说:
D K L ( q ϕ ( x , z ) ∥ p θ ( x , z ) ) − D K L ( q ϕ ( z ) ∥ p p r i o r ( z ) ) (141) D_{\mathrm{KL}} (q_\phi(x,z)\,\|\,p_\theta(x,z)) - D_{\mathrm{KL}} (q_\phi(z)\,\|\,p_{\mathrm{prior}}(z)) \tag{141} DKL(qϕ(x,z)∥pθ(x,z))−DKL(qϕ(z)∥pprior(z))(141)
仍然大于 0,从而导致 q ϕ ( z ) ≠ p p r i o r ( z ) q_\phi(z)\ne p_{\mathrm{prior}}(z) qϕ(z)=pprior(z) 。
最后,注意在训练过程中,decoder 学习的是如何从 q ϕ ( z ) q_\phi(z) qϕ(z) 进行重建,而不是从 p p r i o r ( z ) p_{\mathrm{prior}}(z) pprior(z) 进行重建。因此,在推理时,如果直接切换到 p p r i o r ( z ) p_{\mathrm{prior}}(z) pprior(z) ,实际上等价于输入了训练时未见过的 latent distribution(即 out-of-distribution inference)。
不过在实践中,这种 mismatch 更像是一个 feature,而不是 bug。实践表明 flow model 与 diffusion model 通常比实现 VAE decoder 的 convolutional stack 更强大。因此,将一部分生成复杂性交给 latent generative model 反而是合理的。后面 discussion 部分我们还会再次回到这个问题。
此外,虽然超出了本讲义范围,但值得一提的是 diffusion model 与 flow model 的 variational formulation 其实也可以将它们本身视为一种 VAE。
The evidence lower bound. 将 公式 (132) 重新整理后,我们可以得到一些非常重要的视角。其中之一,就是所谓的 evidence lower bound,对于固定的 x x x ,注意:
E z ∼ q ϕ ( z ∣ x ) [ log ( q ϕ ( z ∣ x ) p θ ( x ∣ z ) p p r i o r ( z ) ) ] = E z ∼ q ϕ ( z ∣ x ) [ log ( q ϕ ( z ∣ x ) p θ ( z ∣ x ) ) ] − log p θ ( x ) = D K L ( q ϕ ( z ∣ x ) ∥ p θ ( z ∣ x ) ) − log p θ ( x ) (142) \begin{aligned} \mathbb E_{z\sim q_\phi(z|x)} \left[ \log \left( \frac{q_\phi(z|x)} {p_\theta(x|z)p_{\mathrm{prior}}(z)} \right) \right] &= \mathbb E_{z\sim q_\phi(z|x)} \left[ \log \left( \frac{q_\phi(z|x)} {p_\theta(z|x)} \right) \right] - \log p_\theta(x) \\[8pt] &= D_{\mathrm{KL}} \big( q_\phi(z|x)\,\|\,p_\theta(z|x) \big) - \log p_\theta(x) \tag{142} \end{aligned} Ez∼qϕ(z∣x)[log(pθ(x∣z)pprior(z)qϕ(z∣x))]=Ez∼qϕ(z∣x)[log(pθ(z∣x)qϕ(z∣x))]−logpθ(x)=DKL(qϕ(z∣x)∥pθ(z∣x))−logpθ(x)(142)
这里第一个等式来自贝叶斯公式:
p θ ( z ∣ x ) = p θ ( x ∣ z ) p p r i o r ( z ) p θ ( x ) . p_\theta(z|x) = \frac{ p_\theta(x|z)p_{\mathrm{prior}}(z) }{ p_\theta(x) }. pθ(z∣x)=pθ(x)pθ(x∣z)pprior(z).
因此,我们可以重新整理 公式 (142),得到:
E z ∼ q ϕ ( z ∣ x ) [ log ( p θ ( x ∣ z ) p p r i o r ( z ) q ϕ ( z ∣ x ) ) ] + D K L ( q ϕ ( z ∣ x ) ∥ p θ ( z ∣ x ) ) = log p θ ( x ) , (143) \mathbb E_{z\sim q_\phi(z|x)} \left[ \log \left( \frac{ p_\theta(x|z)p_{\mathrm{prior}}(z) }{ q_\phi(z|x) } \right) \right] + D_{\mathrm{KL}} \big( q_\phi(z|x)\,\|\,p_\theta(z|x) \big) = \log p_\theta(x), \tag{143} Ez∼qϕ(z∣x)[log(qϕ(z∣x)pθ(x∣z)pprior(z))]+DKL(qϕ(z∣x)∥pθ(z∣x))=logpθ(x),(143)
由于 D K L ( ⋅ ∥ ⋅ ) ≥ 0 D_{\mathrm{KL}}(\cdot\|\cdot)\ge 0 DKL(⋅∥⋅)≥0 ,因此立刻得到:
E z ∼ q ϕ ( z ∣ x ) [ log ( p θ ( x ∣ z ) p p r i o r ( z ) q ϕ ( z ∣ x ) ) ] ⏟ ≜ E L B O ( x ; ϕ , θ ) ≤ log p θ ( x ) ⏟ evidence . (144) \underbrace{ \mathbb{E}_{z\sim q_\phi(z\mid x)} \!\left[ \log \left( \frac{ p_\theta(x\mid z)\, p_{\mathrm{prior}}(z) }{ q_\phi(z\mid x) } \right) \right] }_{\triangleq\ \mathrm{ELBO}(x;\phi,\theta)} \le \underbrace{ \log p_\theta(x) }_{\text{evidence}} . \tag{144} ≜ ELBO(x;ϕ,θ) Ez∼qϕ(z∣x)[log(qϕ(z∣x)pθ(x∣z)pprior(z))]≤evidence logpθ(x).(144)
左侧这一项因此通常被称为 evidence lower bound,简称 ELBO。现在我们可以利用 ELBO 将 公式 (136) 中的 L V A E \mathcal L_{\mathrm{VAE}} LVAE 改写为:
L V A E = D K L ( q ϕ ( x , z ) ∥ p θ ( x , z ) ) + c o n s t = E x ∼ p d a t a E z ∼ q ϕ ( z ∣ x ) [ log ( p d a t a ( x ) q ϕ ( z ∣ x ) p θ ( x ∣ z ) p p r i o r ( z ) ) ] + c o n s t = E x ∼ p d a t a [ log p d a t a ( x ) − E L B O ( x ; ϕ , θ ) ] + c o n s t = − E x ∼ p d a t a [ E L B O ( x ; ϕ , θ ) ] − H ( p d a t a ) + c o n s t ⏟ const = − E x ∼ p d a t a [ E L B O ( x ; ϕ , θ ) ] + c o n s t (145) \begin{aligned} \mathcal L_{\mathrm{VAE}} &= D_{\mathrm{KL}}(q_\phi(x,z)\,\|\,p_\theta(x,z)) +\mathrm{const} \\[8pt] &= \mathbb E_{x\sim p_{\mathrm{data}}} \mathbb E_{z\sim q_\phi(z|x)} \left[ \log \left( \frac{ p_{\mathrm{data}}(x)q_\phi(z|x) }{ p_\theta(x|z)p_{\mathrm{prior}}(z) } \right) \right] +\mathrm{const} \\[8pt] &= \mathbb E_{x\sim p_{\mathrm{data}}} \left[ \log p_{\mathrm{data}}(x) - \mathrm{ELBO}(x;\phi,\theta) \right] +\mathrm{const}\\[8pt] &= - \mathbb E_{x\sim p_{\mathrm{data}}} \left[ \mathrm{ELBO}(x;\phi,\theta) \right] \underbrace{ - H(p_{\mathrm{data}}) +\mathrm{const} }_{\text{const}} \\[8pt] &= - \mathbb E_{x\sim p_{\mathrm{data}}} \left[ \mathrm{ELBO}(x;\phi,\theta) \right] +\mathrm{const} \tag{145} \end{aligned} LVAE=DKL(qϕ(x,z)∥pθ(x,z))+const=Ex∼pdataEz∼qϕ(z∣x)[log(pθ(x∣z)pprior(z)pdata(x)qϕ(z∣x))]+const=Ex∼pdata[logpdata(x)−ELBO(x;ϕ,θ)]+const=−Ex∼pdata[ELBO(x;ϕ,θ)]const −H(pdata)+const=−Ex∼pdata[ELBO(x;ϕ,θ)]+const(145)
因此,原始的 VAE 目标可以简单地看作是在最大化期望 ELBO。最后,让我们考虑一下当我们将 VAE 完全训练好时会发生什么。
Remark 42 (What Happens When q ϕ ( x , z ) ≈ p θ ( x , z ) q_\phi(x,z)\approx p_\theta(x,z) qϕ(x,z)≈pθ(x,z) ?)
首先,注意用于训练 latent generative model 的采样分布由下面的边缘分布给出:
q ϕ ( z ) = ∫ x q ϕ ( z ∣ x ) p d a t a ( x ) d x . q_\phi(z) = \int_x q_\phi(z|x)p_{\mathrm{data}}(x)\,dx. qϕ(z)=∫xqϕ(z∣x)pdata(x)dx.
如果 q ϕ ( x , z ) = p θ ( x , z ) q_\phi(x,z)=p_\theta(x,z) qϕ(x,z)=pθ(x,z) ,那么特别地:
q ϕ ( z ) = p θ ( z ) = p p r i o r ( z ) . q_\phi(z) = p_\theta(z) = p_{\mathrm{prior}}(z). qϕ(z)=pθ(z)=pprior(z).
因此 q ϕ ( x , z ) ≈ p θ ( x , z ) q_\phi(x,z)\approx p_\theta(x,z) qϕ(x,z)≈pθ(x,z) 意味着 latent sampling distribution 被正则化。其次 q ϕ ( x , z ) ≈ p θ ( x , z ) q_\phi(x,z)\approx p_\theta(x,z) qϕ(x,z)≈pθ(x,z) 意味着变分近似 p θ ( x ∣ z ) ≈ q ϕ ( x ∣ z ) p_\theta(x|z)\approx q_\phi(x|z) pθ(x∣z)≈qϕ(x∣z) 是良好的,进而 意味着重建误差很低。
Remark 43 (What’s Variational About VAEs?)
为什么我们不能直接取 q ϕ ( ⋅ ∣ x ) = p θ ( ⋅ ∣ x ) q_\phi(\cdot|x)=p_\theta(\cdot|x) qϕ(⋅∣x)=pθ(⋅∣x) ,从而保证 q ϕ ( x , z ) = p θ ( x , z ) = 0 q_\phi(x,z)=p_\theta(x,z)=0 qϕ(x,z)=pθ(x,z)=0 ?原因在于,虽然我们知道 likelihood p θ ( x ∣ z ) p_\theta(x|z) pθ(x∣z) ,但 posterior:
p θ ( z ∣ x ) = p θ ( x ∣ z ) p p r i o r ( z ) p θ ( x ) p_\theta(z|x) = \frac{ p_\theta(x|z)p_{\mathrm{prior}}(z) }{ p_\theta(x)} pθ(z∣x)=pθ(x)pθ(x∣z)pprior(z)
通常是不可计算的,因为我们无法获得 likelihood p θ ( x ) p_\theta(x) pθ(x) 。因此,VAE 中 “variational” 的存在,正是因为 q ϕ ( ⋅ ∣ x ) q_\phi(\cdot|x) qϕ(⋅∣x) 充当了不可计算 posterior p θ ( ⋅ ∣ x ) p_\theta(\cdot|x) pθ(⋅∣x) 的一个替代物,或者说 variational approximation(变分近似)。
Reconstruction vs Generation. 给定 encoder q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(z∣x) ,decoder p θ ( x ∣ z ) p_\theta(x|z) pθ(x∣z) 以及一个训练来从 q ϕ ( z ) q_\phi(z) qϕ(z) 中采样的 latent generative model r ψ r_\psi rψ ,我们可以考虑下面两种 generative models:
r ψ , θ r e c o n ( x o u t ) = ∫ z , x i n p θ ( x o u t ∣ z ) q ϕ ( z ∣ x d a t a ) p d a t a ( x d a t a ) d z d x i n (reconstruction sampler) r ψ , ϕ g e n ( x o u t ) = ∫ z g e n p θ ( x o u t ∣ z g e n ) r ψ ( z g e n ) d z g e n (generative sampler) \begin{align*} r^{\mathrm{recon}}_{\psi,\theta}(x_{\mathrm{out}}) &= \int_{z,x_{\mathrm{in}}} p_\theta(x_{\mathrm{out}}|z) q_\phi(z|x_{\mathrm{data}}) p_{\mathrm{data}}(x_{\mathrm{data}}) \,dz\,dx_{\mathrm{in}} \qquad \qquad \text{(reconstruction sampler)} \\[8pt] r^{\mathrm{gen}}_{\psi,\phi}(x_{\mathrm{out}}) &= \int_{z_{\mathrm{gen}}} p_\theta(x_{\mathrm{out}}|z_{\mathrm{gen}}) r_\psi(z_{\mathrm{gen}}) \,dz_{\mathrm{gen}} \qquad \qquad \qquad \qquad \qquad \quad \text{(generative sampler)} \end{align*} rψ,θrecon(xout)rψ,ϕgen(xout)=∫z,xinpθ(xout∣z)qϕ(z∣xdata)pdata(xdata)dzdxin(reconstruction sampler)=∫zgenpθ(xout∣zgen)rψ(zgen)dzgen(generative sampler)
换句话说,reconstruction sampler 从 x d a t a ∈ p d a t a x_{\mathrm{data}}\in p_{\mathrm{data}} xdata∈pdata 开始,encode 到 z z z 再 decode 得到 x o u t x_{\mathrm{out}} xout ,而 generative sampler 则从 generative model 中的 z g e n ∈ r ψ z_{\mathrm{gen}}\in r_\psi zgen∈rψ 开始,然后再经过 decoder。
通过计算这两种 sampler 分布相对于 p d a t a p_{\mathrm{data}} pdata 的 Fréchet inception distance,我们得到 reconstruction-FID(rFID)和 generative-FID(gFID)。我们也可以通过平均 distortion(重建的均方根误差)来衡量 reconstruction sampler 的质量,不过这种指标对 generative sampler 并不适用。
事实证明,reconstruction sampler 的质量与 generative sampler 的质量之间存在一种天然的 tension(张力)。较低的 rFID(即高质量 reconstruction sampler)通常意味着 latent 中的信息损失较低,从而 latent distribution q ϕ ( z ) q_\phi(z) qϕ(z) 会更接近 p d a t a p_{\mathrm{data}} pdata ,这也意味着学习 latent generative model 的任务会更加困难,从而提高 gFID。
反之,较高的 rFID 通常意味着较高的信息损失,以及一个更容易学习的 latent distribution q ϕ ( z ) q_\phi(z) qϕ(z) ,从而降低 gFID。这一现象在 Figure 22 中进行了可视化展示。
Figure 22:右图:gFID 与 rFID 之间的 tradeoff,图片来自 [51]。这里 f f f 表示 downsampling factor, d d d 表示 latent channel dimension。右图:distortion(reconstruction quality)与 rate 之间的关系,图片来自 [17, 37]。我们注意到,这条特定曲线是使用 DDPM(其本身也是一种 VAE)生成的。虽然 distortion 与 rate 的具体计算中可能存在一些技术细节上的差异,与本文中给出的不严格定义并不完全一致,但整体的直觉理解仍然是相同的。
The Division of Labor. reconstruction-generative sampler 的 tradeoff 迫使我们去思考信息损失应当如何在 autoencoder 与 latent generative model r ψ r_\psi rψ 之间进行分配。直观上, r ψ r_\psi rψ 通过某个学习得到的向量场 u t ψ ( z t ) , u_t^\psi(z_t), utψ(zt), 将一个标准 Gaussian transport 到 q ϕ ( z ) ≈ p p r i o r q_\phi(z)\approx p_{\mathrm{prior}} qϕ(z)≈pprior ,随后 decoder p θ ( x ∣ z ) p_\theta(x|z) pθ(x∣z) 再将 q ϕ ( z ) q_\phi(z) qϕ(z) transport 到 p d a t a p_{\mathrm{data}} pdata 。
现在,我们(不严格地)将 rate 定义为 latent distribution q ϕ ( z ) q_\phi(z) qϕ(z) 与 p p r i o r ( z ) p_{\mathrm{prior}}(z) pprior(z) 匹配的程度,进一步也表示:生成任务被 “分包” 给 latent generative model 的程度。
Note:我们将把对 rate 的更技术性讨论推迟到下一小节。
这种劳动分工可以通过绘制 rate 与 distortion 之间的帕累托前沿来进行可视化,如 Figure 22 所示。特别地,当 rate 较高时,distortion 较低,反之亦然。这为前面关于 reconstruction 与 generation sampler quality 的讨论提供了第二种视角。我们最终将讨论总结为下面这个 insight。
Intuition 44 (The Division of Labor)
Figure 22 的关键 insight 在于帕累托前沿的 “膝点(knee)” 处存在一个最优的 division of labor。在这一点,我们可以在不引入高 distortion 的情况下,获得低 rate(高压缩率!)。换句话说,这一点对应着一种 compression level:它既降低了训练底层 generative model 的难度,同时又保留了合理的 reconstruction quality。
E. A Guide to the Diffusion Model Literature
在文献中,围绕 diffusion models 与 flow matching 存在着完整的一大家族模型。当你阅读这些论文时,你很可能会发现,它们会采用与本课程不同(但等价)的方式来呈现这些内容。
这有时会让阅读这些论文变得有些令人困惑。因此,我们希望对各种 framework 及它们之间的区别做一个简要概述,并同时将它们放到历史背景中进行讨论。
这一部分并不是理解本文其余内容所必须的,而是希望在你阅读相关文献时,能够作为一种辅助参考。
Discrete time vs. continuous time. 最早的去噪扩散模型论文 [41, 42, 17] 并没有使用 SDE,而是在离散时间中构建马尔可夫链,即时间步 t = 0 , 1 , 2 , 3 , … t=0,1,2,3,\dots t=0,1,2,3,… 。直到今天,你仍然会在文献中看到大量工作采用这种离散时间公式。
虽然这种构造由于其简单性而很有吸引力,但 time-discrete 方法的缺点在于:它迫使你在训练之前就选择一个时间离散化方案。此外,损失函数还需要通过一个 evidence lower bound(ELBO)来近似,而正如名字所暗示的那样,它只是我们真正想要最小化 loss 的一个下限。
后来,Song 等人 [45] 指出这些构造本质上只是连续时间 SDE 的一种近似。进一步地,在连续时间情况下,ELBO loss 会变得 tight(即它不再是下限)。例如,注意 Theorem 12 与 Theorem 22 都是等式而不是下限 — 而在离散时间情况下则并非如此。
这使得 SDE 构造变得流行,因为它在数学上被认为更加 “clean”,并且可以在训练之后通过 ODE/SDE samplers 来控制仿真误差。不过需要注意的是:这两类模型使用的是相同的 loss,并且它们在本质上并没有根本区别。
“Forward process” vs probability paths. 最早的去噪扩散模型工作 [41, 42, 17, 45] 并没有使用 probability path(概率路径)这一术语,而是通过所谓的 forward process(前向过程)来构造数据点 z ∈ R d z\in\mathbb R^d z∈Rd 的 noising procedure。这个过程是如下形式的 SDE:
X ˉ 0 = z , d X ˉ t = u t f o r w ( X ˉ t ) d t + σ t f o r w d W ˉ t (146) \bar X_0=z, \quad d\bar X_t = u_t^{\mathrm{forw}}(\bar X_t)dt + \sigma_t^{\mathrm{forw}}d\bar W_t \tag{146} Xˉ0=z,dXˉt=utforw(Xˉt)dt+σtforwdWˉt(146)
其思想是:在采样一个数据点 z ∼ p d a t a z\sim p_{\mathrm{data}} z∼pdata 之后,模拟这个 forward process,从而对数据进行 corruption 或 “加噪”。forward process 被设计成当 t → ∞ t\to\infty t→∞ 时,其分布收敛到高斯 N ( 0 , I d ) \mathcal N(0,I_d) N(0,Id) 。换句话说,当 T ≫ 0 T\gg0 T≫0 时,近似有 X ˉ T ∼ N ( 0 , I d ) \bar X_T\sim\mathcal N(0,I_d) XˉT∼N(0,Id) 。
注意,这本质上对应于一个 probability path:在 X ˉ 0 = z \bar X_0=z Xˉ0=z 条件下, X ˉ t \bar X_t Xˉt 的条件分布是一个条件概率路径 p ˉ t ( ⋅ ∣ z ) \bar p_t(\cdot|z) pˉt(⋅∣z) 。而对 z ∼ p d a t a z\sim p_{\mathrm{data}} z∼pdata 做边缘化后, X ˉ t \bar X_t Xˉt 的分布则对应于边缘概率路径 p ˉ t \bar p_t pˉt 。
Note:但请注意,他们在这里使用了 inverted time convention: p ˉ t ( ⋅ ∣ z ) = p d a t a \bar p_t(\cdot|z) = p_{\mathrm{data}} pˉt(⋅∣z)=pdata
然而,需要注意的是:在这种构造下,为了训练模型而避免真正模拟 SDE,我们必须能够以封闭式的形式知道 X t ∣ X 0 = z X_t|X_0=z Xt∣X0=z 的分布。这实际上限制了向量场 u t f o r w u_t^{\mathrm{forw}} utforw 只能取那些使得 X ˉ t ∣ X ˉ 0 = z \bar X_t|\bar X_0=z Xˉt∣Xˉ0=z 具有封闭式分布的形式。
因此,在 diffusion model 文献中,forward process 的向量场总是仿射形式 u t f o r w ( x ) = a t x u_t^{\mathrm{forw}}(x)=a_tx utforw(x)=atx ,其中 a t a_t at 是某个连续函数。
对于这种选择,我们可以使用已知的条件分布公式 [40, 44, 23]:
X ˉ t ∣ X ˉ 0 = z ∼ N ( α t z , β t 2 I ) , α t = exp ( ∫ 0 t a r d r ) , β t 2 = α t 2 ∫ 0 t ( σ r f o r w ) 2 α r 2 d r \bar X_t|\bar X_0=z \sim \mathcal N(\alpha_t z,\beta_t^2 I), \quad \alpha_t = \exp \left( \int_0^t a_rdr \right), \quad \beta_t^2 = \alpha_t^2 \int_0^t \frac{ (\sigma_r^{\mathrm{forw}})^2 }{ \alpha_r^2 } dr Xˉt∣Xˉ0=z∼N(αtz,βt2I),αt=exp(∫0tardr),βt2=αt2∫0tαr2(σrforw)2dr
注意,这些本质上只是高斯概率路径。因此,我们可以说 前向过程是构建(高斯)概率路径的一种特定方法。probability path 这一术语由 flow matching [25] 引入,目的是既简化构造方式,又使其更加一般化。
首先,diffusion model 中的 “forward process” 实际上从来不会真正被模拟(训练期间仅从 p ˉ t ( ⋅ ∣ z ) \bar p_t(\cdot|z) pˉt(⋅∣z) 中采样)。其次,forward process 仅在 t → ∞ t\to\infty t→∞ 时才会收敛(即我们永远不会在有限时间内到达 p i n i t p_{\mathrm{init}} pinit)。因此,本文选择使用 probability paths 这一表述。
Time-Reversals vs Solving the Fokker-Planck equation. 最初的 diffusion model 描述,并不是通过 Fokker-Planck equation(或 Continuity equation)来构造训练目标 u t t a r g e t u_t^{\mathrm{target}} uttarget 或 ∇ log p t \nabla\log p_t ∇logpt 的,而是通过对 forward process 做 time-reversal 来实现的 [2]。
一个 time-reversal ( X t ) 0 ≤ t ≤ T (X_t)_{0\le t\le T} (Xt)0≤t≤T 是一个 SDE,它在时间反转后的轨迹上具有相同分布,即:
P [ X t 1 ∈ A 1 , … , X t n ∈ A n ] = P [ X T − t 1 ∈ A 1 , … , X T − t n ∈ A n ] for all 0 ≤ t 1 , … , t n ≤ T , and A 1 , … , A n ⊂ S \begin{align*} \mathbb P [X_{t_1}\in A_1,\dots,X_{t_n}\in A_n] = \mathbb P [X_{T-t_1}\in A_1,\dots,X_{T-t_n}\in A_n] \tag{147} \\[8pt] \text{for all } 0\le t_1,\dots,t_n\le T, \text{ and } A_1,\dots,A_n\subset\mathcal S \tag{148} \end{align*} P[Xt1∈A1,…,Xtn∈An]=P[XT−t1∈A1,…,XT−tn∈An]for all 0≤t1,…,tn≤T, and A1,…,An⊂S(147)(148)
正如 Anderson [2] 所展示的那样,我们可以通过如下 SDE 得到满足上述条件的 time-reversal:
d X t = [ − u t ( X t ) + σ t 2 ∇ log p t ( X t ) ] d t + σ t d W t , u t ( x ) = u T − t f o r w ( x ) , σ t = σ ˉ T − t dX_t = \left[ -u_t(X_t) + \sigma_t^2\nabla\log p_t(X_t) \right]dt + \sigma_tdW_t, \qquad u_t(x)=u_{T-t}^{\mathrm{forw}}(x), \, \sigma_t=\bar\sigma_{T-t} dXt=[−ut(Xt)+σt2∇logpt(Xt)]dt+σtdWt,ut(x)=uT−tforw(x),σt=σˉT−t
由于 u t ( X t ) = a t X t u_t(X_t)=a_tX_t ut(Xt)=atXt ,上述形式对应于我们在 Proposition 1 中推导出的某个特定训练目标实例(这一点并不是立即显然的,因为这里使用了不同的时间约定。参见例如 [26] 中的推导)。
然而,对于 generative modeling 而言,我们通常只使用 Markov process 的最终点 X 1 X_1 X1(例如生成图像),并丢弃更早时间点。因此,一个 Markov process 是否是真正的 “time-reversal”,或者是否沿着某个 probability path 演化,对于很多应用而言并不重要。因此,使用 time-reversal 并不是必要的,而且经常会导致次优结果。例如:probability flow ODE 往往效果更好 [23, 28]。
所有那些不同于 time-reversal 的 diffusion model sampling 方法,本质上仍然依赖于 Fokker-Planck equation。我们希望这能够说明:为什么如今很多人会直接通过 Fokker-Planck equation 来构造训练目标 — 正如 [25, 27, 1] 所开创的,以及本课程中所采用的方法一样。
Flow Matching [25] and Stochastic Interpolants [1]. 我们所介绍的 framework,与 flow matching 和 stochastic interpolants(SIs) 这两个 framework 最为接近。正如我们已经学习到的,flow matching 仅限于 flows。事实上,flow matching 的一个关键创新在于:它表明我们并不需要通过 forward process 与 SDE 来构造模型,仅仅使用 flow models 本身,就能够以可扩展的方式进行训练。
由于这一限制,你需要记住从 flow matching model 中采样将会是确定性的(只有初始值 X 0 ∼ p i n i t X_0\sim p_{\mathrm{init}} X0∼pinit 是随机的)。stochastic interpolants 同时包含 pure flow 以及我们这里使用的通过 “Langevin dynamics” 实现的 SDE 扩展(见 Theorem 17)。
stochastic interpolants 之所以得名,是因为它们使用了一个插值函数 I ( t , x , z ) I(t,x,z) I(t,x,z) 用于在两个分布之间进行插值。按照我们这里使用的术语,这对应于一种不同但(大体上)等价的条件与边缘概率路径构造方式。
flow matching 与 stochastic interpolants 相比 diffusion models 的优势,在于它们同时具备 simplicity(简单性)和 generality(通用性)。它们的训练框架非常简单,同时允许你从任意分布 p i n i t p_{\mathrm{init}} pinit 映射到任意分布 p d a t a p_{\mathrm{data}} pdata ,而 denoising diffusion models 则只适用于高斯初始分布以及高斯概率路径。
这为 generative modeling 打开了新的可能性,我们会在本课程后续内容中简要涉及这些方向。
Summary 45 (Alternative Diffusion Formulations)
文献中流行的 diffusion models 的替代表述方式,通常会包含以下元素中的某种组合:
1. Discrete-time:经常会使用通过 discrete-time Markov chains 对 SDE 进行近似的方法。
2. Inverted time convention: 一种常见做法是使用反向时间约定 t = 0 t=0 t=0 对应于 p d a t a p_{\mathrm{data}} pdata(而不是像本文这样 t = 0 t=0 t=0 对应于 p i n i t p_{\mathrm{init}} pinit)。
3. Forward process:forward processes(或 noising processes)是构造(Gaussian)probability paths 的一种方式。
4. Training target via time-reversal:training target 也可以通过 SDE 的 time-reversal 来构造。这是本文所介绍构造方式的一个特殊情况(采用 inverted time convention)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)