MIT 6.S184 Lecture 1 Notes
Generative AI with Stochastic Differential Equations
0. 本讲主线
Lecture 1 主要回答两个问题:
- 什么叫“生成”一个对象?
- 为什么 flow models 和 diffusion models 可以用来生成对象?
核心逻辑:
生成对象
→ 从数据分布中采样
→ 从简单噪声分布出发
→ 用 ODE / SDE 把噪声逐步变成数据
→ 得到 flow model / diffusion model
本讲的重点不是训练算法,而是先搭建生成模型的数学框架。训练算法会在后面的 Flow Matching、Score Matching 中讲。
1. Generative Modeling as Sampling
Section 1: From Generation to Sampling
1.1 对象可以表示成向量
课程首先把图像、视频、蛋白质结构等对象统一表示成高维向量:
例如:
| 对象 | 向量形式 |
|---|---|
| 图像 | |
| 视频 | |
| 分子结构 |
这里的重点不是具体维度,而是:
生成图像、视频、蛋白质,本质上都可以看成在高维空间中生成一个点。
这一步很重要,因为后面所有 ODE / SDE 都是在 这个高维空间中移动点。
1.2 Data Distribution:数据分布
假设我们想生成“一张狗的图片”。
不是所有图片都一样好:
- 纯噪声:几乎不可能是狗图
- 街景:可能是图片,但不是狗
- 猫:是动物,但不符合 prompt
- 狗:符合目标
课程把这种“好不好”的判断形式化为概率分布:
其中:
- 是一个候选对象,比如一张图片
- 表示这个对象在真实数据中出现的可能性
直观理解:
越像真实数据的样本,在 下概率越高。
所以“生成一张好图”可以被改写成:
也就是:
生成 = 从数据分布中采样。
这是本讲最核心的抽象。notes 里也明确把 generation 建模为从数据分布 中采样。
1.3 Dataset:数据集只是数据分布的有限样本
真实的 是不知道的。
我们只有一个数据集:
比如:
- 图像:互联网图片
- 视频:YouTube 视频
- 蛋白质结构:Protein Data Bank
重点:
数据集不是数据分布本身,而是从数据分布中采出来的一批样本。
生成模型训练的目标,就是从有限样本中学到一个近似的数据分布,然后能产生新的样本。
1.4 Conditional Generation:条件生成
无条件生成是:
条件生成是:
其中 是条件,例如:
- 类别标签:dog / cat / landscape
- 文本 prompt:“a dog running in snow”
- 图像条件、视频条件等
直观上:
条件生成不是从所有图片中采样,而是从“符合条件 的图片分布”中采样。
Lecture 1 先主要讲 unconditional generation。后面会讲怎么把 unconditional model 扩展成 conditional model。
2. Generative Model 的目标
生成模型通常从一个简单分布开始:
也就是标准高斯噪声。
目标是构造一个过程,把:
变成:
可以理解成:
从噪声出发,经过模型的逐步变换,最后得到一个真实数据样本。
所以 flow / diffusion models 的共同目标是:
Section 2: Flow and Diffusion Models
3. Flow Models
3.1 Flow model 的核心:ODE
Flow model 基于 ODE,也就是 ordinary differential equation:
初始条件:
这里:
- :时间 时的位置
- :初始位置
- :vector field,即速度场
- :轨迹在时间 的速度
直观理解:
ODE 规定了一个点在每个时间、每个位置应该怎么移动。
3.2 难点:trajectory、vector field、ODE、flow 的关系
这几个词很容易混在一起,建议这样理解:
| 概念 | 数学形式 | 直觉 |
|---|---|---|
| trajectory | 一个点实际走出来的路径 | |
| vector field | 每个位置、每个时间的速度箭头 | |
| ODE | 规定点必须沿着速度场走 | |
| flow | 从初始点 出发,时间 后到哪里 |
最重要的是 flow:
它表示:
从 出发,按照 ODE 走到时间 后的位置。
它满足:
以及:
一句话总结:
vector field 定义 ODE,ODE 的解形成 trajectory,所有初始点对应的 trajectory 组成 flow。
notes 也强调:vector fields、ODEs、flows 可以看作同一对象的三种描述方式。
3.3 Flow model 如何生成样本?
Flow model 用神经网络参数化 vector field:
然后做三步:
- 从简单分布采样:
- 模拟 ODE:
- 返回终点:
训练目标是让:
也就是说:
神经网络不是直接输出图片,而是输出“当前位置应该往哪里走”的速度。
这是一个非常重要的理解点。
3.4 Euler Method:如何模拟 ODE
Numerical ODE simulation - Euler method
真实的 ODE 通常没有解析解,所以要用数值方法模拟。
最简单的是 Euler method:
其中:
直觉:
下一步位置 = 当前的位置 + 步长 × 当前速度
也就是沿着 vector field 给出的方向走一小步。
需要记住的 trade-off:
| 步长 | 优点 | 缺点 |
|---|---|---|
| 大步长 | 快 | 误差大 |
| 小步长 | 精确 | 慢 |
对于 Lecture 1,只需要理解 Euler method 的直觉,不需要深入数值分析。
4. Diffusion Models
4.1 从 ODE 到 SDE
Flow model 用 ODE:
Diffusion model 用 SDE,也就是 stochastic differential equation:
这里多了一个随机项:
其中:
- :确定性移动,叫 drift
- :随机噪声项
- :Brownian motion / Wiener process
- :diffusion coefficient,控制噪声强度
直观对比:
| 模型 | 运动方式 |
|---|---|
| ODE / Flow | 沿着速度场确定性移动 |
| SDE / Diffusion | 沿着速度场移动,同时不断加入随机扰动 |
不会同时有多个不同随机过程满足同一个 SDE
“随机”不等于“规则不唯一”。
SDE 的随机性来自 Brownian motion 。一旦你固定: 以及整条噪声路径: 那么 SDE 的规则: 就应该唯一决定 怎么走。
所以唯一性说的是:
给定同一个初始条件、同一个随机噪声来源、同一个 drift 和 diffusion coefficient,不会出现两个不同的随机过程都满足这个 SDE。
4.2 Brownian Motion:连续随机游走(布朗运动)
Brownian motion 可以理解成连续时间版本的随机游走。
它的离散近似是:
其中:
直觉:
每一小步都加一个随机高斯扰动。
这里的 很重要,因为 Brownian motion 的方差随时间线性增长,所以增量的标准差是 级别。
注:这里的h是步长
对,这里的 (h) 就是时间步长,也就是每次模拟往前走多久。如果总时间区间是:
把它切成 (n) 步,那么:
所以时间点是:
在 Brownian motion 的离散模拟里:
意思是:
从时间 (t) 走到 (t+h),Brownian motion 增加一个高斯随机扰动。
为什么是 (),不是 (h)?因为 Brownian motion 的增量满足:
也就是说方差是 (h),标准差就是 ()。所以可以写成:
slides 和 notes 都是在这个意义下定义 (h):它是数值模拟中的 step size。
4.3 Euler-Maruyama Method:如何模拟 SDE
Numerical SDE simulation (Euler-Maruyama method)
SDE 对应的数值模拟方法是 Euler-Maruyama method:
其中:
和 Euler method 对比:
| 方法 | 更新公式 |
|---|---|
| Euler for ODE | |
| Euler-Maruyama for SDE |
重点:
Diffusion model 的每一步既有“朝目标方向走”的部分,也有“随机抖动”的部分。
notes 中也明确说,Euler-Maruyama 可以看作 SDE 版本的 Euler method。
4.4 Diffusion model 如何生成样本?
Diffusion model 同样从简单分布开始:
然后模拟 SDE:
最终希望:
其中:
- :神经网络学到的 vector field
- :固定的 diffusion coefficient
- :随机噪声来源
所以 diffusion model 的生成过程可以理解为:
从噪声出发,在神经网络引导下,带着随机扰动逐步走向数据分布。
5. Flow Models vs Diffusion Models
| 对比 | Flow Model | Diffusion Model |
|---|---|---|
| 数学形式 | ODE | SDE |
| 是否有随机项 | 没有 | 有 |
| 路径是否随机 | 给定初始点后路径确定 | 即使初始点相同,路径也可能不同 |
| 随机性来源 | 初始噪声 | 初始噪声 + 过程噪声 |
| 数值模拟 | Euler method | Euler-Maruyama method |
| 更新公式 |
一个关键关系:
时,SDE 退化成 ODE。
所以:
Flow model 可以看成 diffusion model 在没有随机噪声项时的特例。
notes 也明确总结:当 时,diffusion model 就是 flow model。
6. 本讲最重要的概念层级
第一层:生成问题
生成就是从真实数据分布中采样。
第二层:从简单分布开始
通常:
第三层:用动态系统变换分布
Flow model:
Diffusion model:
第四层:最终目标
7. 需要重点掌握的地方
重点 1:生成 = 采样
不要把生成理解成“模型凭空画图”。
更准确地说:
模型学会从一个目标概率分布中采样。
这个目标概率分布就是 。
重点 2:神经网络学的是 vector field
神经网络不是直接学:
而是学:
也就是:
在时间 、位置 ,样本应该往哪里移动。
真正的图像生成来自多步模拟:
重点 3:flow 是“整体空间的变形”
一个 trajectory 只描述一个点怎么走。
flow 描述的是:
所有初始点如何一起被移动、扭曲、变换。
所以 flow model 的直觉不是“移动一个点”,而是:
把整个噪声分布逐渐变形为数据分布。
重点 4:diffusion 比 flow 多了过程噪声
Flow model 的随机性只来自初始点:
Diffusion model 的随机性还来自每一步:
所以 diffusion 的路径本身是随机的。
8. 本讲不必过度纠结的内容
以下内容 Lecture 1 只需要有直觉,不必深究证明:
- Picard–Lindelöf theorem 的严格证明
- Brownian motion 的测度论定义
- SDE 的严格 stochastic integral 定义
- Heun’s method 的数值分析细节
- ODE / SDE 的存在唯一性证明
需要记住的是:
在机器学习实践中,我们通常可以把神经网络 vector field 看成定义了合理的 ODE / SDE 动力系统。
9. 一句话总结 Lecture 1
Lecture 1 把“生成图像、视频、蛋白质”形式化为“从数据分布采样”,然后说明可以从简单高斯噪声出发,用神经网络参数化的 ODE 或 SDE 逐步把噪声分布变成数据分布;ODE 对应 flow model,SDE 对应 diffusion model。