概率建模

判别模型关心在输入已经给定时如何预测标签,例如学习 p(yx)p(y\mid x);生成模型则试图刻画数据本身出现的规律。无条件生成模型学习 pθ(x)p_\theta(x),采样时从这个分布生成新的 xx;条件生成模型学习 pθ(xy)p_\theta(x\mid y),将类别、文本、另一张图像或视频片段等 yy 作为控制条件。后者把“数据可能长成什么样”限制在给定条件之下,因此可以完成类别条件图像生成、文本生成图像和图像生成视频等任务。

概率分布必须归一化,即 pθ(x)dx=1\int p_\theta(x)\,dx=1。这项约束使生成模型的训练和采样都比普通分类更困难,却也带来更完整的能力:模型可以发现异常样本、在没有标签时学习特征,并从一个条件下可能的多个输出中采样。以语言或文本到图像为例,输入本身往往存在合理但互不相同的补全;只输出一个确定答案的回归模型通常会得到平均化的结果,分布模型则能保留这种多样性。

在满足适当先验的条件下,生成模型也能导出分类器:

p(yx)=p(xy)p(y)p(x).p(y\mid x)=\frac{p(x\mid y)p(y)}{p(x)}.

不过,学习 p(x)p(x)p(xy)p(x\mid y) 的目标比只区分类别更强,不能简单用分类精度衡量。课程按照“是否显式表示密度”与“采样是否需要迭代”将主要方法整理如下。

类型 密度处理 生成方式 代表方法
显式且可精确计算 直接计算 pθ(x)p_\theta(x) 顺序采样 自回归模型
显式但需近似 优化对数似然的下界 先采样潜变量再解码 VAE
隐式、直接生成 不显式给出密度 一次前向生成 GAN
隐式、迭代生成 通过去噪过程逼近分布 多步更新 扩散模型

生成模型的主要类型

设训练集为 {x(i)}i=1N\{x^{(i)}\}_{i=1}^N,模型以参数 WW 给出密度 p(x)=f(x,W)p(x)=f(x,W)最大似然估计选择让训练样本联合概率最大的参数:

W=argmaxWi=1Np(x(i))=argmaxWi=1Nlogp(x(i))=argmaxWi=1Nlogf(x(i),W).\begin{aligned} W^\ast &=\arg\max_W\prod_{i=1}^{N}p\left(x^{(i)}\right)\\ &=\arg\max_W\sum_{i=1}^{N}\log p\left(x^{(i)}\right) =\arg\max_W\sum_{i=1}^{N}\log f\left(x^{(i)},W\right). \end{aligned}

取对数把概率的连乘变为求和,既避免许多小概率相乘造成数值下溢,也让每个样本对梯度的贡献可以在小批量中相加。负对数还会特别重罚模型赋予极低概率的真实样本,因此最大似然不仅鼓励“最典型”的结果,也要求覆盖训练分布中的不同模式。不同生成模型的分野由此变得清楚:有些模型选择受限结构来精确计算这项损失,有些保留更灵活的生成过程,却只能优化下界或以对抗、去噪目标间接实现分布匹配。

自回归与 VAE

自回归模型把高维变量拆成一个有序序列 x=(x1,,xT)x=(x_1,\ldots,x_T),利用概率链式法则写成

p(x)=t=1Tp(xtx1,,xt1).p(x)=\prod_{t=1}^{T}p(x_t\mid x_1,\ldots,x_{t-1}).

这个分解直接来自概率链式法则,并非近似;只要每个条件分布归一化,整体密度便天然归一化并可精确求值。训练时,每一步的真实历史 x<tx_{<t} 都已知,可以一次并行计算所有位置;采样时,第 tt 个值却真实依赖刚生成的前缀,只能依次产生。语言模型中的词序列、RNN 和带因果掩码的 Transformer 都遵循这一结构。它用顺序约束换来了精确似然,选择不同顺序还会改变模型容易捕捉的局部关系。

图像也可以按从左到右、从上到下的顺序展开,把每个子像素视为一个离散分类变量。该做法的概率含义清晰,生成质量可以通过似然直接评价,但原始高分辨率图像包含数百万个子像素,逐个采样会非常缓慢。后续方法常先把图像压缩为较短的潜变量序列,再在潜空间使用自回归模型或扩散模型,从而缓解序列过长的问题。

