AI Hero Club

扩散模型与 Flow Matching · 第 1 章

已自行标记完成0 / 8

仅保存在当前浏览器;完成标记不代表通过项目验收。

本章提纲 7 个小节
全课目录 8 章
完整课程计划 ↗
扩散模型与 Flow Matching / 课程计划 ↗

CHAPTER 01 / 8建议学习 150 分钟

概率目标、混合分布与噪声路径

随机程序画出了四个簇,怎样判断它学到了簇内分布,而不只是输出四个中心?

本章要解决的 3 个问题
  • 定义二维生成目标、密度和采样协议
  • 推导混合分布的矩与独立线性桥的协方差
  • 用模式坍塌和矩匹配反例设计互补指标
课程项目 ZIP ↓

本章交付:把生成任务写成可检查的分布

本课程的对象是一对实数,而不是一张图像。一次样本写作向量 x=(x₁,x₂),两个坐标可以理解为平面上的横、纵位置。我们的任务不是找到一个看起来舒服的点,而是建立一个随机程序,使大量输出在平面上的分布接近事先指定的四个高斯簇。这个尺度让理论均值、方差、密度和采样误差都能算出来,也使错误生成器无法躲在漂亮图片后面。后面训练的网络只有几千个参数,不能据此宣称已实现图像扩散大模型。

需要的预备知识是向量加减、导数和有限概率。概率密度 p(x) 是对小区域概率的局部刻画:区域 A 的概率是对 A 积分 p(x),不是把某一点的密度直接当成该点的概率。连续分布中单个点的概率通常为零,即使那里密度很高。我们使用的标准二维正态 N(0,I) 中,I 是二乘二单位矩阵,两坐标独立、均值为零、方差为一;这几个条件要分别核对,不能只看到“随机数”就认为满足。

一、从潜在类别构造目标分布

令离散变量 K 在四个编号上等概率取值,每个概率为四分之一。对应中心 μₖ 依次为负二负二、负二正二、正二负二、正二正二。令 ξ 是与 K 独立的标准二维正态,簇内标准差 σ=0.3。目标样本定义为 X=μ_K+σξ。这里大写 X 表示随机向量,小写 x 表示已经观察到的取值;σ 是标准差,其平方才进入协方差。采样时先选类别再加扰动,不是同时输出四个中心的平均。

p1(x)=14∑k=1412πσ2exp⁡ ⁣(−∥x−μk∥22σ2)p_1(x)=\frac14\sum_{k=1}^{4}\frac{1}{2\pi\sigma^2}\exp\!\left(-\frac{\|x-\mu_k\|^2}{2\sigma^2}\right)
每个二维高斯积分为一,权重和为一,所以混合密度归一化。

下标一预告本课流模型的时间约定:零时刻是容易采样的标准正态,一时刻是目标数据。本课介绍离散 DDPM 时会用另一个下标 j 表示从数据向噪声的步号,不能直接把两套方向互换。密度式中欧氏范数的平方等于两个坐标差的平方之和;二维归一化常数是二πσ平方,不能误用一维的平方根常数。常数错了可能不改变某些比值,却会使密度和似然失去正确单位。

混合模型有一个重要的计算区分:给定类别时的均值很容易知道,但类别被隐藏后,观察点属于哪一簇的概率还要重新计算。这些后验类别概率以后叫责任度。位于两个簇之间的点不能硬指定给最近簇后声称做了精确条件期望;最近中心只是某种评价划分,不是贝叶斯后验。这个区别会在第五章的解析速度场中直接出现。

算例一:四个簇的均值和协方差

先按类别求均值。四个中心的第一坐标为负二、负二、正二、正二,相加为零;第二坐标同样为零,所以 E[X]=(0,0)。再用全协方差分解:簇内协方差是 σ²I=0.09I,中心本身的协方差是四个 μₖμₖᵀ 的平均。每个对角项为四,交叉项分别为正四、负四、负四、正四,平均为零。相加得到目标协方差 4.09I。两个坐标不相关;本例实际上还因中心符号独立而独立,但“协方差为零必然独立”一般不成立。

