前言

笔者近期学习了 MIT 的 6.S184 课程,将笔记整理于此。便于复习,也希望能够帮助到感兴趣的读者。

Lecture 5

Latenr Space

当我们想要生成图像/音频/视频等模态,其通常是超高维度的。举个例子,\(\underbrace{1000}_{\text{width}}\times \underbrace{600}_{\text{height}}\times \underbrace{3}_{\text{RGB channels}}\) 的图片, 拉成一维向量 (因为 flow matching/diffusion 学习的对象 \(u_t^\theta: \mathbb{R}^d \to \mathbb{R}^d\) 针对的是一维向量) 之后,\(d=1,800,000\)。而这会带来问题。

Why is high-dimensional space is a problem for diffusion models and not for supervised learning?

  • 学习 vector filed $u_t^\theta: \mathbb{R}^d \to \mathbb{R}^d$, 其输出维度和输入维度一致;
  • 在模拟 ODE 时需要前向多步, 带来误差的累计以及效率地大幅降低.

Latent Space Requirements

Standard Autoencoders

首先我们定义:

定义 形式化定义
Latent embedding/feature $z\in \mathbb{R}^k$
Data point $x\in \mathbb{R}^d$
Encoder $\mu_{\phi}: \mathbb{R}^d \to \mathbb{R}^k$
Dncoder $\mu_{\theta}: \mathbb{R}^k \to \mathbb{R}^d$

Reconstruction Loss:

\[\begin{align} \mathcal{L}_{}(\phi, \theta) = \mathbb{E}_{x\sim p_{\text{data}}}\left[ \left\|\mu_{\theta}\left(\underbrace{\mu_{\phi}(x)}_{z\sim p_{\text{Latent}}}\right) - x\right\|^2 \right] \end{align}\]

利用上述 Reconstruction Loss 确实能够有效压缩 $x$,只要确保 $k<d$。但是这里存在问题,将 $x$ 编码成 $z$ 之后,$z\sim p_{\text{Latent}}$ 这里的 $p_{\text{Latent}}$ 是什么样子?我们无法知道。但是我们希望他的形状是优良的。

Variation Autoencoders (VAE)

定义 形式化定义
(Stochastic) Encoder $q_{\phi}(z\mid x)=\mathcal{N}(z; \mu_{\phi}(x),\sigma_{\phi}^2 I_k)$
(Stochastic) Dncoder $p_\theta(x\mid z)=\mathcal{N}(x; \mu_{\theta}(z), \sigma^2 I_d)$

现在,我们得到的 latent embedding 就是直接从 Encoder 中进行采样 $z\sim q_{\phi}(\cdot\mid x)$. 同理就有 $x\sim p_{\theta}(\cdot\mid z)$.

VAE Reconstruction Loss:

\[\begin{align} \mathcal{L}_{Recon}(\phi, \theta) &= \mathbb{E}_{x\sim p_{\text{data}},z\sim p_{\phi}(\cdot\mid x)}\left[-\log p_\theta(x\mid z)\right] \\ &= \mathbb{E}_{x\sim p_{\text{data}},z\sim p_{\phi}(\cdot\mid x)}\left[\frac{1}{2\sigma^2}\left\|x - \mu_\theta(z) \right\|^2 \right]——\text{代入 Gaussian distribution.} \end{align}\]

该损失项的作用是:确保能够 reconstruction 出来, 如 $x - \mu_\theta(z)$ 所示。

VAE Prior Loss:

\[\begin{align} \mathcal{L}_{Prior}(\phi) &= \mathbb{E}_{x\sim p_{\text{data}}}\left[D_{KL}\left(q_\phi(\cdot\mid x) \| \mathcal{N}(0, I_k)\right)\right] \\ &= \mathbb{E}_{x\sim p_{\text{data}}}\left[\frac{1}{2}\left(\mathcal{K}\left(\frac{\sigma_\phi^2}{1^2}\right) + \frac{\|\mu_\phi-0\|^2}{1^2}\right) \right]——\text{利用两个 Gaussian Distribution 的 KL 散度计算公式} \end{align}\]