普通自编码器先把输入 xx 映射为编码 zz,再由 zz 重建 xx,可用 2\ell_2 重建误差训练。它能获得紧凑特征,却没有规定编码空间中哪些位置对应真实数据;任意选取一个 zz 并解码,往往得不到合理样本。变分自编码器(VAE)在自编码器中加入明确的概率语义:先从先验 p(z)p(z) 采样潜变量,再由解码器 pθ(xz)p_\theta(x\mid z) 产生数据。

VAE 的编码、采样与解码

因此,给定样本的边缘概率为

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

这个积分要遍历所有可能的潜变量解释,通常难以直接计算。若能得到真实后验 pθ(zx)p_\theta(z\mid x),就可以只关注那些确实能生成 xx 的区域;但 Bayes 公式中的分母正是难算的 pθ(x)p_\theta(x)。VAE 引入编码器 qϕ(zx)q_\phi(z\mid x),用一次前向计算给出每个样本可能来自哪里,相当于学习一个高效的近似推断器,并与解码器共同训练。常见的对角高斯既能表达逐维不确定性,又具有可计算 KL 和可重参数化采样,是计算便利与后验表达能力之间的选择:

qϕ(zx)=N ⁣(μzx,diag(σzx2)),pθ(xz)=N ⁣(μxz,σx2I),p(z)=N(0,I).\begin{aligned} q_\phi(z\mid x)&=\mathcal N\!\left(\mu_{z\mid x},\operatorname{diag}(\sigma_{z\mid x}^{2})\right),\\ p_\theta(x\mid z)&=\mathcal N\!\left(\mu_{x\mid z},\sigma_x^2 I\right),\qquad p(z)=\mathcal N(0,I). \end{aligned}

这里编码器输出潜变量高斯分布的均值和方差,解码器输出数据条件分布的参数。将 qϕ(zx)q_\phi(z\mid x) 乘除进边缘似然,并用 Jensen 不等式,可得

logpθ(x)=LELBO(x)+DKL ⁣(qϕ(zx)pθ(zx))Eqϕ(zx) ⁣[logpθ(xz)]DKL ⁣(qϕ(zx)p(z)).\begin{aligned} \log p_\theta(x) &=\mathcal L_{\mathrm{ELBO}}(x) +D_{\mathrm{KL}}\!\left(q_\phi(z\mid x)\,\Vert\,p_\theta(z\mid x)\right)\\ &\ge \mathbb E_{q_\phi(z\mid x)}\!\left[\log p_\theta(x\mid z)\right] -D_{\mathrm{KL}}\!\left(q_\phi(z\mid x)\,\Vert\,p(z)\right). \end{aligned}

右侧称为证据下界(ELBO)。等式中缺失的部分正是 qϕ(zx)q_\phi(z\mid x) 与真实后验的 KL;它非负,所以优化右侧等于在一个可计算目标上同时提高数据似然并逼近正确推断。第一项是重建项,要求从样本编码出的 zz 能解释原输入;当解码器方差固定时,

logpθ(xz)=12σx2xμxz22+C,\log p_\theta(x\mid z) =-\frac{1}{2\sigma_x^2}\left\|x-\mu_{x\mid z}\right\|_2^2+C,

它就对应常用的重建误差。第二项将每个样本的编码分布拉向同一个先验,使训练时编码器会使用的区域与生成时从先验抽到的区域尽量重合;没有它,潜空间中的空洞在重建训练中从未被访问,随机采样落入其中就会产生无意义输出。两项存在张力:只追求重建时,编码器倾向为每个样本分配互不重叠的编码;只追求先验时,所有编码都接近标准高斯,解码器便难以从 zz 判断原样本。ELBO 把“保留足够信息”和“形成可采样空间”放进同一目标,VAE 的模糊与 posterior collapse 也可从这组张力理解。

随机采样不能直接穿过网络参与反向传播,VAE 用重参数化技巧把随机性移到固定噪声上:

ϵN(0,I),z=μzx+σzxϵ.\epsilon\sim\mathcal N(0,I),\qquad z=\mu_{z\mid x}+\sigma_{z\mid x}\odot\epsilon.