独立检查可以直接展开一个坐标的平方:E[(μ_K,₁+σξ₁)²]=E[μ_K,₁²]+2σE[μ_K,₁ξ₁]+σ²E[ξ₁²]。中间交叉项因独立且噪声均值零而消失,余下四加零点零九。若把标准差零点三直接加到四得到四点三,就是把量纲不同的量相加。若把四个簇先平均成中心零再加噪声,则只剩零点零九,已换成另一个分布。

二、可采样的噪声与概率路径

令 X₀ 为标准二维正态,X₁ 为上述混合数据,并明确让两个端点独立。定义中间随机向量 X_t=(1−t)X₀+tX₁,t 在零到一之间。这是随机端点之间的线性插值;每条抽到的条件轨迹是直线,但所有轨迹组成的中间分布会改变形状。以后由神经网络定义的确定性常微分方程轨迹不一定是这些抽样直线,二者的联系需要条件期望,不能从插值图直接断言。

E[Xt]=0,Cov⁡(Xt)=((1−t)2+4.09t2)I\mathbb E[X_t]=0,\qquad \operatorname{Cov}(X_t)=\big((1-t)^2+4.09t^2\big)I
端点独立时交叉协方差为零;这条公式描述边缘分布的二阶矩。

写出这条路径并不需要训练网络,也不等于已经会从噪声生成数据。构造 X_t 时我们使用了真实端点 X₁;生成时只能抽 X₀,不能偷偷把一个目标样本放进更新公式。训练的任务是把可访问真实端点时构造的局部监督,转换成仅依赖当前状态与时间的场。这个信息可用性边界贯穿全课:训练标签可以含有真实数据,采样函数不能访问未来答案。

算例二:中间分布不一定越来越分散

在 t=0.25 时,单坐标方差是零点七五平方加四点零九乘零点二五平方,即零点五六二五加零点二五五六二五,等于零点八一八一二五,反而小于起始的一。t=0.5 时是零点二五加一点零二二五,等于一点二七二五。方差先减后增并不违反从噪声搬运到更宽目标的任务,因为独立端点插值在早期会收缩噪声。最小值出现在导数 −2(1−t)+8.18t=0,即 t=1/5.09;代回可得约零点八零三五。

这个算例还提供一个失败检测:若代码写成 sqrt(1−t)X₀+sqrt(t)X₁,方差将变成一加三点零九乘 t,得到另一条路径。两者端点一样,却有不同的中间监督和速度。只检查 t=0、t=1 无法发现这种错误,至少应加入一个内部时刻的矩检验。我们不把“端点相同”偷换成“训练任务相同”,后面的速度目标必须对实际路径求导。

三、为什么均值与协方差不能完成验收

总输出零的程序具有正确的理论均值,却丢掉所有模式。一个输出 N(0,4.09I) 的程序甚至具有相同均值和协方差,但它在四个数据中心之间填充大量本不该有的概率。还有一种程序等概率输出四个中心,不加任何簇内噪声;它覆盖四个区域,却把连续簇压成四个点。三个错误分别提醒我们检查模式质量、区域形状和簇内宽度,不能用一个指标替代整个分布。

项目会记录到最近中心的平方距离。目标中该距离的均值约为两个坐标噪声方差之和,即零点一八;这里“约”是因为极少数跨越中心分界的样本会被分到另一簇。输出中心的程序得到零距离,不代表更好。这个指标要比较与目标的差异,不应一律向越小越好优化。项目还记录模式质量、离群比例及多方向投影距离,让指标盲点相互补充。

有限样本本身也有波动。若抽取 n 个独立样本,单坐标样本均值的标准差是 sqrt(4.09/n),所以 n=100 时约零点二零二,而 n=10000 时约零点零二零二。看到均值不恰好为零不能立即判失败;同样,换许多随机种子只展示最接近零的一次也不能证明算法稳定。比较求解器时将固定同一批初始噪声,比较训练泛化时则使用独立生成的验证端点。

对一个指定模式,独立样本落入该模式的次数可近似看成二项计数。目标比例为四分之一时,比例估计的标准差是根号下三除以十六倍样本数;两千零四十八个点时约零点零零九六。四个模式计数之间不是独立的,因为它们总和固定为样本数。因此不能把四个单独看起来合理的误差区间直接解释成一个已经校准的联合置信结论;本课先完整报告计数,不伪造未执行的统计认证。

