生成问题
图像、视频和三维结构都可以表示成高维实向量。例如,RGB 图像属于 RH×W×3,含 T 帧的视频属于 RT×H×W×3。把张量展平后,可统一写成 z∈Rd。文本 token 等离散对象没有这种欧几里得结构,需要用离散扩散模型处理,后文会单独讨论。
真实样本被视为来自未知的数据分布 pdata。训练集只给出有限的独立同分布样本
z1,…,zN∼pdata,
而没有给出密度的解析式。生成模型要学会从近似的数据分布中抽取新样本,而非为一个输入给出唯一答案。它既要覆盖训练数据体现出的多种可能,又不能只记住有限样本;若还给定文本、类别等条件 y,目标便变为从 pdata(z∣y) 采样,使同一个条件仍可对应多个合理结果。
直接在百万维空间中运行传统 MCMC 往往效率很低,而直接规定复杂联合密度也要处理归一化和变量间依赖。流模型和扩散模型因此先从容易采样、覆盖整个空间的初始分布 pinit 取一个噪声样本,再用随时间变化的动力系统逐步重排这些概率质量,使终点呈现数据分布。学习任务由“一次写出高维分布”转化为“在每个时刻预测一次局部更新”,神经网络更容易共享这套局部规律。确定性动力系统由常微分方程描述,随机动力系统由随机微分方程描述;两者的共同目标都是把 pinit 推送到 pdata,区别在于一条轨迹中是否持续引入新的随机性。
流模型
一条轨迹是映射 X:[0,1]→Rd,Xt 表示时刻 t 的状态。向量场
u:Rd×[0,1]→Rd,(x,t)↦ut(x)
为每个位置和时刻指定速度,轨迹满足
dtdXt=ut(Xt),X0=x0.
这条方程要求网络只根据当前状态和时间决定下一瞬间的变化,过去的信息已经浓缩在 Xt 中。把微分方程写成积分形式
Xt=X0+∫0tus(Xs)ds
可以看出,最终变化是沿实际轨迹累积局部速度的结果;由于 us 会随位置改变,通常不能把它当作一个固定向量直接乘以时间。局部速度沿时间积分后形成流映射 ψt(x0):
dtdψt(x0)=ut(ψt(x0)),ψ0(x0)=x0,Xt=ψt(X0).
向量场回答“当前状态应如何变化”,流映射则是执行这套规则后的整体变换。若 X0∼pinit,那么 Xt=ψt(X0) 的分布就是 ψt 对初始分布的推送;训练真正要控制的是这一群随机初值的分布,而非某一条孤立轨迹。若向量场对状态足够光滑并满足常见的 Lipschitz 条件,给定起点便有唯一轨迹,两个不同起点也不会在同一时刻合并后再分开,因此流映射通常可逆。ODE 的随机性只来自随机初值,求解过程本身是确定的,这使同一初值的结果可以复现,也允许沿时间反向积分;相应地,生成质量会直接受到向量场误差和数值积分误差的共同影响。

实际模型用神经网络 utθ:Rd×[0,1]→Rd 近似向量场,通常没有解析解。将 [0,1] 划分为 n 步,h=1/n,并假设一个很短的时间步内速度近似保持为步首值,就得到最简单的 Euler 法:
Xt+h=Xt+hutθ(Xt).
采样时先取 X0∼pinit,再重复 n 次 Euler 更新并返回 X1。训练的目标是使终点分布满足 X1∼pdata。模型预测的是局部速度,完整样本仍由数值积分产生。Euler 法每一步只调用一次网络,代价较低,但忽略了步内速度的变化:在光滑条件下单步误差为 O(h2),经过 1/h 步累积后整体误差为 O(h)。减小 h 会提高精度,却也线性增加网络调用次数,因此采样步数本质上是在速度和离散误差之间取舍。

Euler 法只利用步首的速度。Heun 法先用步首速度预测终点,再在预测位置重新计算速度,用两端速度的平均值校正:
Xt+h′=Xt+hut(Xt),
Xt+h=Xt+2h[ut(Xt)+ut+h(Xt+h′)].
第二次计算能够感知这一步中向量场方向和大小的变化,相当于用梯形近似速度积分。在光滑条件下,其整体误差由 Euler 法的 O(h) 降到 O(h2)。它每步多一次网络计算,但误差下降更快,因此在相同精度要求下往往可以使用更少的时间步;当网络本身预测不准或向量场变化剧烈时,提高求解器阶数也无法消除模型误差。
布朗运动
扩散模型需要一种能够在任意短时间尺度持续注入、且不同时间段互不相关的随机扰动,布朗运动正好满足这些要求。标准 d 维布朗运动 W=(Wt)0≤t≤1 从 W0=0 出发,样本路径连续;任意 0≤s<t 的增量满足
Wt−Ws∼N(0,(t−s)Id),
且不相交区间上的增量相互独立。离散一步可以写成
Wt+h=Wt+hϵt,ϵt∼N(0,Id).
系数是 h,因为长度为 h 的增量应有方差 hId。若错误地使用 hϵt,把一个固定时间区间切得越细,累计方差反而会趋近于零;使用 h 后,n 个独立增量的方差可以相加为 nhId,总扰动强度与切分方式无关。布朗路径虽然连续,却几乎处处不可微,所以 dWt/dt 不能当作普通导数处理,随机项必须以增量或 Itô 积分来定义。

扩散模型
在 ODE 的漂移上加入布朗扰动,得到 Itô SDE
dXt=ut(Xt)dt+σtdWt,X0=x0,
其中 ut 决定条件平均位移,σt≥0 决定单位时间新增的方差;在很短的 dt 内,两部分的尺度分别为 O(dt) 和 O(dt)。固定同一个起点后,不同的布朗运动实现会产生不同的样本路径和终点,因此模型能够在演化途中继续分散和探索概率质量,而不必把所有多样性都编码进 X0。这种自由度也带来额外的采样方差,数值求解时还必须正确处理随机增量。令 σt≡0,随机项与这部分代价同时消失,SDE 便退化为 ODE。
SDE 的基本数值方法是 Euler–Maruyama 法:
Xt+h=Xt+hut(Xt)+hσtϵt,ϵt∼i.i.d.N(0,Id).
Euler–Maruyama 法分别用 h 和 h 近似漂移积分与布朗增量,每一步都必须重新采样独立噪声;重复使用同一个 ϵt 会人为引入跨时间相关性,从而改变目标随机过程。扩散模型通常用网络 utθ 参数化漂移:先从 X0∼pinit 取样,再重复上述更新,使 t=1 时的分布逼近 pdata。增大步数可以减小离散误差,但不能消除漂移网络的误差,并会增加网络调用。ODE 与 SDE 都在搬运分布;前者让随机初值沿唯一轨迹演化,后者还在整条路径上持续加入随机性,后续的分数函数正是用来协调“扩散开”与“回到目标高密度区域”这两种作用。
