Part 1:生成模型基础与 VAE
本部分对应原论文的 “Introduction: Generative Models” 以及 “Background: ELBO, VAE, and Hierarchical VAE” 中进入 Hierarchical VAE 之前的内容。我们的目标不是先记住 VAE 的损失函数,而是沿着论文的问题链逐步回答:生成模型究竟要学习什么,隐藏变量为什么会带来难算的积分,VAE 为什么需要一个输出分布的 encoder,以及 ELBO 如何把无法直接优化的似然变成可以训练的目标。
1.1 为什么需要生成模型
背景
在监督学习中,我们经常学习从输入到标签的条件分布,例如给定图片 ,预测类别 的 。生成模型的方向不同:它试图学习数据本身是怎样出现的,也就是学习 的分布 。如果模型真的掌握了这个分布,我们就不仅能判断一张图片“像不像训练数据”,还可以从分布中采样,生成以前没有出现过的新图片。
在理解“学习分布”之前,需要先区分概率论中的几个基本概念。
随机变量不是一个“会随机变化的普通变量”,而是一个把随机实验结果映射为数值的规则。例如掷骰子的结果可以用随机变量 表示, 可能取 到 ;一张图片也可以看成一个高维随机变量 ,它的每个分量对应一个像素通道的数值。大写 常表示随机变量,小写 常表示它的一次具体取值。
概率描述某个事件发生的可能性。例如 表示骰子结果为 的概率。离散随机变量可以直接给每个取值分配概率;连续随机变量通常使用概率密度 。严格来说,连续变量在单个点上的概率通常为零,真正有意义的是区间概率,例如 。机器学习文献常把“概率质量”和“概率密度”都简写成 ,后文也沿用这种写法,但要记住二者在连续情形下并不完全相同。
概率分布描述随机变量所有可能取值及其相对可能性。合法分布必须非负,并把全部可能性的总量归一化为 :离散情形满足 ,连续情形满足 。求和符号 表示把所有离散取值的概率相加;积分符号 表示把连续空间中的概率密度累积起来; 表示积分变量 上一个无穷小的区间或体积元素。
真实世界的数据分布记为 。我们只能看到从中抽取的有限训练样本,通常不能写出它的解析表达式。因此引入带参数的模型分布 ,其中 表示神经网络的权重等所有可训练参数。训练的目标是让 尽可能接近未知的 。
数学推导
假设训练集为 ,其中 是样本数量, 是第 个观测。最常见的假设是这些样本独立且来自同一个分布,简称 i.i.d.。在独立假设下,整套数据同时出现的概率或密度等于每个样本概率或密度的乘积:
这个公式描述训练集在模型 下有多“合理”。符号 表示连乘; 是整套训练数据的联合似然; 是模型分配给第 个样本的概率质量或概率密度。之所以能够直接相乘,来源正是样本独立的假设。
当数据已经观察到以后, 是固定的,变化的是模型参数 。这时,同一个表达式 被称为参数 的似然。概率和似然使用相同的数值表达式,但观察角度不同:概率固定参数、讨论数据会出现什么;似然固定数据、比较哪些参数更能解释数据。
最大似然估计选择让训练集似然最大的参数:
这里 返回的不是最大值本身,而是使目标达到最大值的参数; 表示训练后希望得到的最佳参数。这个目标之所以必要,是因为如果模型给真实样本很低的可能性,那么从模型采样时也很难产生与真实数据相似的结果。
实际训练通常最大化对数似然。因为对数函数 在 时严格单调递增,若 ,就一定有 ,所以对目标取对数不会改变使它最大的参数。利用对数把乘法变成加法的性质 ,可得
这个公式仍然是最大似然估计,只是把许多很小概率的连乘变成了对数概率的求和。这样做有三个作用:第一,避免大量小数相乘造成计算机下溢;第二,加法比长乘积更容易求导和实现小批量训练;第三,后续 ELBO 的推导天然围绕 展开。
优化器通常执行最小化,因此代码里经常最小化平均负对数似然
是 negative log-likelihood,简称 NLL;前面的负号把“最大化对数似然”改写成“最小化损失”;除以 只是取样本平均,不改变最优参数。需要注意,负对数似然不是另外发明的经验损失,它就是最大似然目标的等价写法。
公式解释
本章最核心的单样本目标是 。其中 是一个已经观察到的数据样本, 是模型分布, 是要学习的参数, 是自然对数。这个量越大,说明模型越愿意相信样本 来自自己所描述的分布。
论文从“给观测样本高似然”的生成模型路线出发。后面引入 VAE 和 Diffusion,并不是放弃最大似然,而是因为复杂数据的 很难直接计算,需要寻找一个可以优化的替代目标。
直觉理解
可以把分布想象成一张覆盖整个数据空间的“地形图”,地势越高的位置代表概率密度越大。真实图片集中在某些复杂区域,随机像素噪声则位于另一些区域。训练生成模型就是调整 ,让训练图片所在的位置逐渐变高,同时由于整个分布必须归一化,总概率质量会相应从不合理区域移走。
最大化 不是要求模型背下每一张训练图片,而是要求它学习一套能够共同解释训练样本的概率规律。只有当模型学到可泛化的结构,从这个分布重新采样时才可能得到新的合理样本。
本章总结
- 本章解决了什么问题: 明确了生成模型学习的是数据分布 ,训练目标来自最大似然估计,而不是凭经验随意指定的损失。
- 核心公式: 。
- 需要记住的直觉: 训练就是让模型分布在真实数据附近分配更高的概率密度;取对数只改变计算方式,不改变最优解。
- 与下一章的关系: 直接给复杂图片建立 很困难。下一章会引入隐藏变量 ,把“直接描述图片”改写成“先产生潜在因素,再由潜在因素生成图片”。
1.2 Latent Variable Model:为什么引入隐藏变量
背景
图片的像素维度很高,但决定图片内容的因素往往更抽象。例如一张人脸可以由身份、姿态、光照、表情和背景共同决定。我们观察到的是最终像素 ,这些背后的生成因素却没有直接出现在数据集中。概率模型把这种不可直接观测、但参与生成数据的变量称为隐藏变量或潜变量,记为 。
图式 表示一个生成方向:模型先得到 ,再根据 生成 。箭头表达依赖关系,而不一定表示一个完全确定的函数。如果固定 后仍然允许多种可能的 ,这种不确定性就由条件分布 描述。
理解隐藏变量模型需要三个概率概念。
联合概率 描述 与 同时取某些值的可能性。条件概率 描述已知 后 的分布。先验分布 描述在看到具体数据 之前,我们认为潜变量 应该如何分布。这里“先验”不是说它永远正确,而是说它位于生成过程的起点。
数学推导
条件概率的定义为 ,前提是 。把等式两边乘以 ,得到概率的乘法法则
这个公式描述完整的生成过程。右侧的 负责产生潜变量, 负责在给定潜变量后产生观测;二者相乘得到 与 同时出现的联合分布。下标 通常放在需要学习的 decoder 分布上;先验 常被预先选定,所以这里没有写 。
训练集只有 ,没有对应的 。为了得到单独的 的分布,必须把所有可能的 都考虑进去。离散潜变量用求和,连续潜变量用积分。VAE 通常使用连续潜变量,因此
第一步称为对 边缘化:联合分布中包含了 和 ,对全部 积分后, 被消去,只留下 的边缘分布。第二步代入了刚才的联合分布分解。 不是一个需要单独相乘的普通变量,它表示在 空间上累积概率密度的体积元素。如果 有上百个维度,这实际上是一个上百维积分。
这个积分可以理解为加权混合:对每一种潜在状态 ,先计算它出现的密度 ,再计算它生成当前 的密度 ,最后把所有可能路径的贡献相加。它之所以难算,不是因为积分符号本身神秘,而是因为潜空间通常是高维连续空间,可能的 有无限多个,并且 由非线性神经网络参数化,通常没有可直接求出的解析积分。
看到某个 以后,我们还会反过来问:“它最可能由哪些 生成?”这对应后验分布。由 Bayes 公式,
分子衡量特定 与观测 的共同可能性;分母 负责归一化,使后验对所有 的积分为 。分母中的 只是积分用的临时变量,特意写成 是为了避免和分子中正在评估的 混淆。问题在于这个分母正是刚才难算的高维积分,因此真实后验 通常也难以直接计算。
公式解释
生成方向 、联合分解 和边缘化 描述的是同一个模型的三个角度:
- 是结构图,说明谁先生成、谁依赖谁。
- 是概率因子分解,说明联合概率如何计算。
- 把不可观测的 消去,得到训练最大似然真正需要的观测分布。
隐藏变量缓解了“如何表达复杂数据”的问题,却引入了“如何对所有隐藏状态积分”的计算问题。VAE 的核心正是处理这个新问题。
直觉理解
想象一个画图程序先随机选择“圆形还是方形”“颜色”“大小”和“位置”,再把这些属性渲染成像素。属性集合就是 ,渲染结果就是 。同一张近似的图片可能由许多略有不同的属性组合生成,所以要求 时不能只选择一个 ,而要把所有可能生成路径的贡献加起来,这就是边缘化积分。
隐藏变量的价值在于把高维像素规律转化为较低维、较有结构的生成因素;代价是这些因素没有标签,我们既不知道每个样本对应什么 ,也难以精确完成对所有 的积分。
本章总结
- 本章解决了什么问题: 用潜变量 表达观测数据背后的生成因素,并说明了生成模型的联合分布、边缘分布和后验分布。
- 核心公式: 。
- 需要记住的直觉: 一个观测 的总概率等于所有潜在生成路径的概率贡献之和;潜变量让模型更容易表达,却让似然和真实后验更难计算。
- 与下一章的关系: 下一章引入 VAE 的 encoder ,用一个可训练、可采样的分布去近似难以计算的真实后验 。
1.3 VAE:用可学习分布近似隐藏变量
背景
隐藏变量模型有两个方向。生成方向从 到 ,由 描述;推断方向从已经观察到的 反推 ,理论上应由真实后验 描述。上一章已经看到,真实后验的分母包含难算的 ,所以我们无法直接把它当作 encoder。
VAE 增加一个参数为 的近似分布 。它接收 ,输出一个关于 的分布,并尝试逼近 。字母 用来提醒我们:它是为推断而引入的近似分布,不是原始生成模型的联合分布 。
VAE 中的两个网络可以写为:
- Encoder:,从观测 推断潜变量 的近似后验。
- Decoder:,从潜变量 给出观测 的条件生成分布。
需要特别注意,decoder 神经网络的计算本身可以是确定的,但符号 表示一个概率分布。网络通常输出这个分布的参数,例如 Gaussian 分布的均值,或 Bernoulli 分布的像素概率,而不是在数学上只输出一个没有不确定性的固定图片。
数学推导
为了理解 VAE 常用的分布形式,先看一维 Gaussian(高斯或正态)分布。若 ,其概率密度为
是随机变量的一次取值; 是均值,控制钟形曲线的中心; 是方差,衡量分布的分散程度; 是标准差,与 使用相同单位; 是指数函数。距离均值越远,负的平方项越大,密度越低。前面的归一化系数保证整条曲线下的面积为 。
方差的定义是 。期望符号 表示按概率加权的平均;平方使正负偏差不会互相抵消。标准差是方差的平方根,所以当采样公式中要把标准正态缩放到目标分布时,乘的是 ,而不是 。
对于多维潜变量 ,VAE 常让 encoder 输出每个维度的均值与方差:
是 维均值向量; 是 维方差向量; 表示把这些方差放在协方差矩阵的对角线上,非对角元素为零。这个“对角协方差”假设意味着给定 后,各潜变量维度在近似后验中条件独立。它降低了表达能力,却让采样和 KL 计算非常简单。实践中网络常输出 ,因为对数方差可以取任意实数,再通过指数恢复正方差,从而避免网络直接产生非法的负方差。
Encoder 为什么不能只输出一个固定点 ?原因有三层。第一,真实后验 本来就是一个分布:同一个观测可能由多个潜在解释产生,固定点无法表达这种不确定性。第二,后面的 ELBO 需要对 求期望,分布形式使我们能够从中采样并近似这个期望。第三,如果每个样本只对应一个互不相关的孤立点,训练集之间的潜空间可能出现大量空洞,从任意位置采样时 decoder 未必知道如何生成合理数据;用分布表示并与共同先验匹配,会鼓励潜空间更加连续。
VAE 通常选择标准多元 Gaussian 作为先验:
表示每个潜变量维度的均值都是零; 是单位矩阵,表示每个维度方差为 ,不同维度协方差为 。因此“标准”指零均值、单位方差,而不是“所有 VAE 必须如此”。选择它主要有四个实际原因:容易采样;每个坐标使用统一尺度;与对角 Gaussian 近似后验之间的 KL 有解析解;训练完成后有一个明确且简单的生成入口。先验也可以换成更复杂的分布,但相应的推导、计算和采样会更复杂。
VAE 的完整概率角色现在可以区分为
左侧先采样 再生成 ,用于定义模型和生成新样本;右侧从已有 推断 ,主要用于训练。两者暂时只是结构,还缺少一个原则来决定如何同时学习 与 。这个原则就是下一章推导的 ELBO。
公式解释
符号 中的 是 decoder 参数; 中的 是 encoder 参数。真实后验 与近似后验 不能混为一谈:前者由生成模型和 Bayes 公式决定,但通常难算;后者由 encoder 直接给出,容易计算和采样,但需要通过训练逼近前者。
是生成前的先验, 是观察数据后的近似后验。训练时可以从近似后验取得与当前样本相关的潜变量;生成时没有输入 ,所以直接从先验取得潜变量,再送入 decoder。
直觉理解
普通 autoencoder 像是让 encoder 在地图上为每张图片插一根针:输入图片对应一个确定坐标。VAE 的 encoder 更像是在地图上画一个带中心和范围的云团: 决定云团中心, 决定各方向的宽度,从云团中不同位置采样仍应能够重建同一类输入。
标准 Gaussian 先验则像一片预先规定的主要活动区域。后续的 KL 项会让每个样本的云团不要无约束地跑到极远处。这样,生成阶段从这片区域随机取点时,更可能落在 decoder 训练过的范围内。
本章总结
- 本章解决了什么问题: 用可训练的 近似难算的真实后验,并明确了 encoder、decoder、先验与后验各自的角色。
- 核心公式: ,以及 。
- 需要记住的直觉: VAE 的 encoder 为每个输入输出潜空间中的“概率云团”,而不是孤立坐标;decoder 接收其中的样本并描述数据分布。
- 与下一章的关系: 仅仅定义 还不知道怎样训练它。下一章将从 出发,完整推导 ELBO,并说明 VAE 的两项训练目标为什么必然出现。
1.4 ELBO:从难算的似然到可训练目标
背景
我们希望最大化 ,但隐藏变量模型要求先计算 。这个高维积分通常不可解。VAE 的关键不是直接猜一个“重建损失加 KL 损失”,而是引入容易采样的 ,从最大似然目标一步步推导出一个可计算的下界。
在推导前需要补充期望、Jensen 不等式和 KL 散度。
如果 服从密度 ,函数 的期望为 。它描述反复从 采样并计算 时的长期平均。后文把较长的下标简写为 ,但所指分布仍然是 。
对数函数是凹函数。凹函数的图像位于任意两点连线的上方,因此对任意正数 和 ,有 。左侧先对 做加权平均再取对数,右侧先取对数再做加权平均。把两个点推广为随机变量 的所有可能取值,就得到 Jensen 不等式
例如 以相同概率取 和 ,左侧是 ,右侧是 ,确有 。在 ELBO 推导中,这个不等式把“期望外面的对数”移动到“期望里面”,代价是等号通常变成下界。
两个分布 与 的 KL 散度定义为
它按 的取值频率,平均比较 与 的对数密度比。顺序很重要,通常 ,所以它不是普通几何距离。KL 散度非负可以由 Jensen 不等式推出:
第一步只是把对数比值取倒数并加负号;第二步对凹函数 使用 Jensen 后再乘 ,不等号方向随之反转;第三步按照期望定义, 与分母中的 抵消;最后合法分布的积分为 ,而 。当 (几乎处处相等)时 KL 为零。这个结论会直接解释 ELBO 为什么是下界。
数学推导
第一步:把边缘似然改写成关于近似后验的期望
从边缘化公式开始:
在积分内部乘以 ,得到
为什么要特意引入 ?它没有改变原积分的值,却把被积函数整理成“分布 乘某个函数”的形式,而这正是期望的定义。于是我们可以通过从 encoder 分布采样来估计它。技术上还要求 在 有贡献的区域不能为零;常用 Gaussian 具有全空间支持,通常满足这一需要。
令正随机变量 ,对上式应用 Jensen 不等式:
右侧就是 Evidence Lower Bound,证据下界。Evidence 指观测 的边缘似然;Lower Bound 表示它不超过 。 是这个下界的名称,不是额外假设出来的新量。
第二步:说明下界与真实似然究竟差在哪里
仅凭 Jensen 可以知道“不超过”,但还看不出差距是什么。利用 Bayes 关系 ,从 ELBO 开始:
第一行代入联合分布分解;第二行使用 ,并注意 与积分变量 无关,所以它的期望仍是自身;第三行根据 KL 定义,把对数比值的方向反过来并出现负号。移项得到论文强调的关系:
这条公式精确描述了 ELBO 与真实对数似然的差距。因为 KL 总是非负,ELBO 必然不高于 ;当 与真实后验完全一致时,KL 为零,下界变成等号。
固定生成模型参数 时, 不依赖 encoder 参数 。因此,增大 ELBO 等价于减小近似后验与真实后验之间的 KL。这里必须强调“固定 ”:联合训练 VAE 时 会随 decoder 参数 改变。最大化 ELBO 一方面让 更好地近似后验,另一方面也提高生成模型对数据的下界似然。
第三步:把 ELBO 拆成 VAE 可以理解的两项
代入联合分布 :
第一项 是 reconstruction term,即期望重建对数似然。从 取得的 应让 decoder 给原始 较高的条件似然,因此它迫使 保存重建 所需的信息。
第二项前面有负号,而 KL 本身非负。最大化 ELBO 时就会最小化 ,让样本相关的近似后验不要偏离统一先验太远。这一项称为 prior matching term。它使生成阶段从 采到的点更可能位于 decoder 在训练中见过的区域。
两项不是随意拼接:它们是把联合概率的乘法法则代入 ELBO 后,由对数把乘法拆成加法、再由 KL 定义自然得到的。
第四步:把期望变成可以计算的样本平均
重建项仍然包含对 的期望,但现在我们能够从这个分布采样。若独立采样 个潜变量 ,Monte Carlo 估计为
是采样次数; 是样本编号; 表示第 次潜变量采样。大数定律告诉我们, 增大时样本平均会接近期望。训练 VAE 时常对每个 只采一个 ,也就是 ;单次估计有噪声,但在许多训练批次上平均后仍可提供有效梯度,而且计算便宜。
第五步:重参数化让梯度穿过采样过程
若直接写 ,采样结果会随 改变,但“从分布中随机抽一个值”不是普通的确定性网络节点,无法直接沿这条写法对 做反向传播。对 Gaussian 近似后验,可以先采样与参数无关的标准噪声,再做确定性变换:
是辅助噪声; 表示逐元素相乘; 与 都是 encoder 的确定性输出。这个变换确实产生目标 Gaussian,因为 、,所以 ,而每个维度都有 。因此 的均值和方差恰好与 的定义一致。
重参数化没有删除随机性,而是把随机性集中到不依赖模型参数的 中。给定一次采到的 后, 对 和 都是可微的确定性函数,decoder 的重建梯度便可以继续传回 encoder。
第六步:说明 Gaussian KL 项如何直接计算
当一维近似后验为 ,先验为 时,把两个 Gaussian 密度代入对数比可得
标准先验和近似后验中共同的 已经抵消。对 求期望时,按方差定义有 ;再将 展开平方,可得 。代回上式:
对角 Gaussian 的各维度相互独立,联合密度的对数比会变成各维度对数比的和,所以多维结果是
是潜变量维度编号, 是潜变量维数。这个解析式只依赖 encoder 输出的 和 ,所以 KL 项不需要额外 Monte Carlo 采样。若 且 ,该维度的近似后验等于标准先验,对应 KL 正好为零。
第七步:得到训练代码中的 VAE loss
理论上联合优化 encoder 参数 和 decoder 参数 时要最大化 ELBO:
深度学习优化器通常最小化损失,因此取负号得到完全等价的形式:
第一项是负的重建对数似然,代码里常称 reconstruction loss;第二项是 KL loss。最大化“重建对数似然减 KL”与最小化“负重建对数似然加 KL”只是符号约定不同。
重建损失的具体形式来自对 decoder 分布的选择。例如若假设 ,其中 decoder 输出均值 ,并把方差 固定,那么对 Gaussian 密度取负对数可得
是所有维度误差平方之和; 收集与可训练均值无关的归一化常数。固定 时,最小化这个负对数似然就等价于最小化均方误差,差别只在固定比例和常数。因此 MSE 不是凭空选择的,它对应一个固定方差 Gaussian 观测模型。若选择 Bernoulli 观测模型,则会得到交叉熵形式。
一次完整训练迭代由此自然产生:encoder 根据 输出 和 ;采样 并通过重参数化得到 ;decoder 用 参数化 ;计算重建负对数似然与解析 KL;将二者相加并反向传播,同时更新 与 。
训练完成后,重建已有数据时使用 取得 ;生成新数据时没有输入 ,直接采样 ,再从 采样或取其均值。KL 先验匹配项正是训练路径与生成路径能够衔接的原因。
公式解释
ELBO 的三种等价视角分别回答不同问题:
- 来自 Jensen 推导,说明下界如何构造。
- 说明下界与真实似然之间的缺口是什么。
- 说明 VAE 实际可以优化的两个组成部分。
Reconstruction term 保证 对当前 有解释力,prior matching term 保证这些 的总体位置与生成时使用的先验相容。只要忘记其中任意一项,VAE 的训练逻辑都会断裂:没有重建项, 不需要包含数据内容;没有 KL 项,encoder 可以把样本编码到任意互不相连的区域,从简单先验采样就没有可靠依据。
直觉理解
可以把 想成一份无法直接核算的“真实总成绩”。ELBO 是一份可以计算的保守成绩,二者相差近似后验与真实后验之间的 KL。提升 ELBO 时,我们既在提高可证明的似然下界,也在固定 decoder 时迫使 encoder 的推断接近真正的 Bayes 后验。
重建项与先验匹配项分别像两股力量:重建项要求每个潜变量云团携带足够信息,能够找回原数据;KL 项要求云团不要随意散落,而要与统一的标准 Gaussian 坐标系保持联系。VAE 的可生成性来自两者的共同作用,而不是只来自“加了随机噪声”。
本章总结
- 本章解决了什么问题: 从难以直接计算的 完整推导出 ELBO,并进一步得到可用采样、解析 KL 和反向传播训练的 VAE loss。
- 核心公式: 。
- 需要记住的直觉: ELBO 不是经验拼装的损失,而是对数似然的可计算下界;重建项保存信息,KL 项让训练时的潜变量分布与生成时的先验接轨。
- 与下一章的关系: 普通 VAE 只有一层潜变量 。Part 2 将沿论文顺序把它扩展为多层潜变量的 Hierarchical VAE,再通过三个特殊假设把这种层次模型变成 Diffusion Model。
Part 2:从 VAE 到 Diffusion
Part 1 只有一个潜变量层:模型从先验取得 ,再由 生成观测 。原论文接下来先把单层 VAE 扩展为 Hierarchical VAE,再对这种层次模型加入三个限制,得到 Variational Diffusion Model。本部分的重点是完成模型结构的转换;forward process 中 Gaussian 加噪公式的逐步计算将在 Part 3 展开。
2.1 Hierarchical VAE:从一个潜变量到一条潜变量链
背景
普通 VAE 的生成过程是 :先从先验 采样一个潜变量,再由 decoder 分布 生成数据。这个结构把所有抽象层次都压在单个 中。对于复杂数据,一层潜变量有时需要同时表达非常不同的因素,例如整体类别、物体布局、局部纹理和像素细节。
Hierarchical Variational Autoencoder(HVAE,层次变分自编码器)把一个潜变量扩展为多个层级:
是潜变量层数; 是生成过程最顶层的潜变量; 最靠近数据;箭头表示右侧变量的分布依赖左侧变量。模型先生成较高层潜变量,再逐层生成更靠近观测的潜变量,最终产生 。
为什么要使用多个 latent?核心原因不是“层数越多一定越好”,而是把一个复杂生成映射拆成若干较简单的条件转移。一般 HVAE 可以让高层变量表达较全局、抽象的信息,让低层变量补充局部细节。对 Diffusion 而言,这些中间 latent 不一定具有可解释的语义;它们更重要的作用是把“Gaussian 噪声到数据”的困难转换拆成许多小的去噪步骤。
论文进一步关注 HVAE 的一个特殊情况:Markovian Hierarchical VAE(MHVAE)。要理解它,需要先理解 Markov chain。
**Markov chain(马尔可夫链)**是一串按顺序排列的随机变量。它的关键假设是:已知当前状态以后,下一状态不再需要依赖更久以前的全部历史。这个性质常被概括为“未来在给定现在后与过去条件独立”。它并不是说过去没有影响,而是说过去的影响已经由当前状态概括。
数学推导
先回忆单层 VAE 的生成联合分布:。层次模型只是在 与最高层先验之间插入更多随机变量。记 ,论文中的 Markovian HVAE 生成联合分布为
这个公式描述从顶层到数据的完整生成概率。 是最高层先验; 是从第 层向第 层的生成转移; 是最后一步 decoder; 表示把 的全部相邻层转移相乘。
以 为例,乘积展开为 。这个展开正好对应 的每一条箭头。
Markov 限制体现在每个条件分布只依赖相邻的上层变量。例如生成 时,
左侧看似允许 依赖所有更高层变量;Markov 性质说明,一旦已经知道直接相邻的 ,更高的 不再提供额外条件信息。正因为如此,联合分布才能分解成相邻转移的乘积。
训练时还需要从数据向上推断全部 latent。普通 VAE 的 encoder 是 ;Markovian HVAE 将它扩展为反方向的推断链 :
从观测得到第一层 latent; 继续从较低层推断较高层; 表示整条推断链的参数。生成链与推断链方向相反: 从抽象 latent 走向数据, 从数据走向 latent。
一般 HVAE 可以让某一层同时依赖多个先前层,而论文选择相邻依赖的 Markovian 版本。这样做大幅简化了联合分布、采样过程和后续 ELBO 的拆解,也是 Diffusion 能被解释为层次 VAE 的结构基础。
Part 1 的 ELBO 推导可以原封不动地应用到整条 latent 链,只需把单个 看成组合随机变量 :
它仍然来自三个相同步骤:对 全部边缘化,在积分中乘 改写成期望,再对对数使用 Jensen 不等式。区别只是积分从一个 latent 扩展为整条 latent chain。将上面的 与 乘积分解代入,就得到 Markovian HVAE 的 ELBO;论文暂时保留这个比值形式,稍后再针对 Diffusion 将它分解成多个 KL 项。
公式解释
生成分布 与推断分布 描述两条方向相反的链。前者必须先给最高层 一个先验,因为生成新数据时没有输入 ;后者以已有数据 为起点,因为它的任务是在训练阶段推断各层 latent。
符号 是一组变量的缩写,不是从 到 的减法或比值。积分 若出现,表示 ,也就是对每一层 latent 都积分。乘积符号则把链上每个局部条件概率组合成完整路径的联合概率。
Markov 性质是可计算性的关键。若每一层都依赖所有其他层,联合分布虽然仍可定义,但条件关系和训练目标会迅速变复杂;相邻依赖让一条长链可以由重复的局部规则描述。
直觉理解
普通 VAE 像一次从“抽象概念”跳到“完整图片”;Hierarchical VAE 像分阶段绘图,先确定大体结构,再逐层加入布局、形状和细节。每一步只处理相邻抽象层级之间的变化,因此单步任务可能比一次完成全部转换更简单。
Markov 性质可以用接力赛理解:第 层把继续生成所需的信息全部交给 。当 已经拿到接力棒后,下一步不必再次询问更早的所有队员。Diffusion 将把这种“多次局部转换”的思想推到极端:使用很多与数据同维的中间状态,每一步只增加或去除少量噪声。
本章总结
- 本章解决了什么问题: 把普通 VAE 的单层 latent 扩展为多层 latent chain,并用 Markov 性质将生成与推断过程分解为相邻条件分布。
- 核心公式: 。
- 需要记住的直觉: 多层 latent 把一次困难的大转换拆成许多局部转换;Markov 性质让每一步只需查看相邻状态。
- 与下一章的关系: 下一章会让每个 latent 与数据同维,把 和 统一重命名为 ,再固定 forward 推断链为逐步加 Gaussian 噪声的过程。
2.2 Diffusion 作为 Hierarchical VAE
背景
原论文给出的核心观点是:Variational Diffusion Model(VDM)并不是与 VAE 完全无关的新模型,而是 Markovian Hierarchical VAE 的一个特殊情况。它在上一章结构上加入三项限制。
第一,所有 latent 的维度与原始数据完全相同。如果 是形状为 的图片,那么每个中间 latent 也具有相同形状。第二,推断链的每一步不再由带参数 的 encoder 网络学习,而是预先规定为线性 Gaussian 转移。第三,噪声强度随层级逐渐变化,使最末端状态的分布接近标准 Gaussian。
这三项限制带来一个重要解释变化:中间 latent 不再主要被看作低维语义编码,而被看作原始数据在不同噪声等级下的版本。层级编号 也常被称为 timestep,但它是离散的算法步骤,不一定对应现实世界中的物理时间。
数学推导
第一步:统一变量名称
普通 Markovian HVAE 的观测是 ,latent 是 。由于 VDM 要求每个 latent 与数据同维,论文进行如下变量替换:
表示真实数据; 表示第 个噪声层级; 表示最末端、接近纯 Gaussian 噪声的状态。符号 表示在后续记号中把它们视为同一个角色。这个替换没有改变概率模型,只是突出所有状态具有相同数据形状,并把层级索引解释为扩散时间。
于是生成链从 变为
这条从噪声到数据的方向是 reverse process,也就是模型真正用于生成的方向。它从简单先验中的 出发,逐步恢复更干净的状态,最终得到数据样本 。
第二步:把推断链固定为 forward process
训练时从真实样本 出发,沿相反方向得到越来越嘈杂的状态:。由于保持 Markov 性质,整条 forward path 的条件分布分解为
是 的缩写; 描述给定干净样本后整条加噪轨迹的联合分布;每个 只负责一次局部加噪。这里不再写 ,因为标准 VDM 的 forward 转移由预先设定的噪声 schedule 决定,不需要训练 encoder 参数 。
论文使用线性 Gaussian 转移。用 表示第 步保留信号的比例,可写为
这个分布以 为均值,以 为协方差。 时,均值中的原信号略微缩小,同时加入非零 Gaussian 方差。通常定义 ,就得到 Part 3 将详细研究的 。平方根、方差与采样形式为何这样配合,将在下一 Part 从 Gaussian 基础开始推导。
第三步:写出 reverse generative model
生成时先从简单末端先验采样
再使用带参数的反向条件分布逐步生成 。完整生成联合分布为
表示从 到 的全部状态; 是已知标准 Gaussian 先验; 是从较噪状态恢复较干净状态的 learned reverse transition; 是去噪网络参数。乘积从 还是从 依次执行并不改变联合概率的数值,但实际采样必须从已经得到的 开始,按 的顺序向 运行。
为什么 forward 使用 ,reverse 使用 ? 是训练时人为规定的推断或加噪分布,我们能够从真实 直接运行它; 是生成模型,需要学习如何逆转信息逐渐丢失的加噪过程。由于许多不同的干净样本都可能在加噪后得到相似的 ,真实的反向分布不是简单地把某个确定函数倒过来,因此必须建模为条件概率分布。
三项限制可以用下面的对应关系概括:
| Markovian HVAE | Variational Diffusion Model | 含义 |
|---|---|---|
| 观测 | 数据 | 把真实样本标记为时间零状态 |
| latent | 噪声状态 | 每个 latent 与数据同维 |
| 固定 | learned encoder 变成预定义 Gaussian 加噪 | |
| 最高层 latent 变成纯噪声先验 | ||
| 层间 decoder 变成 learned denoising step |
公式解释
与 都描述一整条状态链,但方向和用途不同。Forward distribution 以训练数据 为条件,逐步破坏信息,它不是最终要学习的生成模型;reverse joint distribution 以 为起点,逐步恢复信息,才是生成新数据时使用的模型。
末端先验 之所以重要,是因为生成开始时没有任何真实图片可供加噪。模型必须从一个容易独立采样的已知分布开始。Forward schedule 被设计为在足够大的 后,让 几乎不再携带 的信息并接近这个先验,从而把训练过程的终点与生成过程的起点接起来。
Diffusion 中真正学习的是 ,而不是 forward transition。实际实现通常用同一个神经网络处理所有 ,并把 timestep 作为额外输入;数学上仍可把它理解为一族随 变化的条件分布。
直觉理解
可以把 forward process 想成把清晰图片依次复印到越来越差的纸上。每一步只损失少量信息,最终只剩近似随机噪声。Reverse process 则要学习在每一张受损复印件上恢复一点信息。单步恢复仍然有不确定性,但许多小步串联后可以从纯噪声逐渐形成完整图片。
从 VAE 角度看, 全部是 latent variables;从 Diffusion 角度看,它们是同一数据在不同噪声等级下的状态。这两个说法并不冲突。所谓“Diffusion 是 Hierarchical VAE”,正是把同一条概率链分别用 latent hierarchy 和 iterative noising/denoising 两种语言解释。
本章总结
- 本章解决了什么问题: 通过变量同维、固定 Gaussian forward chain 和标准 Gaussian 末端先验三项限制,把 Markovian HVAE 转换成 Variational Diffusion Model。
- 核心公式: Forward 为 ;reverse generative model 为 。
- 需要记住的直觉: 训练时沿 forward chain 把数据逐步变成噪声,生成时沿 reverse chain 把噪声逐步变回数据;中间噪声状态就是层次 VAE 的 latent variables。
- 与下一章的关系: Part 3 将进入 forward diffusion process,解释 、方差、标准差与 Gaussian 采样,并完整推导如何不经过所有中间步骤而直接从 得到任意 。
Part 3:Forward Diffusion Process
Part 2 把 Diffusion 看成一条固定的 Gaussian encoder chain:从真实数据 出发,经过 次局部随机转移得到越来越嘈杂的 。本部分沿论文的线性 Gaussian 假设,先解释一次加噪究竟如何采样,再推导无需依次经过中间状态、可以直接从 得到任意 的闭式公式。
3.1 单步加噪:均值、方差与重参数化采样
背景
Forward diffusion 的任务是有控制地破坏数据。每一步不能一下子抹掉全部信息,否则 reverse model 必须一次完成“纯噪声到图片”的困难映射;它也不能让数值尺度不断膨胀,否则经过很多步以后变量方差会失控。因此论文选择一种 variance-preserving linear Gaussian transition:每一步略微缩小已有信号,同时加入少量 Gaussian 噪声。
第 步的 forward transition 定义为
这是一个条件分布。给定 后, 仍然是随机变量;其条件均值为 ,条件协方差为 。 是与数据维度匹配的单位矩阵,表示每个分量加入方差为 的独立噪声。
是第 步的 noise variance,也叫 noise schedule 中的一个值。通常要求 ,使 为正,并让单步只破坏一小部分信号。整组 决定噪声随时间如何累积;它们可以预先设定,也可以在某些变体中学习。
理解这个公式必须区分方差和标准差。方差衡量平方尺度上的分散程度;标准差是方差的平方根。若一维随机变量 的方差为 ,其标准差就是 。在采样公式中,标准 Gaussian 噪声前面乘的是标准差,而不是方差本身。
数学推导
从一般线性加噪形式开始
先假设第 步采用一般形式
控制保留多少原信号, 控制噪声振幅, 是与 同形状的标准 Gaussian 向量。 表示它的每个分量均值为 、方差为 ,不同分量之间独立。不同 timestep 通常使用彼此独立的新噪声。
在条件 已知时, 是常量,随机性只来自 。因此条件均值为
因为标准 Gaussian 满足 。条件协方差为
乘以常数 会把偏差放大 倍,因此偏差平方的平均,也就是方差,会放大 倍。若希望加入的噪声方差恰好为 ,就必须令 ,即取正标准差 。如果错误地写成 ,所得噪声方差将是 ,并不是定义要求的 。
为什么原信号乘以
接着确定 。为了说明论文的 variance-preserving 选择,假设数据已经大致标准化,使 的每个分量方差约为 ,并且新噪声 与 独立。独立变量线性组合的方差等于各项方差之和,因此
我们已经选定 。若希望 的总体方差仍大致为 ,就令 ,从而 。这解释了均值中平方根系数的来源:信号方差贡献为 ,噪声方差贡献为 ,两者相加仍为 。
代回一般形式,得到关键采样公式:
这个公式来自 Gaussian 的重参数化。它与 完全等价:前一项给出条件均值,后一项的标准差是 ,所以条件协方差是 。
需要注意,“variance-preserving”并不表示某个具体样本的像素幅度在每一步完全不变,也不表示任意未经标准化的数据都严格保持单位方差。它表示在数据近似单位方差且新噪声独立的建模条件下,转移不会系统性地让总体方差随步数爆炸或消失。
公式解释
单步分布中的每个符号都有明确角色: 是离散 timestep; 是较干净状态; 是加噪后的随机状态; 是本步噪声方差; 是信号的标准差尺度系数; 是新噪声的标准差; 表示各维度使用相同方差且相互独立。
分布写法 回答“给定上一状态,下一状态服从什么分布”;采样写法回答“程序里怎样实际产生一个 ”。两者不是两个不同假设,而是同一个 Gaussian transition 的概率形式与计算形式。
没有参数下标 ,因为标准 DDPM/VDM 中的 forward process 是预先规定的。训练并不是让网络学习怎样加噪,而是利用这个已知加噪过程制造训练样本,随后学习未知的 reverse transition。
直觉理解
可以把每一步想成调节一张图片的两个音量旋钮:第一个旋钮把原图音量从 略微降到 ,第二个旋钮把新噪声音量调到 。由于功率对应振幅平方,两路“功率”分别是 和 ,总功率仍约为 。
当 很小时,一次加噪前后的状态非常接近。Forward process 把许多这样的微小随机变化串起来,逐渐删除关于 的信息。Reverse model 因而只需要学习许多局部小修正,而不是一次把纯噪声直接变成完整图片。
本章总结
- 本章解决了什么问题: 从一般线性 Gaussian 采样出发,解释了单步 forward transition 的均值、方差、标准差以及两个平方根系数的来源。
- 核心公式: ,其中 。
- 需要记住的直觉: 是方差,所以噪声振幅是 ;信号与噪声的方差贡献相加为 ,使数值尺度保持稳定。
- 与下一章的关系: 若每次获得 都必须从 连续运行 步,训练会很低效。下一章将把全部中间噪声合并为一个 Gaussian 噪声,直接得到 。
3.2 从 直接得到
背景
Forward chain 的定义是局部的: 只告诉我们如何走一步。但训练 diffusion network 时,经常随机选择一个 timestep ,然后需要立刻构造对应的 noisy sample 。若每次都从 开始依次计算 ,计算量会随 增长。
线性 Gaussian 转移有一个重要性质:若干独立 Gaussian 随机变量的线性组合仍然是 Gaussian。其均值等于各项均值的线性组合;当各项独立时,协方差等于各项协方差之和。正是这个性质允许我们把多步加入的许多噪声合并成一次标准 Gaussian 噪声。
数学推导
第一步:简化符号
定义
是第 步的 signal retention factor,对应本步保留的信号方差比例; 读作 “alpha bar t”,是从第 步到第 步所有 的乘积,不是平均值。由定义可得递推关系 。若约定 ,这个关系对 也成立。
单步采样公式变为
这里只是把 重命名为 ,没有改变模型。新记号使多步相乘更容易阅读。
第二步:先展开两步
第一步和第二步分别为 与 。将 代入 :
信号部分的系数已经变成 。现在处理两个噪声项。令 。因为 与 独立、均值都为零,所以 的均值为零,协方差为
为什么没有两个噪声的交叉项?展开方差时会出现 ;独立且零均值意味着这个交叉协方差为零。又因为独立 Gaussian 的线性组合仍是 Gaussian,所以可以用一个新的标准 Gaussian 表示相同分布:。符号 表示“分布相同”,并不表示对每次具体采样,右侧与原来两个噪声的数值都逐点相等。
因此
两步之后,信号方差比例是 ,累计噪声方差比例是 。这已经显示出最终公式的结构。
第三步:用递推推广到任意
假设在第 步已经有
其中 。把它代入第 步:
根据 ,信号系数变为 。两个独立噪声项的总协方差系数为
因此它们同样可以合并成一个新的标准 Gaussian 噪声 。得到从 直接采样任意 的关键公式:
这里的 是前 步全部独立噪声合并后的等价标准 Gaussian,不必等于某个具体单步使用的 。由于我们只关心给定 后 的分布,可以直接重新采一个标准 Gaussian 来代表累计噪声。
由采样形式读取条件均值和协方差,最终得到
这个分布描述:给定干净数据 ,第 个 noisy state 的平均位置仍沿着 ,但信号幅度缩小为 ;围绕这个平均位置的不确定性由累计噪声协方差 决定。
公式解释
只描述第 个局部步骤; 描述从 到 的累计信号保留。由于每一步都乘一次 ,经过 步后的信号振幅是 。
累计噪声方差不是简单的 ,因为较早加入的噪声还会在后续步骤中被 再次缩放。递推合并后,所有噪声的总方差恰好为 。这就是为什么闭式公式中信号方差比例与噪声方差比例仍相加为 。
这个公式对训练至关重要。训练时可以先随机选择一个 ,再采样一个 ,用一次向量运算直接构造 ,计算复杂度不再随 增长。更重要的是,构造 时使用的噪声 是已知的,它将在 Part 6 成为神经网络的监督目标。
当噪声 schedule 使 非常接近零时, 几乎消失,而 几乎就是标准 Gaussian 噪声。这正好解释了 Part 2 为什么能够把 选作 reverse process 的起点。
直觉理解
可以看成原图信号经过前 个衰减器以后剩下的“累计功率比例”。它从接近 逐渐降向 。相应地, 是累计噪声功率比例,从接近 逐渐升向 。
虽然真实 forward chain 每一步都加入了不同噪声,但 Gaussian 的封闭性允许我们只看起点和终点:许多独立小噪声的加权和,在分布上等价于一个具有正确总方差的大 Gaussian 噪声。因此训练时不需要真的重放整条破坏过程。
本章总结
- 本章解决了什么问题: 完整推导了多步 Gaussian 加噪的闭式分布,使任意 都能由 一步采样得到。
- 核心公式: ,等价地,。
- 需要记住的直觉: 信号系数逐步相乘,独立 Gaussian 噪声的方差逐步相加;最终只需用累计信号比例 描述任意噪声等级。
- 与下一章的关系: Forward transition 与 现在都已知。Part 4 将解释为什么反向条件 仍然未知,以及为什么需要学习 。
Part 4:Reverse Diffusion
Forward process 的每个转移 都由 noise schedule 明确规定,因此给定 后很容易采样 。生成模型却需要沿相反方向从 得到 。本部分将说明随机加噪为什么不能像普通可逆函数那样直接倒过来,并利用训练时已知的干净样本 推导一个解析 Gaussian posterior,作为 learned reverse process 的训练依据。
4.1 为什么已知 Forward Process 仍不知道 Reverse Process
背景
已知函数 时,如果 是一一对应的可逆函数,或许可以写出 。Diffusion 的 forward step 不是这种确定性变换,而是 ,其中每次都会采样未知噪声 。许多不同的 配合不同噪声,都可能产生同一个或非常接近的 。加噪会丢失信息,所以 reverse 不是代数意义上的唯一逆函数,而是“给定 后,哪些 比较可能”的条件分布。
Forward kernel
只回答从某个已知 出发会得到怎样的 。我们真正希望用于反向采样的是 。交换条件方向必须使用 Bayes 公式,而且 Bayes 公式不仅需要 forward likelihood,还需要 与 的边缘分布。
数学推导
对 forward joint distribution 使用 Bayes 公式:
是已知的单步 Gaussian; 是把真实数据分布经过 步加噪后得到的边缘分布; 是经过 步后的边缘分布。这里用下标 强调它是 timestep 的总体分布,而不是给定某个固定 的条件分布。
这些边缘分布需要对真实数据来源进行平均。例如
虽然 Part 3 已知 ,但 是我们只有样本、没有解析密度的真实数据分布。积分把所有可能的干净图片经过加噪后形成的 Gaussian 成分混合起来,得到一个极其复杂的分布。因此 与 通常无法显式计算,Bayes 公式中的反向条件也就未知。
还可以从“所有可能的干净来源”角度写成
这个公式来自全概率法则:给定当前噪声状态 后,先枚举它可能源自的每个 ,再对相应的 加权平均。难点转移到了 ,它要求从 noisy sample 推断未知的真实数据来源,正是生成模型需要学习的能力。
因此,“forward 已知”只表示我们知道怎样破坏一个给定样本,并不表示知道所有真实样本被破坏后形成的总体分布,也不表示知道如何恢复丢失的信息。
公式解释
是人为设定的局部 corruption rule; 是该规则作用于整个真实数据分布后的边缘结果; 是依赖这个复杂边缘分布的真实反向条件。三者都写字母 ,但知道第一个不等于知道后两个。
Bayes 公式中的先验项 很重要。只看 Gaussian likelihood ,任意能够配合某个噪声解释 的前一状态似乎都可能;数据先验会让“像真实图片逐步加噪而来”的状态获得更高权重。Diffusion network 要学习的正是这种无法手写的数据结构偏好。
直觉理解
想象看到一张被严重打码的照片。你知道打码算法怎样把清晰照片变模糊,却仍然不能唯一恢复原图,因为许多清晰照片都可能产生相似的马赛克。若知道自然人脸通常长什么样,就能排除大量不合理恢复结果;这个关于自然图像的知识来自数据分布,而不是来自打码公式本身。
Forward process 像已知的破坏机器,reverse process 像需要经验的修复师。知道机器如何随机破坏物品,并不会自动赋予修复师理解物品结构的能力。
本章总结
- 本章解决了什么问题: 说明了随机加噪不是可逆确定函数,并从 Bayes 公式揭示真实反向条件依赖未知的数据边缘分布。
- 核心公式: 。
- 需要记住的直觉: Forward kernel 只教我们怎样破坏一个已知样本;reverse distribution 还必须知道什么样的干净结构在真实数据中更可能出现。
- 与下一章的关系: 训练数据提供了真实 。下一章将在额外给定 的条件下使用 Bayes,推导可计算的 ,并用它监督 。
4.2 用 Bayes 推导可计算后验,并学习 Reverse Process
背景
生成时我们只有 ,不知道 ;训练时却从数据集取得了干净样本 ,并且能够亲自从 构造 noisy sample 。额外给定 后,单步反向 posterior 可以完全由 forward process 的已知 Gaussian 分布算出。
这个 posterior 不等于生成时真正可直接使用的 。它更像训练阶段的 oracle:它知道当前噪声状态 最终应该回到哪个具体 ,因而能告诉我们合理的前一状态 应服从什么分布。模型 不接收 ,但可以在大量训练样本上学习逼近这种 denoising behavior。
数学推导
第一步:写出带 条件的 Bayes 公式
由 Bayes 公式,
Forward chain 具有 Markov 性质:给定 后, 不再额外依赖更早的 ,所以 。三个因子都已由 Part 3 得到:
分母 保证 posterior 归一化,但在把 posterior 看作关于 的函数时, 与 都已固定,所以分母是常数。为了识别 posterior 的 Gaussian 均值与方差,可以先只保留分子中依赖 的部分。
第二步:展开 Gaussian 指数并配平方
为减少下标干扰,暂时令 。忽略与 无关的归一化常数后,两个 Gaussian 分子的乘积满足
符号 表示两边只差一个与 无关的正常数; 是向量各分量平方之和。展开两个平方,把所有含 的项收集起来,可写成
其中 不含 ,而二次项系数与线性项系数分别为
是标量,因为所有协方差都是单位矩阵的倍数; 是与数据同维的向量; 是内积。利用 , 可化简为
配平方使用恒等式 。最后一项与 无关,可以并入归一化常数。因此 posterior 是 Gaussian,方差系数是 ,均值是 。
第三步:得到 posterior 均值和方差
定义
是给定 与 后, 的 posterior variance;最后一步使用 。posterior mean 为
因此完整解析 posterior 是
均值是 与 的已知加权组合,权重完全由 noise schedule 决定。 提供当前噪声状态, 提供最终应恢复到的干净目标。 仍然大于或等于零,表示即使已知两端状态,中间一步通常仍有随机不确定性。当 且约定 时,,因为 就是已经给定的 ;这个边界情形将在 Diffusion ELBO 中形成单独的 reconstruction term。
第四步:用神经网络近似生成时需要的反向条件
生成时 尚不存在,不能把上面的 oracle mean 直接用于采样。我们定义带参数的 reverse transition
是神经网络给出的反向均值;输入包括 noisy state 与 timestep ; 是反向方差,可以固定为与 相关的已知形式,也可以采用其他参数化。网络没有 输入,必须从训练数据中学会根据 统计性地推断被噪声遮蔽的结构。
训练时,先从数据集采样 ,再由已知 构造 。此时 oracle posterior 可解析计算,于是可以通过减小
来训练反向分布。左侧 可以看见 ,右侧 不能看见 ;在大量 样本上取期望后, 学习的是适用于未知数据来源的 denoising rule。这个 KL 项如何从 Hierarchical VAE ELBO 中系统出现,将在 Part 5 完整推导。
训练完成后,从 开始,依次采样 ,便能沿 逐步生成 。
公式解释
是由 forward process 和训练样本共同决定的真实条件 posterior,它没有可训练参数; 是生成时实际可用的近似 reverse transition,它的参数 需要学习。称前者为“ground-truth denoising distribution”时,指的是给定训练样本 后它可解析计算,并不是说生成阶段能访问真实答案。
与 上方的波浪号用于区分 posterior 参数和 forward 参数。 是 forward 单步噪声方差, 是在同时知道 与 后,对前一状态 剩余不确定性的方差;两者相关但并不相同。
Reverse network 最终可以等价地参数化为预测 、预测噪声 或预测 score。当前先把它写成学习均值 ,三种等价解释将在 Part 7 统一推导。
直觉理解
训练时像是在做带答案的图像修复练习:我们先拿一张清晰图 主动加噪得到 ,所以知道它原来是什么。Bayes posterior 能利用“受损图”和“标准答案”计算上一步合理修复结果的分布。神经网络只看受损图与噪声等级,却在大量带答案练习中逐渐学会自然图像的结构规律。
生成时不再有标准答案,但网络已经学习了统计意义上的修复经验。它从纯噪声开始,每一步都给出一个更可能属于真实数据演化路径的前一状态,许多小步最终累积成完整样本。
本章总结
- 本章解决了什么问题: 使用 Bayes、Markov 性质和 Gaussian 配平方,完整求出了训练时可计算的 ,并说明为什么生成时必须用 近似反向过程。
- 核心公式: 。
- 需要记住的直觉: 带 的 posterior 是训练 oracle,不带 的 learned reverse transition 才是生成时可用的模型;网络通过大量已知干净答案的加噪样本学习去噪先验。
- 与下一章的关系: Part 5 将从 Hierarchical VAE ELBO 出发,把 Diffusion 的训练目标拆成 、 与 ,其中中间项正是这里出现的 posterior 与 learned reverse transition 之间的 KL。
Part 5:Diffusion ELBO
Diffusion 作为 Markovian Hierarchical VAE,原则上仍然通过最大化 ELBO 训练。真正需要解决的问题是:把整条 forward path 与 reverse path 的概率比值,整理成可以解释、可以计算并可以随机估计的损失。本部分严格沿论文顺序先给出直接分解,再说明它为何具有较高 Monte Carlo 方差,最后利用 Bayes 得到标准的 、 与 。
5.1 从 Hierarchical VAE ELBO 到第一种 Diffusion 分解
背景
在 Diffusion 的层次 VAE 解释中, 是观测数据, 是全部 latent variables。Forward inference distribution 与 reverse generative model 分别为 和 。
Part 1 的 ELBO 只有一个 latent ;现在只是把 换成整条 latent path 。推导的逻辑仍然是边缘化、乘以 、改写成期望并应用 Jensen 不等式。
数学推导
第一步:为整条路径构造 ELBO
从观测似然开始:
表示对 全部积分;第二行乘入的 没有改变似然;第三行使用期望定义;第四行利用对数是凹函数的 Jensen 不等式。于是右侧成为 的下界。
将 forward 与 reverse 的 Markov 乘积分解代入:
这里 是 的简写。分子是从 向 的生成路径概率,分母是从 向 的加噪路径概率。
第二步:直接按链上的对应转移分组
先把 reverse product 的第一步 与 forward product 的最后一步 单独取出,再把 reverse product 的索引从 改写成 :
这个式子没有改变任何因子,只是重新排列: 对应链的最终重建, 对应最高层先验,中间每个 同时连接来自较干净状态的 forward transition 与来自较噪状态的 reverse transition。
对乘积取对数后变成求和,并只保留每项实际依赖的随机变量,得到论文的第一种分解:
第一行是 reconstruction term:从第一层 noisy latent 恢复观测 。第二行是 prior matching term:给定 ,最后一步 forward Gaussian 应与标准 Gaussian prior 匹配。第三行是 consistency term:从较干净状态 加噪到 的分布,应与从较噪状态 去噪到 的分布一致。
每个 KL 前都有负号,因为 ELBO 要最大化,而 KL 越小越好。对于 prior term,外层先从 取得条件环境,再计算两个关于 的分布之间的 KL。对于 consistency term,外层需要取得 与 ,KL 内部再比较两个关于同一中间变量 的分布。
第三步:为什么还要重新推导
上述形式理论上正确,也可以用 Monte Carlo 采样估计。但每个 consistency term 同时依赖随机的 与 ;当 很大时还要累加 项。随机估计中涉及的随机变量越多、累加项越多,估计方差通常越大,训练信号会更不稳定。
论文因此没有停在第一种分解,而是寻找一种每个 timestep 最多只需对一个 noisy state 做外层采样的等价 ELBO。这不是更换训练理论,而是利用 Bayes 对同一个概率比重新整理。
公式解释
第一种分解中的三个组成部分与普通 VAE 一一对应并扩展:reconstruction term 对应 decoder 重建;prior matching term 对应最高层 posterior 与先验匹配;新增的一串 consistency KL 负责让相邻 forward 与 reverse transition 在每个中间层协调一致。
Consistency KL 的两个分布都以 为随机变量,但条件不同: 知道更干净的前一状态, 只知道更嘈杂的后一状态。训练希望 reverse model 在缺少干净信息时仍产生与 forward chain 相容的分布。
直觉理解
可以把整条链想成一排相邻房间。Forward process 规定从左边房间走到当前房间的方式,reverse model 学习从右边房间返回当前房间的方式。第一种 ELBO 要求两条路线在每个当前房间汇合,并要求最右端匹配标准 Gaussian、最左端重建真实数据。
这种比较需要同时观察当前房间两侧的随机状态,因此像用两个不断晃动的参照物校准位置。下一种推导会利用已知起点 ,把校准改写成只围绕当前 的 denoising posterior,降低 Monte Carlo 估计的复杂度。
本章总结
- 本章解决了什么问题: 从整条 Hierarchical VAE 路径的 ELBO 出发,得到 reconstruction、prior matching 和 consistency 三类项,并说明第一种分解的估计方差问题。
- 核心公式: ,代入两条 Markov 链后可拆成一个重建项、一个终点 KL 和 个一致性 KL。
- 需要记住的直觉: ELBO 要求 reverse chain 在每个层级都与已知 forward chain 相容;第一种写法正确,但中间项需要同时采样两侧状态,训练估计方差较高。
- 与下一章的关系: 下一章利用 的 Bayes 恒等式重新组织 forward product,得到标准的 。
5.2 低方差 ELBO:、 与
背景
Part 4 已推导出可计算的 denoising posterior 。论文的关键改写是用它替换 forward factor ,使每个中间损失只需先采样一个 ,再在 KL 内部解析处理 。
这里还要注意优化方向。ELBO 是对数似然的下界,需要最大化;深度学习代码通常最小化损失,因此定义负 ELBO。由 可得 。所以负 ELBO 是 negative log-likelihood 的可优化上界,也常称 variational lower bound loss,记为 。
数学推导
第一步:用 Bayes 改写每个 forward transition
由 Part 4 的 Bayes 公式和 Markov 性质,
把等式移项,得到
对 全部相乘,并保留最前面的 :
最后一步发生了 telescoping cancellation(望远镜式消去):边缘比值依次为 、,一直到 。中间分子分母全部抵消,再与开头的 相乘,只留下 。
这条公式说明,同一个 forward path posterior 既可以从 向右分解,也可以在给定 后从 向左分解。后一种分解正好包含训练时可计算的 denoising posterior。
第二步:代回 ELBO 并逐项识别 KL
将新的 分解与 reverse model 代入概率比:
右侧包含三个相乘的部分:终点比值、 和中间比值乘积。取对数后,乘法变为加法。于是
上式与第一种分解是同一个 ELBO,但每个中间项的外层只需从 采样一个 noisy state。KL 内部的 是 Part 4 的解析 Gaussian,不需要再随机模拟整条两侧路径。
第三步:切换为最小化损失并定义三个部分
对 ELBO 取负号,并对训练数据 求平均:
三个部分定义为
命名中的 表示该项训练的是从 恢复 的转移;当 从 到 时,它覆盖 。 位于 latent chain 顶端, 位于数据端。
第四步:逐项解释
衡量 forward process 的终点是否匹配生成模型的起点。由 Part 3,,而 。使用 Part 1 推导的 diagonal Gaussian KL,若数据维数为 ,可得
均值差贡献 ,方差差贡献后面的 倍项。当 schedule 使 时, 几乎等于标准 Gaussian, 接近零。若 noise schedule 固定,这一项不含 ,所以不会训练 denoising network;它仍然必须出现在完整似然界中,因为它验证 forward 终点与 reverse prior 是否衔接。
第五步:逐项解释
是 denoising matching term,也是主要训练成本。Oracle posterior 与 learned reverse transition 分别为 和 。它要求只看 的模型分布逼近同时知道 与 的解析 posterior。
若选择 ,两个 Gaussian 的协方差相同。Gaussian KL 中的 log-determinant、trace 与维数常数互相抵消,只剩均值差:
是由共享协方差的逆矩阵产生的 timestep 权重;posterior 方差越小,均值预测误差受到的惩罚越大。若 使用其他固定值或由模型学习,KL 还会包含方差之间的 log-determinant 与 trace 项,但由于两边都是 Gaussian,仍可解析计算。
第六步:逐项解释
是最后一步 reconstruction term,直接衡量从 生成真实观测 的 likelihood。这里不再写成普通的中间 KL,因为 已经是观察到的数据,而在额外给定 时, 是集中在真实 上的退化分布。
若示意性地设 ,则
是与可训练均值无关的常数。对于离散像素,也可以选择更合适的离散 likelihood;无论具体 decoder 形式如何, 的职责都是保证链的最后一步真正给观测数据高概率。
第七步:随机选择 timestep 估计中间求和
每个训练样本都计算 个中间 KL 代价很高。因为
可以均匀随机选择一个 ,只构造一次 并估计对应损失。 表示离散均匀分布;乘回 后是原求和的无偏估计。实际目标还可能采用非均匀 timestep sampling 或重新加权,但理论 VLB 的来源仍是上述完整分解。
公式解释
三个损失覆盖 chain 的三个位置: 检查最噪端是否接上简单 prior; 训练每个中间 denoising transition; 检查最干净端是否真正重建观测。省略任何一类都不再是完整的 variational likelihood bound。
“最大化 ELBO”和“最小化 ”完全等价,因为后者就是负 ELBO。KL 在 ELBO 中带负号,在 loss 中带正号;reconstruction log-likelihood 在 ELBO 中带正号,在 loss 中变成 negative log-likelihood。
在固定 schedule 的常见设置中, 对网络参数是常数;实际梯度主要来自 与 。但是“对梯度没有贡献”不等于“理论上可以假装它不存在”,它仍解释了为何 forward 终点必须接近 。
直觉理解
可以把完整 Diffusion loss 想成一条从数据到噪声、再从噪声返回数据的铁路验收。 检查最远端车站是否接上统一的 Gaussian 起点;每个 检查一段返程轨道是否与已知 forward 轨道相容; 检查列车最终是否真正回到数据站。
Bayes 重写没有改变铁路本身,只是把“同时观察某一站左右两边”改成“给定起点答案后,检查从当前站返回上一站”。后者每次只需采一个 ,因此更适合随机梯度训练。
本章总结
- 本章解决了什么问题: 利用 Bayes 与望远镜式消去,把高方差 consistency ELBO 改写成标准的 variational loss,并逐项解释 、 与 。
- 核心公式: 。
- 需要记住的直觉: 连接 Gaussian prior, 学习逐步去噪, 保证最终重建数据;三者来自同一个 Hierarchical VAE ELBO,而不是人为拼接。
- 与下一章的关系: Part 6 将继续化简占主导地位的 ,把 Gaussian 均值匹配转换为神经网络预测累计噪声 的均方误差。
Part 6:DDPM Training Objective
Part 5 已把主要的中间损失 化为两个 Gaussian reverse transition 之间的 KL;当协方差固定相同时,它等价于 posterior mean 与 neural mean 的加权均方误差。本部分继续沿论文推导,把“预测反向均值”改写为“预测构造 时加入的累计 Gaussian 噪声”,最终得到 DDPM 最常见的训练目标。
6.1 从 Reverse Mean Matching 到 Noise Prediction MSE
背景
Part 4 的真实 posterior mean 可以写成 与 的线性组合:
其中
这里使用了 。 与 都由固定 noise schedule 决定; 是已知部分,困难只在真实 。因此可以让神经网络从 预测干净样本 ,再定义 neural reverse mean
若网络准确预测 ,neural mean 就等于真实 posterior mean。论文先由此得到 prediction objective,再利用 forward 重参数化把它变成 noise prediction objective。
数学推导
第一步:KL 先化为 预测误差
在 与 使用同一协方差 时,Part 5 已得到
将两个均值的线性形式代入,公共项 抵消:
因此
这说明 reverse mean matching 已经等价于带 timestep 权重的 clean-image regression。权重 与网络参数无关,只由 schedule 和 timestep 决定。
第二步:用 forward 公式表示真实
Part 3 的直接采样公式为
将噪声项移到左侧,再除以 :
这个公式描述什么?训练时我们先采样真实 与噪声 ,再合成 ,所以等式中的所有量都已知。它也说明,若能从 预测累计噪声 ,就能通过简单代数恢复 。
让神经网络输出 ,并用同一代数关系定义隐含的 clean prediction:
真实 与预测 的差为
因此,预测 与预测 不是两项互不相关的任务;给定 和 后,它们通过可逆线性关系一一转换。
第三步:得到严格 ELBO 对应的 weighted noise loss
把上面的差代入 prediction loss,并使用 与 :
定义正权重
则严格由中间 ELBO 项导出的噪声目标是
其中 , 从选定的 timestep 分布采样,,而 。若 reverse variance 选择的不是 ,权重分母中的 会相应替换为该 variance coefficient。
第四步:从 weighted objective 到 DDPM simplified objective
实践中常用的 DDPM simplified objective 去掉了显式的 :
压缩记号后,这正是常见的 。
必须准确理解“变成”的含义。对固定 timestep , 且不依赖 ,所以 weighted 与 unweighted MSE 的最优预测器相同:都要求 逼近真实条件噪声。可是同一个网络共享所有 timestep 时,删除 会改变不同噪声等级对总梯度的相对贡献。因此 不是与完整 VLB 数值完全相等的恒等变换,而是保留相同回归目标、重新平衡 timestep 的实用训练目标。
如果按与 成比例的概率采样 timestep,并做相应归一化,也可以把 weighted sum 写成对无显式权重误差的期望。常见实现则直接均匀采样 并使用 simplified loss,这是一项经验上有效的 objective reweighting。
公式解释
目标中的真实 是构造当前 时使用的累计源噪声。它来自 的一步闭式采样,不是 Markov chain 中最后一次局部转移使用的单步噪声 。网络输出 与 形状相同,逐维估计这份累计噪声。
均方误差 是所有像素或特征维度预测误差的平方和。外层期望表示训练会平均覆盖真实数据、不同 noise level 和不同 Gaussian corruption,而不是只针对一张图片或一个 timestep。
直觉理解
与其要求网络直接画出完全干净的图片,可以让它回答:“当前 noisy sample 中,哪一部分是我人工加入的 Gaussian 噪声?”训练时这份答案由我们亲自采样,因此监督信号免费且精确。去掉预测噪声后,剩余部分就对应干净信号估计。
噪声目标还有一个实用好处:无论 是多少,监督目标始终来自标准 Gaussian,数值尺度相对统一。预测 时,输入在高噪声等级几乎不含可见信号,回归难度随 变化很大;noise parameterization 通常提供更规整的学习问题。
本章总结
- 本章解决了什么问题: 从 Gaussian reverse mean matching 逐步推导出 MSE、weighted noise MSE 和常用 DDPM simplified noise objective,并说明它们的等价范围与权重差异。
- 核心公式: 。
- 需要记住的直觉: 训练时噪声是我们亲自加入的已知答案;预测累计噪声就等价于预测干净数据,并能进一步确定反向 Gaussian 的均值。
- 与下一章的关系: 下一章将把这个目标落实成网络的输入、输出和一次完整训练迭代,并说明预测噪声怎样真正产生 。
6.2 网络输入、输出与“预测噪声为何能够去噪”
背景
数学目标确定以后,神经网络只需要实现一个时间条件函数 。它不接收 ,因为生成阶段不存在真实干净答案;它接收 noisy state 和 timestep ,输出对累计源噪声 的估计。
与输出通常具有相同空间形状。例如输入是 的 noisy image,输出也是 的噪声张量。 通常先编码为 time embedding,再注入网络的多个层。具体网络可以是 U-Net 或其他架构,但概率推导只要求它能表示随 与 变化的函数。
为什么必须输入 ?相同数值范围的 在不同 noise level 下含有不同的信噪比,去噪尺度也不同。若网络不知道 ,就无法判断应把多少结构解释为信号、多少解释为噪声,也无法使用对应的 、 关系。
数学推导
一次完整训练迭代
一次 DDPM noise-prediction 训练迭代可以从目标公式逐项读出:
- 从数据集采样干净样本 。
- 从 采样 timestep ;simplified objective 常使用均匀分布。
- 采样累计源噪声 。
- 一步构造 。
- 计算网络输出 。
- 计算 ,对 batch 求平均并反向传播更新 。
把这些随机步骤写成一个完整期望,就是
公式把网络看到的 直接展开为 与 的组合。训练无需顺序计算 ,也无需知道真实 reverse transition。
从预测噪声恢复
给定网络预测,可以立刻计算 clean estimate:
若 ,将 forward 公式代入后,分子变为 ,再除以 就精确恢复 。网络并非只学到一个抽象噪声标签;它输出的信息足以重建 clean prediction。
从预测噪声得到反向均值
将 代入 Part 4 的 posterior mean 参数化并化简,可得到常用的 epsilon-parameterized reverse mean:
\mu_\theta(x_t,t) =\frac{1}{\sqrt{\alpha_t}} \left( x_t-rac{\beta_t}{\sqrt{1-\bar\alpha_t}} \epsilon_\theta(x_t,t) \right).这个公式的来源不是经验猜测。Part 4 的 posterior mean 为 ;用 替换 ,再使用 与 , 的系数合并为 ,噪声系数合并为 ,正好得到上式。
若 reverse transition 定义为 ,一次反向采样为
估计已经存在于 中的 forward corruption; 是反向 Gaussian sampling 新加入的随机性,两者不能混为一谈。通常在 时采样 ,而最后到 的步骤按所选 decoder 处理,不再加入普通中间噪声。
从 开始,对 重复“预测 、计算 、采样 ”,就得到完整生成过程。由此可见,噪声预测已经充分参数化了每一步 reverse mean,所以能够实际完成去噪采样。
公式解释
网络输入 提供当前 noisy observation,输入 提供 noise level,输出 提供累计 corruption estimate。利用已知 schedule,三者共同确定 与 ;再结合预设或学习的 reverse variance,便确定完整 Gaussian transition。
训练只运行一次随机 timestep,是因为 forward closed form 能直接构造 ;生成仍需按顺序运行多个 reverse step,是因为每个 都依赖当前模型采样得到的 ,不存在训练时那种已知 的直接捷径。
直觉理解
可以把 想成“信号与噪声的混音”。网络根据混音本身和已知的混音比例 ,估计其中的噪声音轨。减去估计噪声并按 schedule 调整音量,就得到原始信号估计;把这份估计代入 Gaussian posterior,就能生成稍微更干净的上一状态。
一次噪声预测不会直接从高噪声 跳到完美图片。它只为当前 timestep 提供正确方向和尺度的局部反向均值,随后新的 又成为下一次预测的输入。许多局部去噪步骤串联,才把标准 Gaussian 转换为数据样本。
本章总结
- 本章解决了什么问题: 明确了 DDPM 网络的输入、输出和监督信号,并从预测噪声推导出 clean estimate、reverse mean 与实际反向采样步骤。
- 核心公式: 。
- 需要记住的直觉: 网络预测的不是随意噪声,而是构造当前 的累计 Gaussian corruption;知道它就能恢复 估计并确定下一步去噪分布。
- 与下一章的关系: Part 7 将把这里的 parameterization 与直接预测 、预测 score 的形式并列,完整证明三种网络输出如何相互转换。
Part 7:Three Equivalent Interpretations
前面已经得到一个可以训练和采样的 DDPM:训练时让网络预测加入 的噪声,采样时再把这个预测代入反向高斯分布的均值。但“预测噪声”并不是唯一的表达方式。同一个反向去噪方向也可以用原始样本 或概率分布的 score 表示。本 Part 将按照论文的顺序证明三种表示如何互相转换,并解释“等价”究竟指什么。
7.1 预测原始样本 与预测噪声
背景
在 Part 3 中,我们把 次前向加噪压缩成了一个公式:,其中
。这个公式同时包含四个量:干净样本 、带噪样本 、时间步 和本次采样的累计噪声 。只要知道其中三个量,就可以通过代数变形求出第四个量。因此,网络输出 还是输出 ,首先是同一条关系的两种参数化。
这里的“参数化”是指:我们仍然要构造同一个反向均值 ,只是选择让神经网络直接输出哪个中间量。它不意味着不同输出的未经加权损失在数值上完全相同;这一点会在本节后面单独说明。
数学推导
先从前向重参数化公式出发:
为了求 ,先把噪声项移到等号左边,得到 ,然后两边同时除以 :
这不是新的概率结论,只是前向公式的代数变形。若网络预测噪声 ,便可以定义相应的原始样本预测
。反过来,若网络直接输出 ,则相应的噪声预测为 。
接下来需要证明:这不只是能够互换两个输出,而且会给出同一个反向转移均值。Part 4 已经推导出真实后验 的均值:
把刚才的 代入第二项,可得
。
现在逐项化简。由于 ,所以 。因此噪声项的系数变成
。两个 项的系数相加为
。
再利用 ,分子为 。它与分母中的 约掉后, 的系数就是 。于是完整结果为
训练时我们不知道反向采样中的真实 和真实 ,所以用神经网络的输出替代它们。若网络预测 ,反向均值写成
。
若网络预测噪声,反向均值写成
只要 与 按前面的转换公式对应,这两个均值就完全相同。也就是说,采样器最终使用的反向高斯分布没有改变,改变的是神经网络描述它的坐标。
最后讨论损失。由真实 与预测 的两个重构公式相减,可得
,因而
所以,两种误差只差一个由时间步 决定的系数。若为损失配上相应权重,它们表示同一个优化问题;若都直接使用“不加权 MSE”,它们会以不同强度训练不同时间步,优化轨迹和实际效果可能不同。
公式解释
前向公式 描述从数据 一步采样任意噪声级别 的方法。 是原始数据, 是第 步的带噪数据, 是与数据同形状的标准高斯噪声,,而 。 控制保留多少原始信号, 控制加入多少累计噪声。这个公式之所以需要,是因为所有三种参数化都从它出发。
描述在知道 和本次真实噪声 时如何精确还原 。分子先从 中减去噪声分量,分母再撤销信号缩放。Diffusion 网络并不知道真实 ,但可以用 代替它,从而得到 。
反向均值公式中的 是已知 和真实 时, 的后验均值; 是模型用网络预测近似出来的均值; 是第 步新增噪声的方差。反向均值公式把网络输出真正连接到了生成过程:网络本身并不是直接输出下一张图,而是提供构造 所需的均值。
误差换算公式描述了两种参数化的尺度差异。当天然信号已经很弱,即 很小时,系数 会很大。因此,在各时间步上直接使用相同权重的 -MSE,与直接使用相同权重的噪声 MSE 并不是同一个训练偏好。它在 Diffusion 中提醒我们区分“表达能力等价”和“具体损失加权等价”。
直觉理解
可以把 想成一杯由“原图信号”和“随机噪声”按已知比例混合的液体。预测 是直接说出其中原图成分的内容;预测 是先说出噪声成分,再用总混合物减去它。只要混合比例已知,两种答案可以互相换算。
但是,数值尺度会随 改变。早期的 几乎就是 ,从中预测原图较容易;晚期的 几乎都是噪声,一个很小的噪声预测误差在除以 后可能变成很大的 误差。因此,选择输出参数化也隐含了如何平衡不同噪声级别的训练问题。
本章总结
本章解决了什么问题: 本章证明了预测原始样本 与预测累计噪声 都能构造同一个反向去噪均值,并说明了参数化等价不等于未经加权的训练损失完全相同。
核心公式: 两个输出通过 与 互相转换;噪声参数化的反向均值为 。
需要记住的直觉: 预测原图是在估计混合物中的信号,预测噪声是在估计需要从混合物中减掉的部分。二者包含相同信息,但不同的损失尺度会改变各时间步受到的训练权重。
与下一章的关系: 下一章将引入第三种表示——score。它不直接回答“原图是什么”或“加入了什么噪声”,而是回答“在当前带噪数据空间中,朝哪个方向移动会进入概率更高的区域”。
7.2 预测 Score 并统一三种参数化
背景
论文的第三种解释是让网络预测 score function。对一个密度 ,score 定义为 。符号 表示对向量 的每个分量分别求偏导并排成一个向量;这个向量指向
增长最快的方向。由于对数函数严格递增,增加 也就是增加 ,所以 score 可以直观理解为“走向更高概率密度区域的方向”。梯度与 score 的基础会在 Part 8 进一步展开,本节先专注于它与 、 的代数和概率关系。
这里必须区分两个分布。给定某个固定 时,前向条件分布是 。如果先从真实数据分布 抽取 ,再对它加噪,所有可能的 混合后形成第 步的边缘分布
。论文有时把这个边缘密度简写成 ;本教程写成 ,以免与反向生成模型 混淆。
数学推导
先计算条件分布的 score。令 ,则高斯密度的对数可以写成
,其中 收集所有与 无关的常数。向量平方距离对 的梯度是 ,所以
最后一个等号使用了 。这条等式对一次已知 和 的前向采样逐样本成立,但左边是条件 score ,还不是网络在只看到 时需要学习的边缘 score。
下面从条件 score 推导边缘 score。先对 求梯度:
。
这一步把梯度移入积分;在这里高斯核足够光滑且衰减良好,因此可以这样交换求导与积分。再用 ,并把 写成 ,得到
。
根据 Bayes 公式,分数
正是给定 后 的后验密度 。因此这个积分就是条件期望:
为什么 Part 6 的噪声网络恰好能够提供这里的 ?设网络能看到的输入为 ,训练目标为随机变量 ,并记 。对任何预测函数 ,有平方误差分解
。
推导方法是先写 并展开平方。交叉项的期望为零,因为给定 时, 是固定的,而 。第一项与 无关,第二项非负,只有 时达到最小。因此无限数据、足够模型容量和充分优化下,噪声 MSE 的最优预测为
。时间步 已经决定了当前分布,最后一个等号只是省略了已知的 。代入边缘 score 公式便得到模型输出之间的关系
接着推导 与边缘 score 的关系。把条件 score 的第一种形式放入条件期望,有
。这里 已经给定,所以它可以直接移出条件期望。移项后得到高斯加噪情形下的 Tweedie 公式:
这个公式描述什么? 是当前带噪样本, 是把它推向更高数据密度区域的修正方向, 按噪声方差调节修正幅度,最后除以 撤销前向过程对信号的缩放。它从边缘 score 的定义和高斯条件 score 推导而来,在 Diffusion 中把 score 网络的输出转换为最佳平方误差意义下的干净样本估计。
需要注意,若知道一次采样所用的真实 ,Part 7.1 的公式可以精确恢复该次的 ;但网络只看到 ,同一个 可能由多个 与噪声组合产生,所以一般只能得到后验平均 ,而不能确定那一次唯一的真实 。
现在可以把三种网络输出放在同一张换算表中:
| 网络直接输出 | 转换为 | 转换为 | 转换为 |
|---|---|---|---|
| 本身 | |||
| 本身 | |||
| 本身 |
最后验证 score 如何进入反向采样。把 代入噪声形式的反向均值:
因此,score 乘以 后就是反向均值相对于缩放后 的修正方向。由于 score 指向更高的带噪数据密度,这个修正会把随机噪声逐步推回数据分布。
三种表示的损失尺度同样可以换算。对一次训练样本,条件 score 目标为
。因此
。
右边监督的是可计算的条件 score;在期望意义下,它的最优预测正是边缘 score。和上一节一样,若忽略这个随 变化的系数,不加权的噪声 MSE 与不加权的 score MSE 会强调不同的噪声级别。
公式解释
描述第 个噪声级别上所有带噪样本的总体分布。积分变量 遍历所有可能的干净数据, 表示数据出现的密度, 表示该数据被加噪成 的密度。需要这个公式,是因为采样时网络只有 ,不知道它具体来自哪个 ,所以网络面对的是混合后的边缘分布。
条件 score 公式
描述在已知干净样本时,高斯密度的上升方向恰好与所加噪声方向相反。负号表示去噪应逆着噪声移动,分母表示相同大小的噪声在不同噪声方差下应使用不同尺度。
边缘 score 公式
描述网络实际能够学习的目标。条件期望 是在所有可能产生当前 的噪声中,按照后验概率加权的平均值。需要条件期望,是因为网络输入没有包含那次随机采样的 ;MSE 训练会自动把无法从输入确定的目标平均起来。
Tweedie 公式描述如何由 noisy marginal 的 score 得到干净样本的后验均值。它不是凭空加入的新结论,而是把高斯条件 score 对未知 取后验平均后再移项得到的。它在 Diffusion 中建立了 score 参数化与 参数化的直接桥梁。
反向均值 描述 score 如何真正影响一步生成:先沿高密度方向修正 ,修正强度由本步噪声方差 控制,再用 撤销本步的信号缩放。它与 形式和 形式是同一个反向均值。
直觉理解
三种预测可以看作回答同一个去噪问题的三种问法。预测 回答“干净终点在哪里”;预测 回答“这次污染大致把我推向了哪里”;预测 score 回答“从当前位置出发,哪个方向更像数据”。已知噪声日程后,终点、污染方向和高密度方向之间可以确定地换算。
不过,面对一张严重受损的图,网络不可能知道前向过程当时抽到的那一个随机噪声。MSE 让网络给出所有合理解释的平均噪声,这个平均噪声的反方向恰好等于边缘分布的 score。于是“预测随机噪声”并不是要求网络读心,而是在用容易合成的监督信号学习概率密度的局部方向。
本章总结
本章解决了什么问题: 本章从高斯条件密度出发,补全了条件 score、边缘 score、噪声预测与干净样本预测之间的推导,并说明了为什么噪声 MSE 的最优网络输出会成为边缘 score。
核心公式: 三个核心关系为 、
,以及
。
需要记住的直觉: 单次噪声的反方向是已知 时的条件 score;把所有可能来源按后验概率平均,才得到只依赖 的边缘 score。网络通过噪声 MSE 学到的正是这个平均方向。
与下一章的关系: 本 Part 已经从 VAE/DDPM 的推导得到 score,但还没有系统解释梯度场、score matching 和 Tweedie 公式为什么能支撑一种独立的生成模型观点。Part 8 将进入 Score-based Model,从这些基础概念出发重新理解扩散生成。
Part 8:Score Based Model
Part 7 是从 VAE/DDPM 的反向均值出发,通过 Tweedie’s Formula 得到 score 参数化。本 Part 按照论文接下来的逻辑换一个起点:先把概率分布写成 energy-based model,再解释为什么 score 能绕过难算的归一化常数、如何用 score matching 学到它,以及如何通过 Langevin dynamics 生成样本。最后,我们会看到多噪声级别的 score-based model 与离散 Diffusion 在训练目标和采样过程上描述的是同一件事。
8.1 从梯度到 Score:概率密度空间中的方向
背景
理解 score 之前,需要先补回导数、偏导数和梯度。导数不是一个需要死记的符号,而是在回答“输入发生极小变化时,输出以多快的速度变化”。对于一元函数 ,导数定义为 。其中 是输入的微小改变量,分子是相应的输出改变量,两者之比是平均变化率;当 趋近于零时,得到当前位置的瞬时变化率。
图像不是一个标量输入,而是一个高维向量。若一张图有 个数值,便可写成 。函数 对第 个分量的偏导数 ,表示只改变 、暂时固定其他分量时, 的变化率。把所有偏导数排成向量,就得到梯度 。
数学推导
第一步:证明梯度是增长最快的方向
梯度的定义为
这个公式描述 对每个输入维度的局部敏感程度。为了知道整个向量向某个方向移动时会发生什么,令 表示一个很小的位移。一阶 Taylor 近似给出 。这里的上标 表示转置,因此 是两个向量的内积,也就是各分量乘积之和。
为什么这个近似成立?在一维中,导数的局部线性定义给出 。多维时,每个分量分别贡献 ,把它们相加便得到 。
现在固定移动距离 。根据 Cauchy-Schwarz 不等式,。等号只在 与 同方向时取得。因此,在允许移动相同距离的所有方向中,沿梯度方向移动会带来最大的一阶增长;梯度的方向告诉我们往哪里走,梯度的长度告诉我们局部增长有多陡。
第二步:从概率密度得到 score
设连续数据的概率密度为 。密度 不是“恰好取到单点 的概率”,而是单位体积附近集中了多少概率;小区域 的概率由 给出。score function 定义为
这个公式描述概率密度的对数在数据空间中的梯度。 是 score 向量, 是自然对数, 表示对数据坐标而不是模型参数求梯度。由链式法则,。只要 ,正数 只改变向量长度,不改变方向,所以 score 与密度本身的梯度指向相同的上升方向。使用对数的好处是把密度的巨大尺度差异压缩,并把乘法结构变成加法结构。
若 位于一个光滑的局部众数,也就是附近概率密度的峰顶,那么一阶方向已经没有继续上升的空间,通常有 。因此,score 在整个空间中形成一个向量场:空间中每一点都有一支箭头,箭头大体指向附近的高密度区域。
第三步:score 如何绕过 energy model 的归一化常数
论文从 energy-based model 出发,把一个灵活的概率模型写成
是由参数 控制的能量函数,能量越低,未归一化权重 越大; 只是积分中的占位变量; 把所有位置的未归一化权重加总,使 。复杂神经网络定义的 可以表达复杂分布,但高维积分 往往无法精确计算,这使最大似然中的 难以求值。
对概率模型取对数,可得 。接着对数据 求梯度:
最后一个等号成立,是因为 虽然依赖参数 ,却不依赖当前数据坐标 ,所以对 的梯度为零。这条推导说明:只学习概率密度的局部方向时,不必知道全局归一化常数。我们可以用神经网络 直接近似真实 score 。
公式解释
导数定义 描述一维函数的局部变化率;梯度公式则把这一概念推广到多维输入。Taylor 近似说明梯度如何预测一次微小移动带来的函数变化,Cauchy-Schwarz 不等式进一步证明了梯度方向是固定移动距离下的一阶最快上升方向。这些公式之所以需要,是因为“score 指向高概率区域”不是比喻,而是梯度定义的直接结果。
score 公式 中, 是数据向量, 是其概率密度, 与 形状相同。对图像而言,每个 score 分量表示稍微改变对应像素或特征时,对数密度如何变化。它在生成模型中的作用不是直接给出概率值,而是提供让样本朝高密度区域移动的局部导航信息。
energy model 公式中的负号表示低能量对应高概率, 则保证概率总量为一。对 求 score 后, 消失,因此 score-based model 可以绕过高维归一化积分。但它只绕过了“算归一化常数”的困难,并没有自动解决“真实 score 从哪里来”的问题;这将由下一章的 score matching 处理。
直觉理解
可以把 想成高维地形的海拔,score 就是每个位置的最陡上坡箭头。我们不知道整张地形图的绝对海拔,也不知道统一的海拔零点,但只要知道脚下最陡的上坡方向,仍然能够向山峰移动。归一化常数 只给整个密度添加同一个对数偏移量,就像把整张地形图整体抬高;它不会改变任何位置的坡度,所以求梯度后自然消失。
本章总结
本章解决了什么问题: 本章从导数和偏导数出发,证明了梯度为何表示最快上升方向,并从 energy-based model 推导出不含归一化常数的 score。
核心公式: 核心关系是 ,以及 energy model 对应的 。
需要记住的直觉: 概率密度给出“哪里更常见”,score 给出“从当前位置往哪里会更常见”。它是一张局部导航图,而不是概率密度本身。
与下一章的关系: score 避开了难算的归一化常数,但真实数据分布 仍然未知,因此也不能直接计算它的 score。下一章将推导如何只用数据样本训练 score,并解释如何沿 score 生成样本。
8.2 Fisher Divergence、Langevin Dynamics 与 Score Matching
背景
若真实 score 已知,最自然的训练方法是让网络 拟合它。问题在于数据集只提供若干样本 ,并不会告诉我们 的解析表达式,更不会直接提供 。论文先写出理想目标,再说明 score 可以用于 Langevin dynamics 采样,随后指出必须借助 score matching 才能在未知真实 score 的情况下训练。
还需要补充两个概念。Fisher divergence 衡量两个分布的 score 之间有多大平方差;Markov chain 则是一串随机状态,其中下一状态只依赖当前状态和新抽取的随机噪声,而不需要保存更早的完整历史。Diffusion 的前向链和反向链都是 Markov chain,Langevin dynamics 也会构造一条这样的链。
数学推导
第一步:写出理想的显式 score 目标
令 ,理想训练目标为
这个公式描述在真实数据较常出现的位置上,网络 score 与真实 score 的平均平方距离。期望 表示训练位置按数据分布抽取, 把各维误差平方后相加,前面的 只是为了求导时抵消平方产生的系数 。当目标达到零时,两套向量场在数据分布覆盖的位置完全一致。论文把这一类差异称为 Fisher divergence。
但是,损失中的 无法由有限数据集直接计算,所以这个式子目前只是“希望做到什么”,还不是可执行的训练算法。
第二步:由 score 构造 Langevin dynamics
假设暂时已经拥有准确的 score。从初始点 出发,Langevin dynamics 使用下面的迭代:
这里 是采样迭代编号,避免与 Diffusion 的噪声时间步 混淆; 是很小的步长;第一项保留当前位置,第二项沿 score 上坡,第三项加入新的标准高斯噪声。
这个离散公式来自连续 Langevin 随机过程的一小段时间近似。在长度为 的时间间隔内,确定性的速度 累积出位移 ;标准 Brownian motion 的增量在每个维度上方差为 ,写成 ,再乘扩散强度 就得到 。把当前状态、确定性位移和随机位移相加,便得到上面的 Euler-Maruyama 离散步。
为什么不能只做 ?没有随机项时,这是对 的梯度上升,轨迹会确定地停在某个众数附近;相同起点每次都会得到相同结果,而且样本容易坍缩在峰顶。随机项使轨迹能够在高密度区域附近波动,也可能在多个可达区域之间探索。在准确 score、足够小步长和充分迭代等条件下,这条随机链的平稳分布接近目标 ,所以保留下来的状态可以看作来自目标分布的样本。
第三步:用分部积分消去未知的真实 score
现在回到不可计算的显式目标。展开平方并把与 无关的项记为常数 :
。
由于 ,交叉项可写成 。按坐标展开,它等于 。
一维分部积分公式是 。对每个坐标 使用它,并假设当 时边界项 ,便有
。
对所有维度求和,定义向量场的散度 ,就得到
与 只相差不依赖 的常数 ,所以具有相同的最优解。新目标只需要从数据集中采样 、计算网络输出以及网络输出对输入的导数,不再需要真实 或真实 score。这就是经典 score matching 的核心。
公式解释
显式 Fisher divergence 描述“想让模型向量场匹配真实向量场”的最终目标。它的每个符号都有明确角色: 决定在哪些位置评估, 是待训练网络, 是未知目标,平方范数衡量方向和长度的误差。它在理论上定义了正确答案,却因真实 score 未知而不能直接训练。
Langevin 公式描述如何把局部 score 变成全局采样过程。步长 同时控制确定性移动和噪声方差; 每一步重新采样,所以整个过程具有随机性。score 项将样本拉向高密度区域,噪声项防止所有轨迹只做确定性爬山。这个公式解释了为什么“只学习导数而不学习密度值”仍然能够生成数据。
隐式 score matching 公式中的 衡量向量场在一点附近总体向外发散还是向内汇聚。它来自显式损失交叉项的分部积分,而不是额外猜出的正则项。这个目标可以从数据样本估计,但高维散度的精确计算可能昂贵;Diffusion 更常使用下一章介绍的 denoising score matching,它为每个加噪样本构造一个直接可算的监督目标。
直觉理解
显式目标像是要求学生模仿一张看不见的标准答案图。分部积分所做的事情,是把“标准答案的导数”转移到我们能够求导的神经网络上,从而只凭题目样本判断向量场是否合理。学会向量场后,Langevin dynamics 像一名带有随机探索的登山者:大体沿上坡走,但每一步都会抖动,因此最终不是永远停在同一个山尖,而是在符合目标概率的区域中游走。
本章总结
本章解决了什么问题: 本章说明了理想 score 学习目标、score 如何驱动 Langevin 采样,以及如何通过分部积分把含未知真实 score 的 Fisher divergence 改写成可训练的 score matching 目标。
核心公式: 训练端的核心是 ;采样端的核心是 。
需要记住的直觉: score matching 负责学习“往哪里走”,Langevin dynamics 负责真的沿这些方向移动并保留随机性。二者合起来才构成 score-based generative modeling。
与下一章的关系: 经典 score matching 仍会在图像流形、低密度区域和互不连通的模式上遇到困难。下一章将按照论文的分析说明这三个问题,并证明 Gaussian 加噪为何能同时缓解它们。
8.3 Gaussian Perturbation、Denoising Score Matching 与 Tweedie
背景
论文接着指出 vanilla score matching 的三个困难。第一,自然图像通常被认为集中在高维像素空间中的低维流形附近;流形外的密度可能为零,于是 和它的梯度没有良好定义。第二,score 目标的期望按 加权,低密度区域几乎不给训练信号,但生成时的初始随机噪声恰恰可能位于这些区域。第三,对于彼此不相交的多个模式,局部 score 可能丢失各模式的全局混合权重,使 Langevin 链难以正确地在模式之间混合。
Gaussian perturbation 的核心做法是先给真实数据加入高斯噪声,再学习扰动后分布的 score。高斯分布在整个 上都有正密度,因此扰动后的分布不再只落在原来的低维流形上;较大的噪声还会扩大各模式覆盖的区域,让远离数据的地方也得到学习信号。更重要的是,高斯条件分布的 score 有解析解,这会导出 denoising score matching。
数学推导
第一步:看清三个困难的数学来源
若 不在数据流形上且 ,则 ,无法像普通光滑函数那样求梯度。低密度问题则直接来自 :某个区域的 越小,它对损失和梯度的贡献就越小。
对混合问题,设两个分量的支撑集互不相交,,其中 且 。当 位于只有第 个分量非零的区域时,,所以 。常数权重 被梯度消掉了,因此局部 score 不再告诉采样器该模式应占多大比例。这个结论依赖“分量不相交”;若分量明显重叠,后验分量权重仍可能影响局部 score。
第二步:定义 Gaussian 扰动分布
从 抽取真实数据,再采样 ,并令 。给定 时, 服从 。把未知的 积分掉,得到扰动后的边缘密度
这个公式是数据分布与 Gaussian kernel 的卷积。 决定干净样本从哪里来, 决定它被扰动到哪里,积分把所有可能来源相加。只要 ,高斯核在整个空间为正,因此通常有 。
第三步:求出可计算的条件 score
Gaussian 条件密度的对数为 ,其中 与 无关。对 求梯度,平方距离贡献 ,所以
这个公式描述已知干净来源 时,带噪点的 Gaussian score。负号表示它指回 Gaussian 中心 ; 是噪声方差;最后一个等号使用 。训练时 、 和 都由我们自己采样,因此这个条件 score 可以直接算出。
第四步:证明 denoising score matching 学到边缘 score
用神经网络拟合上面的条件 score,得到单噪声级别的 denoising score matching 目标:
式子中的加号来自目标是 :预测减目标等于 。这个损失只依赖数据样本和人工噪声,不需要知道 的密度。
但网络输入只有 和 ,同一个 可能由不同 与 产生。根据 Part 7 证明过的平方误差条件期望性质,最优预测是监督目标在给定输入后的条件平均:
。
再对边缘密度求梯度,并像 Part 7 那样把求导移入积分,可得
。
因此,虽然每条训练样本提供的是条件 score,MSE 回归的总体最优解恰好是扰动后边缘分布的 score。这里必须保留条件期望:某次抽到的 并不逐样本等于边缘 score。
第五步:从边缘 score 推导 Tweedie’s Formula
把条件 score 的第一种形式取条件期望:
。
两边乘 并移项,得到
这就是 Gaussian 加性噪声下的 Tweedie’s Formula。它描述给定带噪观测后,平方误差意义下最优的干净样本估计等于“当前观测加上噪声方差乘 score”。它不是额外假设,而是 Gaussian 条件 score 与 Bayes 条件期望的代数结果。
DDPM 的前向均值不是 ,而是 。把 看作均值为 、方差为 的 Gaussian 观测,同一推导便给出 ,正是 Part 7 使用的 Diffusion 版本。
公式解释
扰动分布 描述“干净数据先按 出现,再被方差 的 Gaussian 模糊后”的总体密度。它的 support 通常覆盖整个空间,从而修复流形外 score 无定义的问题; 越大,分布越平滑,远离原始数据的位置也越可能获得训练信号。
条件 score 是人为加噪后能够精确计算的监督标签。DSM 公式把这个标签与网络输出做 MSE;它之所以能学习边缘 score,是因为平方误差会对输入无法确定的随机目标取条件平均,而条件 score 的后验平均正好等于边缘 score。
Tweedie 公式中的 是带噪观测, 决定应该沿 score 修正多远, 给出朝高密度区域的方向。它在 score-based model 中把“概率地形的坡度”转化成实际的去噪估计,也把 DSM 与 Part 7 的 /noise/score 三种参数化连接起来。
直觉理解
原始图像分布像一张极薄、断裂而陡峭的山脉地图:离开山脊后几乎没有可用坡度,随机初始化的旅行者不知道该往哪里走。Gaussian 加噪像用不同粗细的刷子把山脉晕开。粗刷子让远处也能看到大致方向,细刷子保留精细结构。训练时,我们知道每个带噪点是从哪个干净点被推出来的,所以“往回指”的向量很容易构造;大量样本的平均回指方向,就是平滑后分布的 score。
本章总结
本章解决了什么问题: 本章解释了 vanilla score model 的三个困难,推导了 Gaussian 条件 score 和 DSM 目标,并证明 DSM 的最优解是扰动后边缘 score,随后从同一等式推出 Tweedie’s Formula。
核心公式: DSM 使用可计算目标 ;其总体最优解满足 ;Tweedie 公式为 。
需要记住的直觉: 单个条件 score 是“从这次带噪点指回其来源”的箭头;边缘 score 是所有可能来源箭头的后验平均;Tweedie 把这支平均箭头乘以噪声方差,得到最佳去噪修正。
与下一章的关系: 单一 面临平滑程度的取舍:大噪声便于全局探索但缺少细节,小噪声保留细节却难以从随机区域开始。下一章将把多个噪声级别串起来,得到 Noise Conditional Score Network 和 annealed Langevin dynamics。
8.4 多噪声级别、Annealed Langevin 与 Diffusion 的统一
背景
论文用一组逐渐变化的 Gaussian 噪声同时解决全局探索与精细生成。设 : 最大,对数据分布进行最强平滑; 最小,最接近真实数据。一个共享网络 接收样本和噪声级别索引 ,学习每个扰动分布的 score。这类模型常被称为 Noise Conditional Score Network。
训练之后,采样从最大噪声级别开始,在每个级别运行若干步 Langevin dynamics,再把结果交给下一个更小的噪声级别。这个过程叫 annealed Langevin dynamics。“Annealed”可以理解为逐步降温:早期允许大范围随机探索,后期逐渐减小噪声和步长,收敛到细致的数据结构。
数学推导
第一步:定义一族扰动分布
对每个 ,定义
。
这与上一章的单噪声公式相同,只是现在有 个不同平滑程度的分布。网络的理想多尺度目标为
是第 个噪声级别的损失权重。需要它是因为条件 score 的典型尺度约随 变化:小噪声下目标可能更大,不加权时各级别对总梯度的贡献可能严重不平衡。具体权重属于训练设计;它不会改变每个单独级别的理想目标,却会影响有限模型如何分配容量。
真实边缘 score 仍然未知,所以实际使用 DSM 形式。采样 、、,令 ,便可最小化
这个公式中的输入是带噪样本 和噪声级别 ,输出是与 同形状的 score 向量,监督目标是可计算的条件 score 。对每个 应用上一章的条件期望证明,网络的总体最优输出就是 。
第二步:推导 annealed Langevin 采样
从易于采样的高噪声初始分布得到 。随后按 依次处理,每个级别运行 步:
在同一级别内, 是 Langevin 迭代编号;完成后把 作为下一个较低噪声级别的初始状态。较大的 对应平滑分布,score 容易提供全局方向;随着 下降,通常也减小步长 ,让采样器逐渐关注细节。最终状态接近最低噪声分布;若 足够小,它便近似真实数据分布。
第三步:与离散 Diffusion 的训练目标对应
DDPM 的前向条件分布是
,对应采样式 。其条件 score 为
。
因此,DDPM 的 noise-prediction MSE 与 DSM 只差一个已知尺度和时间权重:若定义 ,那么拟合噪声就等价于拟合 Gaussian 条件 score,期望最优解是 noisy marginal 的 score。
NCSN 常写成 ,而 DDPM 还把信号乘以 。把 DDPM 变量除以该系数可得
所以在重新缩放的坐标中,DDPM 也是逐渐增大的加性 Gaussian 扰动,有效噪声标准差为 。两类模型的具体噪声日程和损失权重可以不同,但它们都在多个 Gaussian 噪声级别上学习 score。
第四步:与采样过程及连续时间的对应
Annealed Langevin 从大噪声分布开始,依次使用越来越精细的 score;DDPM 从 开始,依次采样 。二者都把一个简单的高噪声初始分布沿递减噪声级别逐步变成数据分布。前者从 MCMC/向量场角度描述,后者从反向 Markov transition/HVAE 角度描述。
当噪声级别数 、相邻级别差异趋近于零时,离散加噪链可以视为连续时间随机过程,并用 stochastic differential equation(SDE)描述。生成过程对应反转这个随机过程,而反向漂移需要每个连续时刻的 score。论文在这里指出:score-based 视角使“无限时间步 Diffusion”自然过渡到连续时间模型;不同 SDE 参数化对应不同的连续加噪方案。
公式解释
多尺度训练目标描述一个网络同时拟合 个扰动分布的 score。 告诉网络当前噪声级别, 平衡不同级别,期望保证训练覆盖相应的带噪样本。DSM 版本把未知边缘 score 替换成可采样的 Gaussian 条件 score,因此真正可用于随机梯度训练。
Annealed Langevin 公式与单尺度 Langevin 形式相同,区别在于 score、步长和当前分布都随 改变。大噪声阶段负责跨越低密度间隔、选择全局模式;小噪声阶段负责沿细致 score 恢复局部结构。每一级别的末状态成为下一级别的起点,这让不同尺度形成连续的生成路径。
DDPM 重缩放公式说明 NCSN 与 VDM 并非表面相似:二者的 forward corruption 都能写成“干净信号加 Gaussian 噪声”,而 noise prediction 与 score prediction 通过确定比例互换。它们的训练目标都属于多噪声级别 DSM,采样过程都沿噪声由大到小的顺序细化样本。
直觉理解
如果只拿一张极精细的地图,从完全陌生的远方出发时,很可能连目标城市在哪个方向都不知道;如果只拿一张世界地图,又无法找到最后一条街。多噪声 score network 同时学习从世界地图到街道地图的一整套导航。Annealed Langevin 先按粗地图完成大范围移动,再不断切换到更精细的地图。Diffusion reverse process 采用不同的概率语言安排同一段旅程。
本章总结
本章解决了什么问题: 本章把单噪声 DSM 扩展为多噪声 score network,解释了 annealed Langevin 采样,并从训练目标、Gaussian 扰动和递减噪声采样三个层面建立了 Score-based Model 与 Variational Diffusion Model 的对应。
核心公式: 多尺度 DSM 为 ;annealed Langevin 使用 ;DDPM 与 score 的转换为 。
需要记住的直觉: 大噪声 score 提供可靠的全局方向,小噪声 score 恢复精细结构。把多个尺度从粗到细串联,就是 score-based sampling;用反向概率转移描述同一过程,就是 Diffusion sampling。
与下一章的关系: 到这里我们一直学习无条件分布 ,只能控制“像数据”,不能指定“生成哪一类数据”。Part 9 将在 score 和 noise parameterization 上加入条件 ,依次推导 Conditional Diffusion、Classifier Guidance 与 Classifier-Free Guidance。
Part 9:Guidance
前面的所有推导都在学习无条件数据分布 :模型知道“真实数据大致长什么样”,却不能接受“生成猫”“生成某个类别”或“把低分辨率图放大”这样的控制信息。Guidance 研究的就是如何学习和强化条件分布 。论文用 表示条件,本教程统一写成 ;它可以是类别标签、文本编码、低分辨率图像或其他控制信号。
本 Part 按论文顺序分三步。首先,把条件直接加入每一步 reverse process,得到 vanilla conditional diffusion。其次,用 Bayes 公式把 conditional score 拆成 unconditional score 与噪声分类器的梯度,得到 Classifier Guidance。最后,用 conditional score 和 unconditional score 的差替代分类器梯度,得到 Classifier-Free Guidance,并从概率重加权角度解释 CFG 为什么有效。
9.1 Conditional Diffusion:从 到
背景
条件概率 表示“已知条件 后,数据 的分布”。例如,无条件分布 混合了所有类别的图片,而 只描述满足“猫”这一条件的图片。条件不是给最终样本贴一个事后标签,而是在整条生成路径中改变每一步应该朝哪里去噪。
条件概率来自联合概率。联合分布可以按两种顺序分解为 。把两边的 除掉,便得到 Bayes 公式 。本章先用第一种分解构造条件生成模型,下一章再用 Bayes 公式推导 guidance。
数学推导
第一步:给整条反向链加入条件
无条件 Diffusion 的生成联合分布为
。
这个公式描述先从简单先验 抽取纯噪声,再从 到 依次采样反向条件分布。若希望整条路径受条件 控制,只需让每一步反向转移都看到 :
左边是给定 后整条路径的联合分布; 是 的简写; 表示网络根据当前带噪状态、时间步和条件构造的一步反向分布。右边仍写 而不是 ,因为前向过程在足够大的 时几乎抹掉所有数据与条件信息,使 近似统一的 。
第二步:把条件加入三种网络参数化
Part 7 的三种输出都可以条件化:
、,或 。
这里 是条件数据经过 步加噪后的边缘分布。条件 不是预测目标的一部分,而是帮助网络决定在当前噪声级别上应该输出哪一种去噪方向。工程上可以先把类别、文本或低分辨率图编码成向量,再通过拼接、条件归一化或 cross-attention 注入网络;数学上只需把网络函数的输入从 扩展为 。
第三步:写出条件噪声预测训练目标
训练数据现在是成对样本 。与无条件 DDPM 相同,抽取时间步 和噪声 ,构造 ,然后最小化
这个公式描述网络在知道条件 时预测人工加入的噪声。所有符号与 Part 6 相同,新增的 来自与 配对的标注或输入。MSE 的最优解为 ,因此根据 Part 7 的 score/noise 关系, 会逼近 conditional score 。
第四步:条件网络如何完成一步反向采样
把条件噪声预测代入 DDPM 反向均值:
然后从 采样。生成时固定同一个条件 ,从 开始重复这一步,最终得到服从模型条件分布的 。条件通过每一次均值预测持续影响轨迹,而不是只在最后一步起作用。
公式解释
条件反向链公式描述如何把一个无条件生成模型改造成条件生成模型。乘积中的每个因子负责一步去噪,条件 出现在每个因子中,意味着整条轨迹都可以根据条件调整。先验 仍然简单且与条件近似无关,所以我们不需要为不同条件准备不同的初始噪声分布。
条件训练目标中的网络输入是 ,输出是与 同形状的噪声向量。 提供当前状态, 告诉网络噪声强度, 指定希望恢复的数据子分布。这个公式在 Diffusion 中的作用,是用与无条件训练几乎相同的监督信号学习 conditional score。
条件反向均值公式说明网络预测如何真正影响生成:同一个 在不同 下会产生不同的 ,从而得到不同的 和下一状态。若条件被网络忽略, 对不同 几乎相同,生成结果也就不受控制;这正是 Guidance 要解决的问题。
直觉理解
无条件去噪像是听到“请画一张合理图片”,模型只需朝任意真实图像方向移动。条件去噪则像每一步都听到“请画一只猫”:早期步骤决定大体布局时要考虑猫,后期步骤恢复纹理时也要考虑猫。只把条件放在最终一步,无法纠正前面已经走向错误模式的轨迹,因此条件必须伴随整条反向链。
本章总结
本章解决了什么问题: 本章把无条件 reverse process 扩展为 ,并给出条件 noise prediction 的训练和采样公式。
核心公式: 条件反向链为 ,训练目标为 。
需要记住的直觉: 条件不是生成完成后的筛选器,而是每一步去噪的导航信息;同一带噪状态因为条件不同,会被推向不同的数据子分布。
与下一章的关系: Vanilla conditional diffusion 能够使用条件,却没有一个独立旋钮控制条件影响有多强。下一章将用 Bayes 公式把 conditional score 分解,并通过分类器梯度显式放大条件方向。
9.2 Classifier Guidance:用分类器梯度放大条件
背景
Classifier Guidance 从 score 参数化出发。目标是得到条件分布在第 个噪声级别的 score 。它将这个向量拆成两部分:无条件 Diffusion 提供“怎样更像数据”的方向,额外分类器提供“怎样更像条件 ”的方向。
这里的分类器不是普通的干净图片分类器。它必须估计 ,也就是在任意噪声级别上从带噪输入判断条件。参数 属于分类器,参数 属于 Diffusion model。采样时会固定类别 ,对分类器的对数概率关于输入 求梯度。
数学推导
第一步:用 Bayes 公式分解 conditional score
在固定时间步 下,Bayes 公式为
。
取对数把乘除变成加减:
。
现在对 求梯度。条件 已经固定, 不随 改变,因此 。于是得到 Classifier Guidance 的基础恒等式:
第一项由无条件 Diffusion 的 score network 近似,负责维持样本处于真实数据高密度区域;第二项由 noise-aware classifier 提供,表示怎样微调当前 会让分类器更相信条件 。论文称它为 adversarial gradient,因为它与基于输入梯度修改分类器输出的方法形式相同;这里它被用于增加目标条件概率。
第二步:训练能够处理任意噪声级别的分类器
从配对数据 采样,抽取 和 ,构造相应的 。对于离散类别,分类器可以最小化交叉熵
这个公式描述让分类器给真实条件 分配更高概率。负号把最大化对数概率改成最小化损失;将 作为输入,是因为同一 在不同噪声级别上的判别难度和统计特征不同。训练后,在采样时计算 ,梯度穿过分类器回到输入,但不更新分类器参数。
第三步:加入 guidance scale
若所有模型都精确,前面的 Bayes 恒等式对应普通 conditional score。为了显式控制条件强度,引入 :
时完全忽略条件,只使用无条件 score; 时,在模型理想的情况下恢复普通 的 score; 时,分类器方向被额外放大。
为什么放大后会提高条件一致性并降低多样性?定义一个重新加权但尚未归一化的密度
。
对其取对数梯度,未知归一化常数因不依赖 而消失,得到
,正好就是 guided score。把分类器概率提升到大于一的幂,会强烈压低分类器不确定的样本、集中到容易被识别为 的区域,所以条件更明显,但原本合理而不典型的样本会被削弱。
第四步:把 classifier guidance 转换为噪声预测
DDPM 常用 noise parameterization。令 ,并使用 与 。把它们代入 guided score:
。
两边乘以 ,得到
这个噪声预测不是另一个网络的直接输出,而是无条件噪声预测经过分类器梯度修正后的结果。把它代入 ,便能沿受条件强化的反向均值采样。
公式解释
Bayes score 分解式描述条件信息如何改变数据分布的局部方向。Unconditional score 维护自然性,classifier gradient 增加条件概率;二者相加才得到条件 score。它之所以需要,是因为它把一个难以直接控制的 conditional model 拆成两个作用清晰的模块。
分类器损失中的 是对 noisy input 的条件概率,不能简单用只见过 的现成分类器替代。若分类器在大噪声时梯度错误,生成轨迹从一开始就可能被推向异常区域。这也是 Classifier Guidance 需要额外训练专用分类器的主要成本。
Guidance scale 公式中的 不是“条件是否存在”的开关,而是对条件 log-likelihood 梯度的倍数。概率重加权公式证明了它的作用: 不再严格采样原始 conditional distribution,而是在采样一个更偏好高分类器置信度的 tilted distribution。
噪声形式中的负号来自 score 与噪声方向相反。Classifier gradient 指向提高条件概率的方向,因此要从预测噪声中减去相应向量,反向均值才会朝条件概率更高的方向移动。
直觉理解
无条件 score 像一名负责“画得像真实照片”的老师,分类器梯度像另一名只负责“更像猫”的老师。Guidance scale 决定第二名老师的音量。 太小时,作品可能很自然却不符合主题; 很大时,最典型的猫特征会被反复强调,但姿态、背景和风格的多样性可能减少。
本章总结
本章解决了什么问题: 本章从 Bayes 公式推导出 conditional score 等于 unconditional score 加 classifier gradient,并证明 guidance scale 对应将分类器概率提升到 次幂的分布重加权。
核心公式: Classifier Guidance 使用 ,噪声形式为 。
需要记住的直觉: Unconditional score 保证“像数据”,classifier gradient 保证“像条件”;放大后者会提高条件一致性,但会把概率集中到更少、更典型的样本上。
与下一章的关系: Classifier Guidance 的问题是必须额外训练一个能识别所有噪声级别的分类器。下一章将证明 conditional score 与 unconditional score 的差本身就等于 classifier gradient,从而完全移除外部分类器。
9.3 Classifier-Free Guidance:为什么 CFG 有效
背景
Classifier-Free Guidance(CFG)的“classifier-free”是指采样时不需要独立分类器。它仍然需要同时获得两种预测:给定条件 的 conditional prediction,以及使用空条件 的 unconditional prediction。实践中通常不是训练两套完全独立的 Diffusion model,而是让同一个网络在训练时随机丢弃条件,从而同时学会两种行为。
CFG 的核心并不是经验性的向量插值。它来自上一章的 Bayes score 分解:classifier gradient 可以精确写成 conditional score 减 unconditional score。把这个差值放大,就能复现 Classifier Guidance 的方向。
数学推导
第一步:用两种 score 的差替代分类器
由上一章 ,移项得到
这个公式描述条件相对于无条件分布新增的方向。它从 Bayes 公式直接推导而来;若两种 score 都准确,它就等于理想分类器的输入梯度,不需要真的训练分类器。
把它代入 Classifier Guidance 的 :
第一行更适合理解:从无条件方向出发,沿“条件与无条件的差”移动 倍。第二行更适合分析权重。 时得到 unconditional score; 时得到普通 conditional score; 时不再是在两者之间插值,而是越过 conditional score、朝远离 unconditional score 的方向外推。
第二步:证明 CFG 对应什么概率分布
把 score 写回对数密度梯度:
。
利用梯度的线性和 ,可以合并为
因此 CFG 对应的归一化目标分布为 。再用 Bayes 公式 ,可得 ,与上一章 Classifier Guidance 的 tilted distribution 相同。
这就是 CFG 有效的概率原因:conditional/unconditional score 的差估计了分类器梯度, 次外推等价于提高条件似然的幂。这个结论在两种 score 完全一致、模型足够准确时严格成立;实际网络有近似误差,因此 CFG 是这一理想关系的近似实现。
第三步:转换为实现中常见的噪声公式
对同一个 ,有 和 ,其中 。把它们代入 score CFG 并乘以 ,得到
,。两次预测使用同一个 和 ,只改变条件输入。得到 后,把它当作普通噪声预测代入 DDPM 反向均值,再采样 。
有些资料把公式写成 。它与这里的记号关系是 。因此比较不同资料的 guidance scale 时,必须先看公式定义;本教程遵循论文的约定,使 表示 vanilla conditional model。
第四步:一个网络如何同时学会 conditional 与 unconditional
训练时以概率 把真实条件替换为空条件:
的概率为 ,而 的概率为 。
随后仍然使用同一个噪声 MSE:
当 时,样本训练 conditional prediction;当 时,条件信息被移除,同一网络必须只根据 预测噪声,因而学习 unconditional prediction。空条件可以是专门的 null embedding 或固定常量,而不应与某个真实条件混淆。
第五步:完整 CFG 采样流程
生成时先采样 。对 ,用同一个网络分别计算 与 ,按上式组合为 ,再计算
,并从相应反向 Gaussian 采样 。当 完成后,得到最终条件样本 。
CFG 不需要外部分类器,但通常需要每个时间步做 conditional 和 unconditional 两次网络前向计算。较大的 会强化条件差异,却也可能带来颜色过饱和、细节不自然或多样性下降;这不是公式失效,而是 tilted distribution 和模型近似误差共同造成的结果。
公式解释
Score 差公式描述 conditional model 相对 unconditional model 新增了什么局部方向。两者共享“怎样更像一般数据”的成分,相减后这部分大体抵消,剩下的主要是“怎样更符合条件 ”的成分。因此 CFG 虽然没有显式分类器,仍然能够近似 classifier gradient。
CFG score 公式中的 决定沿条件差方向移动多远。它在 与 之间是插值,在大于 时是外推。概率密度公式进一步说明,外推不是任意的向量技巧,而是在理想情况下对应对条件似然进行幂次重加权。
CFG noise 公式是实际 DDPM 中最常见的形式。因为 conditional 和 unconditional score 具有相同的比例因子 ,它们的线性组合会原样转换成 noise prediction 的线性组合。组合后的噪声进入原有反向均值,因此采样器的其余部分不需要改变。
Condition dropout 训练公式让一个参数共享的网络同时估计两套 score。 太小会导致 unconditional 分支训练不足,太大又会削弱 conditional 学习;它是训练超参数,而不是采样时的 guidance scale。CFG 的“free”指免去独立分类器,不代表没有额外计算成本。
直觉理解
可以把 unconditional prediction 看作“在不看题目时会怎样画”,conditional prediction 看作“看见题目后会怎样画”。两者相减,得到题目本身带来的改变量。CFG 从不看题目的答案出发,把这份改变量放大后再加回去,所以主题更加鲜明。放大过度时,一切与题目最强相关的特征都会被夸张,而那些自然但不典型的变化会消失。
本章总结
本章解决了什么问题: 本章从 Bayes score 恒等式完整推导了 CFG,证明 conditional/unconditional score 的差等于理想 classifier gradient,解释了 CFG 的概率重加权含义,并给出 condition dropout 训练与 DDPM 采样流程。
核心公式: CFG 使用 ,在噪声参数化下为 。
需要记住的直觉: Conditional 与 unconditional 预测的差提取了条件专属方向;放大这个方向会提高条件一致性,但 采样的是更集中的重新加权分布,而不是原始 ,所以多样性通常下降。
与下一章的关系: 本教程的主线到此完成:VAE 的 ELBO 导出了 Diffusion 的反向学习目标,noise prediction 与 score matching 给出了可训练形式,Guidance 则把无条件 score 扩展为可控生成。后续学习连续时间 SDE、DDIM、latent diffusion 或 flow matching 时,都可以把它们放回这条“分布—score—反向生成”的主线上理解。