独立运行只用标准库检验解析矩与错误路径,不依赖后续项目。
from math import sqrt
means=[(-2,-2),(-2,2),(2,-2),(2,2)]
assert sum(x for x,y in means)==0
assert sum(x*y for x,y in means)==0
variance=4+0.3**2
t=0.25
path_variance=(1-t)**2+t*t*variance
assert abs(path_variance-0.818125)<1e-12
wrong_variance=(1-t)+t*variance
assert abs(path_variance-wrong_variance)>0.1
print(variance,path_variance,sqrt(variance/10000))

练习:把分布、路径和验收分开

TRY IT YOURSELF

练习一|另一种混合权重

若只保留两个中心(−2,0)、(2,0),权重为四分之一、四分之三,簇内仍为0.09I,求均值与协方差。

提示 1
先由新权重求中心均值,再用二阶矩减均值平方求中心协方差。
提示 2
簇内0.09I最后再加;可改用各中心对新均值的偏差加权复算,别照搬等权四簇方差。
对照参考解答
先算均值,横坐标为负二乘四分之一加正二乘四分之三,得到一,纵坐标为零。横向中心二阶矩仍为四,减去均值平方一,得到中心方差三;加簇内方差得到三点零九。纵向中心不变,方差仅零点零九。交叉项为零,因此协方差为对角三点零九和零点零九。把四点零九直接照搬到这个问题,会漏掉权重改变后的均值平方。这个解可由每簇对均值一的偏差负三和正一再次加权复算。

TRY IT YOURSELF

练习二|端点相关时的路径

若同一个标准正态Z同时用作X₀=Z、X₁=2Z,计算t=1/2时方差,并说明为何不能使用独立端点公式。

提示 1
两端点共享同一个Z,先直接把插值整理成Z的倍数。
提示 2
再用含Cov(X0,X1)的方差公式交叉核对;相同边缘分布不代表联合分布独立。
对照参考解答
此时插值得到一点五倍的Z,单坐标方差是二点二五。若错误地套用独立公式,会算成零点二五乘一加零点二五乘四,得到一点二五。缺失项是二乘零点五乘零点五乘Cov(X₀,X₁),而该协方差为二,所以补上一正好得到二点二五。端点耦合方式也是训练任务的一部分:相同端点边缘分布并没有固定联合分布,联合分布改变会改变条件监督与方差。

TRY IT YOURSELF

练习三|设计阳性失败对照

分别说明总输出零、只输出四中心、矩匹配单高斯最容易被哪些指标发现。为何真实样本与另一批真实样本的距离不必为零?

提示 1
分别检查三种坏生成器保留了哪些统计、丢失了哪些信息。
提示 2
把均值/协方差、模式质量、簇内宽度、离群与投影距离分列;真实对真实的有限样本距离应作噪声基准。
对照参考解答
总输出零的协方差为零且几乎全部落在离中心很远处;四中心原子分布的模式比例正确,但最近中心平方距离为零,低于目标约零点一八,投影分布也缺少簇内宽度;矩匹配单高斯可通过均值和协方差检查,却会在模式之间产生大量点,因此离群比例和投影距离应暴露它。两批真实样本虽来自同分布,经验分布不同,排序后投影坐标不会逐项相同,所以有限样本距离通常大于零。真实对真实应作为噪声基准,不能伪造为精确零。

CHECK YOUR UNDERSTANDING

检验理解

先作答,再决定是否展开解析。选择题用于发现理解缺口;独立实现与迁移任务仍需另行检验。

1. 密度值能否直接当作某个连续点的概率?

查看解析连续概率来自积分,单点通常概率为零。
2. 目标单坐标方差是多少?

查看解析中心方差四加簇内方差零点零九。
3. 独立线性桥的速度标签是什么?

查看解析对t求导,端点在该条件轨迹中固定。
4. 零最近中心距离证明正确吗?

查看解析目标还包含非零的簇内变化。

自行标记用于记录学习进度,不代表通过项目验收。