该损失项的作用是:确保 latent embedding/feature 具备优良形状——即和 standard gaussian distribution 一致。

KL Divergence of 2 Gaussian Distributio

VAE Loss:

\[\begin{align} \mathcal{L}_{VAE}(\phi) &= \mathcal{L}_{Recon}(\phi) + \beta\cdot \mathcal{L}_{Prior}(\phi) \\ &= \mathbb{E}_{x\sim p_{\text{data}},z\sim p_{\phi}(\cdot\mid x)} \left[ \frac{1}{2\sigma^2}\left\|x - \mu_\theta(z) \right\|^2 + \frac{\beta}{2}\left(\mathcal{K}\left(\sigma_\phi^2\right) + \|\mu_\phi\|^2\right) \right]. \end{align}\]

上述 Loss 在理论上已经足够好,但存在问题:$z\sim p_{\phi}(\cdot\mid x)$。这里 “采样” 是怎么做到的呢?如何让梯度能够流通过去呢?答案是:Reparameterization Trick: $\epsilon\sim \mathcal{N}(0, I_k), z=\mu_\phi(\cdot\mid x) + \sigma_\phi \cdot \epsilon \iff z\sim p_{\phi}(\cdot\mid x)$。最终我们可以得到:

\[\begin{align} \mathcal{L}_{VAE}(\phi) &= \mathbb{E}_{x\sim p_{\text{data}},\textcolor{red}{\epsilon\sim \mathcal{N}(0, I_k)}} \left[ \frac{1}{2\sigma^2}\left\|x - \mu_\theta\left(\underbrace{\textcolor{red}{\mu_\phi(\cdot\mid x) + \sigma_\phi^2\cdot \epsilon}}_{z}\right) \right\|^2 + \frac{\beta}{2}\left(\mathcal{K}\left(\sigma_\phi^2\right) + \|\mu_\phi\|^2\right) \right]. \end{align}\]

综上,我们有 VAE 算法,利用它就可以训练出足够好的 Encoder、Decoder。

VAE Training Algorithm

Latent Diffusion Models

利用前文算法训练出来的 Encoder、Decoder,即可实现 Latent Diffusion Models.

Latent Diffusion Model Procedure

Neural Network Architecture

我们学习的目标如下,具有四个需要考虑的项。

\[\begin{align} u_{\textcolor{red}{t}}^{\textcolor{red}{\theta}} ( \underset{\underset{\text{Latent feature}}{\uparrow}}{\textcolor{red}{x}} \mid \underset{\underset{\text{Prompt Guidence}}{\uparrow}}{\textcolor{red}{y}} ) \end{align}\]

Encoding Time

Encoding Prompt

Encoding Image

Diffusion Transformer

DiT Overview

DiT Overview 2

Lecture 6

走到这里,我们现在关注的重点变到:Dsecrete Diffusion Models。可惜的是在离散空间中,例如: Token Space; 没有 ODE/SDE, 也没有 flow/diffusion 等概念,因此我们无法通过前面 blog 内容一样进行 flow/diffusion models 的建模。幸运的是,我们可以借助 Continuous-time Markov chains (CTMCs) 这一数学工具来建模。

CTMC Models

首先定义:

  • Vocabulary (词汇表): $\mathcal{V}={v_1, \dots, v_V}$. 其含义可以理解为:LLM 中的词汇表、英语中的字母表甚至在 Alpha-Fold 蛋白质生成中的 “原材料”——氨基酸的集合;
  • State Space: $S=\mathcal{V}^d$;
  • Rate Maritx: $Q: S\times S\times [0,1]\to \mathbb{R}_{\geq0}, (x,y,t)\mapsto Q_t(y\mid x)$; 其含义可以理解为:给定状态 $x,y,t$, $Q_t(y\mid x)$ 表示从 $x\to y$ 状态转变的 “速率”. $Q$ 需要满足:
    • $Q_t(x\mid x)=-\sum_{y\neq x} Q_t(y\mid x)$. 理解为:不转变的 “速率” 和所有可能的转变的 “速率” 平衡。