一次训练迭代可以概括为:输入 xx,由编码器得到 μzx\mu_{z\mid x}σzx\sigma_{z\mid x};采样 ϵ\epsilon 并构造 zz;解码器给出 μxz\mu_{x\mid z};最后以重建项加 KL 项优化两个网络。生成阶段不再需要输入样本,只需从 p(z)p(z) 采样并送入解码器。若潜变量的不同坐标与相对独立的语义因素对齐,改变单一坐标会对应可解释的外观变化;这也是 VAE 潜空间常被用于表征和编辑的原因。

对抗生成

生成对抗网络(GAN)不要求显式写出 pG(x)p_G(x)。生成器从简单先验 zp(z)z\sim p(z) 取样,通过 x=G(z)x=G(z) 映射到数据空间;判别器 D(x)D(x) 输出样本来自真实数据的概率。两者进行极小极大博弈:

minGmaxD  Expdata ⁣[logD(x)]+Ezp(z) ⁣[log(1D(G(z)))].\min_G\max_D\; \mathbb E_{x\sim p_{\mathrm{data}}}\!\left[\log D(x)\right] +\mathbb E_{z\sim p(z)}\!\left[\log\left(1-D(G(z))\right)\right].

训练通常交替进行。固定生成器时,判别器学习当前生成分布与真实分布最容易区分的方向;固定判别器时,生成器沿这些方向修正样本。与逐像素重建不同,判别器可以把纹理是否自然、结构是否协调等可学习统计都变成梯度,因此 GAN 往往生成锐利结果;同一反馈只要求样本“足以骗过判别器”,没有显式奖励覆盖所有真实模式,这也给模式坍塌留下空间。

原始极小极大目标在训练早期容易饱和:当生成器很差时,D(G(z))0D(G(z))\simeq 0,最小化 log(1D(G(z)))\log(1-D(G(z))) 给生成器的梯度很弱。实践中常让判别器仍最大化原目标,而让生成器最小化非饱和损失

LG=Ezp(z)[logD(G(z))].\mathcal L_G=-\mathbb E_{z\sim p(z)}[\log D(G(z))].

它与原目标有相同的理想解,却能在判别器很自信时提供更强的更新信号。理论上,给定生成分布 pGp_G,最优判别器为

DG(x)=pdata(x)pdata(x)+pG(x).D_G^\ast(x)=\frac{p_{\mathrm{data}}(x)} {p_{\mathrm{data}}(x)+p_G(x)}.

这个比值说明最优判别器实质上在估计“此处真实密度相对生成密度有多大”:真实样本多而生成样本少的区域会得到高分,生成器便应把更多概率质量移过去。将其代回博弈可知全局最优出现在 pG=pdatap_G=p_{\mathrm{data}}。理论结论假设判别器每轮都达到最优且两种分布有足够重叠;现实中的有限网络、有限数据和非凸交替优化并不满足这些条件,因而会出现判别器过强、模式坍塌和振荡,损失数值也不像最大似然那样直接对应样本质量。

卷积结构让 DCGAN 将 GAN 推向更复杂的图像数据。

DCGAN 的卷积生成结构

StyleGAN 进一步用由潜变量导出的缩放、偏置调节中间特征。其自适应实例归一化可写为

AdaIN(x,w,b)i=wixiμ(x)σ(x)+bi.\operatorname{AdaIN}(x,w,b)_i =w_i\frac{x_i-\mu(x)}{\sigma(x)}+b_i.

这种逐层控制使粗略布局和细节外观更容易分离。潜变量空间也支持连续插值:给定 z0,z1z_0,z_1,令 zt=tz0+(1t)z1z_t=t z_0+(1-t)z_1,再计算 G(zt)G(z_t),通常会得到平滑的图像过渡。GAN 的采样只需一次前向计算,图像常很清晰;相应地,其训练稳定性、覆盖多样模式的能力以及扩大数据和模型规模的难度,促使研究转向扩散模型。

扩散模型

现代扩散模型的表述很多,课程以 Rectified Flow 为主线。它从数据样本 xpdatax\sim p_{\mathrm{data}} 和噪声 zpnoisez\sim p_{\mathrm{noise}} 出发,在两者之间构造直线:

xt=(1t)x+tz,v=zx,tU[0,1].x_t=(1-t)x+t z,\qquad v=z-x,\qquad t\sim\mathcal U[0,1].

t=0t=0xtx_t 是干净数据,当 t=1t=1 时是纯噪声。网络 fθ(xt,t)f_\theta(x_t,t) 学习当前位置和时间对应的速度场:

LRF=Ex,z,t[fθ(xt,t)(zx)22].\mathcal L_{\mathrm{RF}} =\mathbb E_{x,z,t}\left[ \left\|f_\theta(x_t,t)-(z-x)\right\|_2^2 \right].

直线插值刻意把难设计的生成轨迹变成训练时可计算的监督:对一对 (x,z)(x,z),任意时刻的位置和整条线的恒定速度 zxz-x 都已知。不同训练线可能经过相近位置,测试时又不知道当前噪声原本与哪个数据样本配对;平方误差的最优预测会自动成为这些可能速度在给定 (xt,t)(x_t,t) 下的条件平均。这个平均场不负责复原某个唯一训练样本,而是让整群粒子的分布按正确方向演化,因此模型在推理时只需知道当前位置和时间。

Rectified Flow 的训练与采样路径

采样从 x1pnoisex_1\sim p_{\mathrm{noise}} 开始,以 TT 个步长反向积分。若使用简单的 Euler 离散化,在 t=1,11T,,1Tt=1,1-\frac1T,\ldots,\frac1T 上计算 vt=fθ(xt,t)v_t=f_\theta(x_t,t),并更新

xt1T=xt1Tvt.x_{t-\frac1T}=x_t-\frac1T v_t.

最终的 x0x_0 即为生成样本。更新中出现减号,是因为网络学习的是从数据指向噪声的正向速度,而生成沿时间从 11 走回 00;每个小步都沿相反方向移动。步数越多,局部线性近似越准确,但网络前向次数也越多。条件生成把 yy 传给速度网络后,同一个噪声位置会因条件不同得到不同方向,从而分别流向对应的条件分布。

条件信号有时不足以让生成结果严格遵从提示词。分类器无关引导(CFG)在训练时随机丢弃条件,把一部分样本的条件替换为 yy_\varnothing,让同一网络同时学会条件速度和无条件速度。采样时对同一 xtx_t 运行两次网络:

v=fθ(xt,y,t),vy=fθ(xt,y,t),v^\varnothing=f_\theta(x_t,y_\varnothing,t),\qquad v^y=f_\theta(x_t,y,t),

条件预测同时包含“怎样形成一张自然图像”和“条件 yy 额外要求什么”,无条件预测只包含前一部分;两者相减便近似隔离出条件带来的增量。采样再以

vcfg=(1+w)vywvv^{\mathrm{cfg}}=(1+w)v^y-wv^\varnothing

替代原速度。w=0w=0 时只使用普通条件预测;w>0w>0 把条件增量外推到训练分布之外,使模型宁可牺牲一些常见但不够符合提示的样本,也更坚定地沿条件方向移动。有些资料写成 vcfg=v+s(vyv)v^{\mathrm{cfg}}=v^\varnothing+s(v^y-v^\varnothing),两式只相差参数平移 s=1+ws=1+w:前一种记法以 w=0w=0 表示普通条件生成,后一种则以 s=1s=1 表示同一点。外推通常提升提示词一致性,却会收缩可接受模式,过强时产生过饱和或结构伪影。CFG 每步还要计算条件和无条件两次网络,是这种可控性带来的直接推理成本。

分类器无关引导

时间 tt 并非所有位置都同样困难。接近纯数据或纯噪声时,目标的条件不确定性相对小;在中间噪声强度,网络既要保留语义又要处理大量随机扰动。均匀采样时间可能将过多训练预算放在较简单的位置。采用非均匀的时间分布,例如 logit-normal 形式,可以把更多样本放在中间区域;处理高分辨率图像时,也常根据像素相关性把训练重点向较高噪声移动。

直接在像素空间迭代去噪的计算代价很高。潜空间扩散模型(LDM)先训练编码器和解码器,把 H×W×3H\times W\times3 图像压缩为较小的潜变量 h×w×ch\times w\times c,再只在潜空间训练和采样扩散模型。以 88 倍下采样为例,256×256256\times256 图像可压缩为 32×3232\times32 的空间网格;去噪网络处理的 token 数和计算量都显著下降。