接下来就可以定义 CTMC 了。

定义 $X_t \in S$ 是个随机变量. 定义转移概率 (Transition Prob): $p_{t+h\mid t}(X_{t+h}=y\mid X_t=x)$。有:

\[\begin{align} \frac{d}{dh\mid h=0} p_{t+h\mid t}(X_{t+h}=y\mid X_t=x) = Q_t(y\mid x) \end{align}\]

其物理含义是:转移概率对时间间距 $h$ 的导数等于其 “速率”,由 $Q$ 给出。

Factorization Condition&CTMC Models

紧接着,我们定义 CTMC Model: $Q_t^\theta(z\mid x)$. 这里和前文 flow/diffusion model 思想类似,就是用一个神经网络来学习 Rate Matrix $Q$.

这里我们引入约束条件 Factorization condition: $Q_t^\theta(z\mid x)=0$ where $z_i\neq x_i$ for more than one $i$. 这个条件的含义就是约束转移前后的状态 (理解为两条向量的比较) 仅有一个索引处的取值是不同的。如下图所示,邻居 (neighbor) 的意思就是仅有一个索引处的取值不同, 存在差距且差距最小。

Factorization Condition Example

引入 Factorization condition 是为了降低 State Space 的规模,将其从 $V^d$ 减小为 $d\times V$.

Why Factorization Condition Example

因此我们可以将转移后的 state $y$ 分解为: 该 state 哪个位置发生变化,以及发生了什么变化。也就构成了下式所示的 $v_i, j$:

\[\begin{align} (x,t)\mapsto \begin{pmatrix} Q_t^\theta(v_1, 1\mid x) & \dots & Q_t^\theta(v_V, 1\mid x) \\ \vdots & \vdots & \vdots \\ Q_t^\theta(v_1, d\mid x) & \dots & Q_t^\theta(v_V, d\mid x) \end{pmatrix}_{d\times V} = \left(Q_t^\theta(v_i, j\mid x) \right)_{i\in V, j\in[1,d]} \end{align}\]

这个约束固然减少了转移的可能性;但是我们可以通过多步转移来达到没有 Factorization condition 时一步转移的效果。

Sampling with CTMC Models

尽管 Guassian Distribution 有很多良好性质,也是我们前文中经常用来建模的对象。但是在离散情况下,Gaussian Distribution 不存在。因此我们选用 $p_{\text{init}}=\mathbf{Unif}_S$. 此外在离散情况下,Delta function: $\delta_y(x)=\begin{cases}1,\qquad y=x \ 0,\qquad y\neq x \end{cases}$.

\[\begin{align} X_0\sim p_{\text{init}}, \qquad X_{t+h}\sim &p_{t+h\mid t}(y\mid X_t) \\ =& p_{t\mid t}(y\mid X_t) + h\cdot \frac{d \left(p_{t+h\mid t}(y\mid X_t) \right)}{dh\mid h=0} ——\text{在 h=0 处利用 Taylor Expansion } \\ =& \delta_y(X_t) + h\cdot Q_t^\theta(y\mid X_t) ——\text{利用 $\delta$ 和 Rate Matrix 的定义} \end{align}\]

Sampling from CTMC Models

Discrete Flow Matching

Continuous to Discrete Overview

Probability Path

Conditional Prob Path: $p_t(x\mid z)$; 满足 $p_0(x\mid z)=p_{\text{init}}, p_1(x\mid z)=\delta_z(x)$;

Marginal Prob Path: $p_t(x) = \sum_{z\in S} p_t(x\mid z) p_{\text{data}}(z)$; 满足 $p_0(x)=p_{\text{init}}, p_1(x)=p_{\text{data}}$.

Rate Matrix

Conditional Rate Matrix: $Q_t^\textcolor{red}{z}(y\mid x)$, where $x,y,z\in S$. 这里是针对单个点 $z$ 的。有下述蕴含式成立:

\[\begin{align} X_0\sim p_{\text{init}},X_t \text{ CTMC of } Q_t^z \implies X_t\sim p_t(\cdot\mid z). \end{align}\]

Marginal Rate Matrix:

\[\begin{align} Q_t(y\mid x) = \sum_{z\in S} Q_t^z(y\mid x)\cdot \frac{p_t(x\mid z) p_{\text{data}}(z)}{p_t(x)} \end{align}\]

Discrete Marginalization Trick:

\[\begin{align} X_0\sim p_{\text{init}},X_t \text{ CTMC of } Q_t \implies X_t\sim p_{t}\implies X_1\sim p_{\text{data}}. \end{align}\]

Proof. 已知下述定理:

\[\begin{align} X_t\sim p_t \iff \underbrace{\frac{d}{dt} p_t(x)=\sum_{y\in S} Q_t(x\mid y)p_t(y)}_{\text{Kolmogorov Forward Equation (KFE)}}. \end{align}\]

KFE 物理含义: 乍一看,KFE 等式右边仅有 $y\to x$ 的项,以 $x$ 为中心观察,仅有 “流入”,没有 “流出”。这和前文的 Continuous Equation 的物理含义并不一致。但实际上,我们只要稍加转换,就能发现 KFE 和 Continuous Equation 一样是 “流入-流出”。

\[\begin{align} \sum_{y\in S} Q_t(x\mid y)p_t(y) &= \sum_{y\neq x} Q_t(x\mid y)p_t(y) + \underbrace{Q_t(x\mid x)p_t(x)}_{x=y} \\ &= \underbrace{\sum_{y\neq x} Q_t(x\mid y)p_t(y)}_{\text{流入 $x$}} + \left(- \underbrace{\sum_{y\neq x} Q_t(y\mid x)p_t(x)}_{\text{流出 $x$}} \right) \end{align}\]

因此若想证明 Discrete Marginalization Trick 成立,则需要证明 KFE holds.

\[\begin{align} \frac{d}{dt} p_t(x) &= \frac{d}{dt} \sum_{z\in S} p_t(x\mid z) p_{\text{data}}(z) \\ &= \sum_{z\in S} \frac{d}{dt} p_t(x\mid z) p_{\text{data}}(z) \\ &= \sum_{z\in S} \left(\sum_{y\in S} \underbrace{Q_t(x\mid y, z)}_{\text{i.e, }Q_t^t(x\mid y)} p_t(y\mid z) \right)p_{\text{data}}(z)——\text{默认 conditional path $p_t(x\mid z)$ 遵守 KFE.} \\ &= \sum_{y\in S} \sum_{z\in S} Q_t^z(x\mid y)p_t(y\mid z) p_{\text{data}}(z) \\ &= \sum_{y\in S} \left[\sum_{z\in S} Q_t^z(x\mid y)\frac{p_t(y\mid z) p_{\text{data}}(z)}{p_t(y)} \right] p_t(y) \\ &=\sum_{y\in S} Q_t(x\mid y)p_t(y)——\text{利用 marginal rate matrix $Q_t(x\mid y)$ 定义.} \end{align}\]

因此有,Marginal Prob Path 遵守 KFE。根据定理可得 $X_t\sim p_t$.

现在我们可以总结如下:

Conditional Prob Path and Rate Matrix

Marginal Prob Path and Rate Matrix

Training

根据上述 Marginal Rate Matrix 的式子, 我们要想训练一个 Marginal Rate Matrix $\iff$ 训练一个分类器。

\[\begin{align} Q_t(v_i, j\mid x) = \frac{\dot{\kappa_t}}{1 - \kappa_t}(p_{1\mid t}(z_j = v_i\mid x) - \delta_{x_j}(v_i)). \end{align}\]

因此接下来我们的目标就是训练一个后验分类器,虽然称下述损失为 Discrete Flow Matching Loss $\mathcal{L}_{DFM}$, 但是其实本质就是训练分类器常见的 cross-entropy loss:

Learning Marginal Rate Matrix

训练完之后再进行针对 CTMC Models 的采样,就是所谓的 Discrete Flow Matching 了!

The End

MIT 6.S184 课程完结撒花~后续随缘更新相关的论文解读。