LDM 的训练分为两层。图像自编码器先决定哪些像素细节可以被压缩而不妨碍感知质量,通常包含 VAE 式正则;若只用逐像素重建,多个可能高频纹理容易被均值化,因此可加入感知或对抗信号。自编码器固定后,扩散模型只需学习真实图像编码形成的潜变量分布,避免第二阶段不断变化的表示把生成目标一起移动。生成时从随机潜变量迭代去噪,再一次解码成图像。计算量下降源于把冗余的局部像素变成更少、信息密度更高的变量,扩散过程本身并未消失;压缩器丢掉的细节也构成最终质量上限。

潜空间扩散的完整链路

扩散 Transformer,通常称为 DiT,将带噪潜变量切成图像块并作为 token 输入 Transformer。高噪声阶段需要先恢复全局布局,低噪声阶段更应修正局部纹理,同一特征在不同时间应被不同方式处理,因此时间步不能只在输出端充当附加标签。把时间嵌入转成自适应 LayerNorm 的缩放和偏置,可以在每个 block 内连续调节通道的相对作用;文本等条件则通过交叉注意力让图像 token 按需读取相关词,或与图像 token 一起参加联合注意力。条件被重复注入多层,也能减少深层计算逐渐忘记当前时间和提示的风险。

DiT 的条件扩散结构

文本到图像系统先由预训练文本编码器(如 T5 或 CLIP)把提示词变成序列表示,再由 DiT 根据文本、时间步和噪声潜变量预测去噪方向,最后由图像解码器输出像素。视频版本把潜变量扩展为时间、宽度和高度三个维度,模型在时空 token 上进行注意力计算。视频的 token 数会迅速增长,因而需要更大的时空下采样、分块策略和更高效的注意力设计。

采样速度仍是扩散模型的主要限制。蒸馏方法可以把多步教师的行为压缩给更少步甚至一步的学生模型,也可以把 CFG 的效果一并蒸馏,减少双前向带来的成本。代价是学生模型必须在更大的时间跨度上近似复杂轨迹,质量、多样性和推理速度之间仍需权衡。

从更一般的角度,可以先定义

xt=a(t)x+b(t)z,ygt=c(t)x+d(t)z,x_t=a(t)x+b(t)z, \qquad y_{\mathrm{gt}}=c(t)x+d(t)z,

再用平方误差训练 fθ(xt,t)f_\theta(x_t,t) 预测 ygty_{\mathrm{gt}}。Rectified Flow 对应 a(t)=1t,b(t)=t,c(t)=1,d(t)=1a(t)=1-t,b(t)=t,c(t)=-1,d(t)=1。不同参数化可以预测干净样本 xx、噪声 ϵ=z\epsilon=z,也可以预测二者线性组合的 vv;理想模型下它们能够互相换算,有限精度训练中却会重新分配各时间的难度。接近纯噪声时直接恢复干净图像很难,接近纯数据时从极小残差恢复噪声也可能不稳定。方差保持型过程令 a(t)2+b(t)2=1a(t)^2+b(t)^2=1,使输入总体尺度大致稳定;方差爆炸型过程固定信号系数并增大噪声,换取另一种方便的分数建模形式。

这类模型还可被看作潜变量模型:已知的前向过程逐步给数据加入高斯噪声,网络学习近似反向过程,并可由变分下界解释训练目标。若记

s(x)=xlogp(x),s(x)=\frac{\partial}{\partial x}\log p(x),

s(x)s(x) 是把样本推向高密度区域的分数函数;基于分数的扩散模型学习不同噪声水平下的这一方向。在连续时间极限,前向过程可写成随机微分方程

dx=f(x,t)dt+g(t)dw,dx=f(x,t)\,dt+g(t)\,dw,

反向生成由网络近似所需的分数或速度场。

自回归思想也没有消失。VQ-VAE 一类模型先把图像编码为离散潜变量,再以自回归模型预测离散 token 序列,最后由解码器还原图像。它保留了自回归的精确序列建模,同时避免逐像素生成;与潜空间扩散一样,关键都是先选择一个更紧凑、更适合生成的表示空间。