从噪声到清晰度:去噪扩散模型背后的数学原理
当我第一次遇到去噪扩散概率模型 (DDPM) 时,我很难理解如何简单地添加然后去除正态分布噪声可以揭示样本图像中的底层结构。此过程最终有助于估计原始数据分布,从而能够生成似乎来自同一来源的真实样本。为了更好地掌握这一点,我决定探索去噪扩散背后的数学原理以及它如何发现隐藏的关系。
DDPM 在两个进程上运行:一个预定义的正向扩散过程,逐渐向图像添加噪声,另一个反向扩散过程,学习消除噪声。核心思想是训练一个模型来近似这种反向扩散过程。训练完成后,该模型可以通过从随机噪声开始并迭代应用学习到的去噪步骤来生成类似于训练数据的全新图像。
正向扩散过程
F首先,让我开始描述图像在矢量空间中的表示方式。此解释适用于那些不熟悉向量及其在使用此表示定义分布中的作用的人。如果您已经熟悉前向扩散过程,可以跳过本节并继续前向扩散推导。
想象一下四 (4) 张图像,每张图像有 3×3 像素,其中每个像素要么是黑色的,要么是白色的。我将黑色表示为 1,将白色表示为 0,然后将每个图像转换为矢量,如图 1 所示。

图 1:图像的矢量表示
图像第一行和第一列中的像素是矢量的第一个元素,第一行和第二列中的像素是第二个元素,第一行和第三列中的像素是第三个元素,第二行和第一列中的像素是第四个元素,依此类推。
每个向量由九 (9) 个元素组成,对应于 9 维空间中的一个点。由于人类感知和传统图表仅限于三 (3) 个维度,因此无法直接可视化该空间。然而,我可以从概念上说明每个向量如何在这个抽象超空间中占据独特的位置,如下所示。

图 2:9 维超空间的概念图示
在图 2 中,图像 a0 和 a1 彼此之间的相似性比与图像 b0 更相似,仅相差一个矢量元素。图像 a0 被描述为类似图像的中心,图像 a1 位于附近。请注意,该空间中的每个点都可以被解释为潜在的图像,无论其视觉连贯性如何,并且具有相似性的图像往往会形成不同的集群。如果我将图像 a0 视为高斯分布的平均值,表示为 q,方差非常小,那么周围的图像(例如图像 a1)可以解释为比远处图像更有可能从该分布中采样。为了在图 2 中有效地传达这个概念,我绘制了一个以图像 a0 为中心的钟形曲线形状。那么,问题是我如何才能完成这个抽样。
从这种分布中抽样的一个简单解决方案是使用多维单位高斯以及重新参数化技巧。我可以简单地从标准高斯分布中ε一个噪声样本。
![]()
这里,0 表示零 (0) 向量,I 是恒等矩阵。然后,为了将此噪声缩放到理想的方差,我可以将 ε 乘以一个小常数 B。这种缩放有效地调整了样本在平均值周围的分布。
![]()
让我们澄清一下符号。原始图像,图像 a0 表示为 u0。第一张图像(图像 a1)之后的图像是 u1,第二张图像之后的图像 a2 是 u2。这里,u1 和 u2 是随机变量,每个变量代表通过添加以其方差为特征的噪声获得的向量。通常,x0、x1 和 x2(或一般的 xt)用于表示这些随机变量,但为了清楚起见,我决定改用 u0、u1 和 u2,因为 u 表示均值。
假设 u0 作为分布的平均值,则可以使用重新参数化技巧来生成下一个样本 u1。
![]()
或者你也可以表达出来:
![]()
请注意,这两个表达式是等价的。当您稍后深入研究推导时,此信息变得尤为重要。顺便说一句,这不是 DDPM 论文中提出的表述;相反,随着本文的展开,我将逐渐朝着最终形式发展。
生成的样本(图像 a1)将遵循高斯分布。请记住,图像 a1 代表可以从该分布中提取的许多可能样本 (u1) 之一。您可以将这些样本视为位于图 2 中的钟形曲线形状内。在 u0 中添加 √ ̅B1∙ε1 与在图像 a0 中添加高斯噪声以产生 u1 相同,与 u0 相比,u1 是一张略微噪点的图像。在这个具体示例中,我通过更改图像 a1 中单个元素的值与图像 a0 相比来说明了这个概念。

图 3:正向扩散过程
同样,我可以取一个样本,图像 a1 (u1),并将其作为另一个高斯分布的中心(均值),如图 3 中间所示。在这个例子中,在许多可能性中,图像 a0 和 a2 都是来自这个新分布的极有可能的样本,由于它们接近平均值图像 a1,因此方差很小。采样过程与以前相同:这些图像是通过向图像 a1 添加高斯噪声 (ε) 来获得的。随后,图像 a2 可以成为下一步的均值,依此类推,继续这个迭代过程。如果我重复此过程的许多步骤,则每个步骤都会逐渐添加噪点,以逐渐遮挡原始图像。整个迭代过程称为“前向扩散”。
或者,我可以将这个过程描述为联合概率分布。这是一个小弯路,但它将帮助我们理解反向过程及其数学推导。给定 u0 的图像序列 u1、u2、u3 的联合概率可以表示为:q(u1=图像 a1,u2=图像 a2,u3=图像 a3 |u0=图像 a0)。使用概率链规则,我可以将这个联合概率分解为条件概率的乘积:
![]()
稍后我将描述如何推导这个条件概率乘积,作为目标函数推导的一部分。
正向扩散的关键简化是马尔可夫性质。这意味着每个采样步骤都被视为有条件地独立于所有先前的图像,给定紧接前一个图像。这使得该过程的表述变得更加简单,因为获得 ut 的概率仅取决于 ut-1。
应用这个属性,我可以表示获得 u1 的概率,假设分布的平均值为 u0,表示为 q(u1 |u0),例如,q(u1=图像 a1 |u0=图像 a0)。随后,获得 u2 的概率仅取决于 u1,表示为 q(u2=图像 a2 |u1=图像 a1),获得 u3 的概率仅取决于 u2,表示为 q(u3=图像 a3 |u2=图像 a2)。因此,联合概率可以分解为:
![]()
这些连续步骤定义了扩散步骤的马尔可夫链。稍后我将使用这个表达式来解释 DDPM 的反向扩散和目标函数。
前向扩散的目标是逐步将原始图像转换为纯噪声,最终在最后一步获得标准高斯分布 N( 0, I )。为了实现这一点,DDPM 论文使用了一个常数 Bt 的时间表,从 0.0001 到 0.02 不等,它定义了在每个步骤中添加的噪声的方差。该时间表确保了图像的有限扩散,其中总累积方差接近一 (1)。如果没有如此仔细的缩放,累积噪声方差可能会在后面的步骤中爆炸。同时,每个后续噪声图像的分布均值通过乘以 √̅̅(̅1̅̅-̅Bt)向原点(0 向量)移动。论文中显示的最终表达式是
![]()
DDPM 论文中引入的正向过程的重新参数化技巧是
![]()
请记住,这些特定的缩放选择是在 DDPM 论文中做出的设计决策。正向过程的一个很好的特性是,它允许使用重新参数化技巧在任何封闭形式的任意时间步长 t 上对 ut 进行采样。最终的闭式表达式如下所示:

![]()
前向扩散推导
L我将逐步介绍使用前面的示例逐步推导最终闭式表达式。
首先,图像 a1 (u1) 可以重新参数化为
![]()
![]()
接下来,让我们进入下一个扩散步骤,使图像 a1 成为另一个正态分布的中心(均值)。
![]()
![]()
用之前的表达式和一点代数替换 u1 后,我可以得到:
![]()
![]()
请记住,√̅̅(̅1̅̅-̅B2)、√ ̅B1 和 √ ̅B2 是比例因子,独立正态分布的总和也是高斯分布。由于 ε1 和 ε2 是独立于标准高斯分布 N(0, I) 的,因此它们的 ε1 和 ε2 的尺度和为 √̅̅(̅1̅̅-̅B2)∙√ ̅B1∙ε1 + √ ̅B2∙ε2 也是高斯的,平均值为零 (0) 和方差 (1 — B2)∙B1∙I + B2∙I
让我告诉你为什么会这样。首先,我可以将 ε1 和 ε2 的缩放和分配给 ε*2 :
![]()
![]()
![]()
Var(ε*2) 表示方差。由于 x 和 y 是独立随机变量,因此 Var(a∙x + b∙y) 等于 Var(a∙x) + Var(b∙y),并且当 a 是常数时,Var(a∙x) 也等于 a²∙Var(x),因此我可以将上面的表达式重写为
![]()
![]()
由于 Var(ε1) = I 和 Var(ε2) = I,因为 ε1 和 ε2 是从独立的标准高斯分布中提取的,我可以将其表示为
![]()
![]()
![]()
Std(ε*2) 表示标准差。因此,两个正态高斯分布 ε1 和 ε2 的尺度和可以表示为:
![]()
![]()
现在可以看到,重新参数化的u₂
![]()
![]()
相当于:
![]()
该公式对于完成推导很重要。在概括表达式之前,我将包括一个额外的扩散步骤以更好地说明该过程。在此步骤中,图像 a2 作为另一个正态分布的平均值。我将避免重复细节。
![]()
![]()
![]()
![]()
![]()
您现在可能可以看到如下图所示的模式。
![]()
![]()
![]()
为了减少符号混乱,让我通过引入
![]()
![]()
然后,我可以将 u0、u1 和 u2 重新排列为:
![]()
![]()
![]()
![]()
![]()
鉴于

最终的闭式表达式是

![]()
并且它允许在任何任意时间步长 t 上对 UT 进行采样,只要累积 alpha 是提前计算的。在 DDPM 论文中,累积 alpha 确实是根据方差线性计划预先计算的,并且是这种直接跳跃的关键参数。
在继续下一个主题之前,我想强调的是,前向过程的目的是为模型提供训练数据。此过程生成的嘈杂数据有助于训练模型学习近似其接下来的反向过程。
反向扩散过程
T反向过程背后的想法是从随机噪声中学习一个(或多个轨迹)到与训练数据中非常相似的图像。这是正向过程的逆过程,我将其描述为将原始图像 a0 迭代扩散为纯高斯噪声。您可以将通往纯高斯噪声的整个路径视为一条轨迹。
事实上,可以有多个轨迹来达到纯噪声,这与图 3 所示的单个轨迹不同。通过学习如何反转这些轨迹的扩散步骤(图 4),该模型获得了将纯噪声转换为与训练数据分布一致的新图像的能力。但这些反向轨迹究竟是如何学习的呢?

图 4:从纯噪声到真实图像的反转轨迹
为了学习这些反向轨迹,我需要很多中间噪声图像。这些图像构成了从干净数据到噪声的轨迹的各个步骤,是通过对训练数据中的每个图像应用前向扩散过程来生成的。一旦使用这些中间噪声图像训练模型,纯噪声样本将遵循学习到的反向轨迹,将其引导到与训练数据相似的图像集群。
有趣的是,由此产生的反向轨迹类似于一个高维矢量场,它隐式描述了如何从空间中的任何点导航到数据流形。数据流形是存在所有有效和真实图像样本的概念空间。找到它,相当于揭示了训练图像的底层结构。简而言之,当您采样时,您本质上是在“跟随这个学习到的矢量场的电流”来生成新的逼真图像。
培训目标
D正确计算从纯噪声到真实图像(数据流形)的每一个可能的轨迹实际上是不可能的。您甚至事先不知道目标真实图像是什么样子,这使得直接、显式的计算变得棘手。相反,有必要训练一个具有可学习参数的模型来近似反向扩散过程。通过在训练过程中将该模型暴露于大量中间噪声数据中,这隐式地指导模型学习复杂的去噪轨迹。
让我们深入研究训练目标并推导出相应的损失函数。通常,推导从观察到的数据点的对数似然开始。

对于单个观测数据点习,0(代表真实数据),其似然可以通过考虑习,0 和所有未观测的中间扩散步骤的联合概率来表示,习,1,习,2,...,习,t 其中习,t 是纯噪声,t 是扩散步骤的总数。

这个过程相当于通过扩散过程整合出所有可能的轨迹,这些轨迹可能导致观察到的数据点。这也称为边缘化,因为它有效地边缘化了未观察到或潜在的变量(x1、x2、...、xt)。
让我更简洁地表达一下。

然后,我将使用一个众所周知的技巧,即将表达式乘除相同的正向过程分布 q。这种技术从根本上类似于变分自动编码器 (VAE) 中证据下界 (ELBO) 的表述方式,它使我能够将边际似然转换为期望值。具体可以参考我之前的文章《终于!VAE KL 损失的明确推导“。

给定期望公式,
![]()
我可以将其重新表述为一种期望。

由于 Jensen 不等式,logE[x] ≥ E[log(x),并且 log 是一个凹函数,因此 Jensen 不等式确保了

最大化该目标 (ELBO) 会导致对数似然最大化。
从这一点开始,为了避免符号混乱,我将通过专注于单个观察到的数据点 x 并删除冗余符号来简化。请注意,我将在推导结束时解决经验平均值(平均超过 N 个数据点)。

现在,我可以扩展简化的表达式,如下所示。

请注意,q(x1, x2 | x0) 等于 q(x2, x1| x0),因为联合概率中的事件顺序 x1, x2 无关紧要。它被称为概率连词 (AND) 的交换性质。
联合概率可以表示为条件概率和边际概率(又名概率链法则)的乘积,例如,p(x0, x1, x2) = p(x0 | x1, x2).p(x1|x2).p(x2)。所以表达式也可以写成

然而,分母中出现的正向过程分布 q 的结果表达式并不立即显现出来。为了澄清,让我使用一个简单的联合概率 q(x3, x2, x1, x0),它可以分解为条件概率和边际概率的乘积。这可以写成
![]()
![]()
并且两种公式是等价的。
![]()
![]()
我希望分母中出现的分布 q 现在有意义。
![]()
如前所述,扩散过程定义了扩散步骤的马尔可夫链。例如,x2 的概率仅取决于其上一步,x1、x3 仅取决于 x2,依此类推。所以表达式,

现在可以简化为

现在让我应用 logA⋅B = logA + logB 来进一步重新排列公式。




在继续之前,让我们快速绕道来证明以下表达式是正确的。我需要表达式的右侧,以便可以将其代入上面的公式。
![]()
为了证明,我可以首先将分布 q 乘以一 (1) 除以 q(xt-1 |x0)q(x0) 的
![]()
然后,由于马尔可夫性质和概率连合的交换性质,分母中的条件概率和边际概率可以表示为如下所示的联合概率。
![]()
最后,我可以用不同的形式再次将其表达为条件概率和边际概率,以证明先前的主张。

现在我可以将其代入期望公式并继续其余推导。


由于 logA⋅B = logA + logB,我可以在求和中应用此属性将其分解为两个单独的求和,如下所示。

第二个求和可以进一步简化,因为分子中的许多项与分母中的项相抵消。


通过再次将属性 logA⋅B = logA + logB 应用于第一项、第三项和第四项,

我可以得出与 DDPM 论文中类似的表达式。

此表达式需要进行一些关键调整。首先,最后一步的分布可以简单地近似为标准高斯先验。这是因为最后一步的数据 x 被迭代前向扩散过程破坏得如此之多,以至于它本质上只是遵循标准高斯分布的随机噪声。
![]()
接下来,我需要否定整个表达式,因为负对数似然通常用作优化的损失函数。

由于求和和期望都是线性算子,我可以将其表示为

第一项和第二项可以转换为库尔巴克-莱布勒(KL)发散形式。

现在我已经推导出了单个数据点的损失函数 (ELBO) 的关键分量,让我们扩展到整个数据集。

在生成建模中,真实数据分布 q(x0) 不可用,但存在 N 个样本的有限数据集。这个想法是使用样本近似 q(x0),这也称为蒙特卡洛估计或经验期望。
所以在实践中,接受以下表达式。

因此,最终形式是

您现在可能已经注意到,上面的最终形式与 DDPM 论文中介绍的格式不同,您是对的。该文件对第三项进行了进一步简化。
第三项可以重写为
![]()
由于 x0 和 x1 非常相似,尤其是噪声添加很小,因此 DDPM 论文的作者可能决定将嵌套期望折叠为 x0 ~ q(x0) 上的单个外部期望。这允许仅对项进行一次采样。这导致了简化和最终的 DDPM ELBO 目标。

如您所见,ELBO 目标函数由 KL 项和一个重建项(第三项)组成。DDPM 论文的作者发现,由于 x0 和 x1 非常相似,这第三项对整体训练信号的贡献很小,因此他们在训练期间丢弃了它。此外,第一个 KL 项也被丢弃,因为它不涉及任何模型参数;因此,最小化它对优化模型没有影响。
最后,第二个KL项是DDPM论文中的主要学习信号。对于每个步骤 t,它将以 x0 为条件的真实后验 q 与学习到的逆过程 pθ 进行比较。这些 KL 项是可微的,可以通过分析计算。基本上,模型经过训练以最大限度地减少每个步骤的这种不匹配。
有趣的是,DDPM 论文使用了一个简化的训练目标,该目标源自 ELBO 目标中的 KL 术语。
![]()
我不会介绍这部分,因为这篇文章已经太长了,但这个目标训练模型预测添加到图像 x0 以产生噪声图像 xt 的噪声ε。相反的过程基本上可以消除训练期间学到的噪声(“去鼻”)。
我希望这篇文章有助于理解去噪扩散模型背后的数学概念。
当我第一次遇到去噪扩散概率模型 (DDPM) 时,我很难理解如何简单地添加然后去除正态分布噪声可以揭示样本图像中的底层结构。此过程最终有助于估计原始数据分布,从而能够生成似乎来自同一来源的真实样本。为了更好地掌握这一点,我决定探索去噪扩散背后的数学原理以及它如何发现隐藏的关系。
DDPM 在两个进程上运行:一个预定义的正向扩散过程,逐渐向图像添加噪声,另一个反向扩散过程,学习消除噪声。核心思想是训练一个模型来近似这种反向扩散过程。训练完成后,该模型可以通过从随机噪声开始并迭代应用学习到的去噪步骤来生成类似于训练数据的全新图像。
正向扩散过程
F首先,让我开始描述图像在矢量空间中的表示方式。此解释适用于那些不熟悉向量及其在使用此表示定义分布中的作用的人。如果您已经熟悉前向扩散过程,可以跳过本节并继续前向扩散推导。
想象一下四 (4) 张图像,每张图像有 3×3 像素,其中每个像素要么是黑色的,要么是白色的。我将黑色表示为 1,将白色表示为 0,然后将每个图像转换为矢量,如图 1 所示。

图 1:图像的矢量表示
图像第一行和第一列中的像素是矢量的第一个元素,第一行和第二列中的像素是第二个元素,第一行和第三列中的像素是第三个元素,第二行和第一列中的像素是第四个元素,依此类推。
每个向量由九 (9) 个元素组成,对应于 9 维空间中的一个点。由于人类感知和传统图表仅限于三 (3) 个维度,因此无法直接可视化该空间。然而,我可以从概念上说明每个向量如何在这个抽象超空间中占据独特的位置,如下所示。

图 2:9 维超空间的概念图示
在图 2 中,图像 a0 和 a1 彼此之间的相似性比与图像 b0 更相似,仅相差一个矢量元素。图像 a0 被描述为类似图像的中心,图像 a1 位于附近。请注意,该空间中的每个点都可以被解释为潜在的图像,无论其视觉连贯性如何,并且具有相似性的图像往往会形成不同的集群。如果我将图像 a0 视为高斯分布的平均值,表示为 q,方差非常小,那么周围的图像(例如图像 a1)可以解释为比远处图像更有可能从该分布中采样。为了在图 2 中有效地传达这个概念,我绘制了一个以图像 a0 为中心的钟形曲线形状。那么,问题是我如何才能完成这个抽样。
从这种分布中抽样的一个简单解决方案是使用多维单位高斯以及重新参数化技巧。我可以简单地从标准高斯分布中ε一个噪声样本。
![]()
这里,0 表示零 (0) 向量,I 是恒等矩阵。然后,为了将此噪声缩放到理想的方差,我可以将 ε 乘以一个小常数 B。这种缩放有效地调整了样本在平均值周围的分布。
![]()
让我们澄清一下符号。原始图像,图像 a0 表示为 u0。第一张图像(图像 a1)之后的图像是 u1,第二张图像之后的图像 a2 是 u2。这里,u1 和 u2 是随机变量,每个变量代表通过添加以其方差为特征的噪声获得的向量。通常,x0、x1 和 x2(或一般的 xt)用于表示这些随机变量,但为了清楚起见,我决定改用 u0、u1 和 u2,因为 u 表示均值。
假设 u0 作为分布的平均值,则可以使用重新参数化技巧来生成下一个样本 u1。
![]()
或者你也可以表达出来:
![]()
请注意,这两个表达式是等价的。当您稍后深入研究推导时,此信息变得尤为重要。顺便说一句,这不是 DDPM 论文中提出的表述;相反,随着本文的展开,我将逐渐朝着最终形式发展。
生成的样本(图像 a1)将遵循高斯分布。请记住,图像 a1 代表可以从该分布中提取的许多可能样本 (u1) 之一。您可以将这些样本视为位于图 2 中的钟形曲线形状内。在 u0 中添加 √ ̅B1∙ε1 与在图像 a0 中添加高斯噪声以产生 u1 相同,与 u0 相比,u1 是一张略微噪点的图像。在这个具体示例中,我通过更改图像 a1 中单个元素的值与图像 a0 相比来说明了这个概念。

图 3:正向扩散过程
同样,我可以取一个样本,图像 a1 (u1),并将其作为另一个高斯分布的中心(均值),如图 3 中间所示。在这个例子中,在许多可能性中,图像 a0 和 a2 都是来自这个新分布的极有可能的样本,由于它们接近平均值图像 a1,因此方差很小。采样过程与以前相同:这些图像是通过向图像 a1 添加高斯噪声 (ε) 来获得的。随后,图像 a2 可以成为下一步的均值,依此类推,继续这个迭代过程。如果我重复此过程的许多步骤,则每个步骤都会逐渐添加噪点,以逐渐遮挡原始图像。整个迭代过程称为“前向扩散”。
或者,我可以将这个过程描述为联合概率分布。这是一个小弯路,但它将帮助我们理解反向过程及其数学推导。给定 u0 的图像序列 u1、u2、u3 的联合概率可以表示为:q(u1=图像 a1,u2=图像 a2,u3=图像 a3 |u0=图像 a0)。使用概率链规则,我可以将这个联合概率分解为条件概率的乘积:
![]()
稍后我将描述如何推导这个条件概率乘积,作为目标函数推导的一部分。
正向扩散的关键简化是马尔可夫性质。这意味着每个采样步骤都被视为有条件地独立于所有先前的图像,给定紧接前一个图像。这使得该过程的表述变得更加简单,因为获得 ut 的概率仅取决于 ut-1。
应用这个属性,我可以表示获得 u1 的概率,假设分布的平均值为 u0,表示为 q(u1 |u0),例如,q(u1=图像 a1 |u0=图像 a0)。随后,获得 u2 的概率仅取决于 u1,表示为 q(u2=图像 a2 |u1=图像 a1),获得 u3 的概率仅取决于 u2,表示为 q(u3=图像 a3 |u2=图像 a2)。因此,联合概率可以分解为:
![]()
这些连续步骤定义了扩散步骤的马尔可夫链。稍后我将使用这个表达式来解释 DDPM 的反向扩散和目标函数。
前向扩散的目标是逐步将原始图像转换为纯噪声,最终在最后一步获得标准高斯分布 N( 0, I )。为了实现这一点,DDPM 论文使用了一个常数 Bt 的时间表,从 0.0001 到 0.02 不等,它定义了在每个步骤中添加的噪声的方差。该时间表确保了图像的有限扩散,其中总累积方差接近一 (1)。如果没有如此仔细的缩放,累积噪声方差可能会在后面的步骤中爆炸。同时,每个后续噪声图像的分布均值通过乘以 √̅̅(̅1̅̅-̅Bt)向原点(0 向量)移动。论文中显示的最终表达式是
![]()
DDPM 论文中引入的正向过程的重新参数化技巧是
![]()
请记住,这些特定的缩放选择是在 DDPM 论文中做出的设计决策。正向过程的一个很好的特性是,它允许使用重新参数化技巧在任何封闭形式的任意时间步长 t 上对 ut 进行采样。最终的闭式表达式如下所示:

![]()
前向扩散推导
L我将逐步介绍使用前面的示例逐步推导最终闭式表达式。
首先,图像 a1 (u1) 可以重新参数化为
![]()
![]()
接下来,让我们进入下一个扩散步骤,使图像 a1 成为另一个正态分布的中心(均值)。
![]()
![]()
用之前的表达式和一点代数替换 u1 后,我可以得到:
![]()
![]()
请记住,√̅̅(̅1̅̅-̅B2)、√ ̅B1 和 √ ̅B2 是比例因子,独立正态分布的总和也是高斯分布。由于 ε1 和 ε2 是独立于标准高斯分布 N(0, I) 的,因此它们的 ε1 和 ε2 的尺度和为 √̅̅(̅1̅̅-̅B2)∙√ ̅B1∙ε1 + √ ̅B2∙ε2 也是高斯的,平均值为零 (0) 和方差 (1 — B2)∙B1∙I + B2∙I
让我告诉你为什么会这样。首先,我可以将 ε1 和 ε2 的缩放和分配给 ε*2 :
![]()
![]()
![]()
Var(ε*2) 表示方差。由于 x 和 y 是独立随机变量,因此 Var(a∙x + b∙y) 等于 Var(a∙x) + Var(b∙y),并且当 a 是常数时,Var(a∙x) 也等于 a²∙Var(x),因此我可以将上面的表达式重写为
![]()
![]()
由于 Var(ε1) = I 和 Var(ε2) = I,因为 ε1 和 ε2 是从独立的标准高斯分布中提取的,我可以将其表示为
![]()
![]()
![]()
Std(ε*2) 表示标准差。因此,两个正态高斯分布 ε1 和 ε2 的尺度和可以表示为:
![]()
![]()
现在可以看到,重新参数化的u₂
![]()
![]()
相当于:
![]()
该公式对于完成推导很重要。在概括表达式之前,我将包括一个额外的扩散步骤以更好地说明该过程。在此步骤中,图像 a2 作为另一个正态分布的平均值。我将避免重复细节。
![]()
![]()
![]()
![]()
![]()
您现在可能可以看到如下图所示的模式。
![]()
![]()
![]()
为了减少符号混乱,让我通过引入
![]()
![]()
然后,我可以将 u0、u1 和 u2 重新排列为:
![]()
![]()
![]()
![]()
![]()
鉴于

最终的闭式表达式是

![]()
并且它允许在任何任意时间步长 t 上对 UT 进行采样,只要累积 alpha 是提前计算的。在 DDPM 论文中,累积 alpha 确实是根据方差线性计划预先计算的,并且是这种直接跳跃的关键参数。
在继续下一个主题之前,我想强调的是,前向过程的目的是为模型提供训练数据。此过程生成的嘈杂数据有助于训练模型学习近似其接下来的反向过程。
反向扩散过程
T反向过程背后的想法是从随机噪声中学习一个(或多个轨迹)到与训练数据中非常相似的图像。这是正向过程的逆过程,我将其描述为将原始图像 a0 迭代扩散为纯高斯噪声。您可以将通往纯高斯噪声的整个路径视为一条轨迹。
事实上,可以有多个轨迹来达到纯噪声,这与图 3 所示的单个轨迹不同。通过学习如何反转这些轨迹的扩散步骤(图 4),该模型获得了将纯噪声转换为与训练数据分布一致的新图像的能力。但这些反向轨迹究竟是如何学习的呢?

图 4:从纯噪声到真实图像的反转轨迹
为了学习这些反向轨迹,我需要很多中间噪声图像。这些图像构成了从干净数据到噪声的轨迹的各个步骤,是通过对训练数据中的每个图像应用前向扩散过程来生成的。一旦使用这些中间噪声图像训练模型,纯噪声样本将遵循学习到的反向轨迹,将其引导到与训练数据相似的图像集群。
有趣的是,由此产生的反向轨迹类似于一个高维矢量场,它隐式描述了如何从空间中的任何点导航到数据流形。数据流形是存在所有有效和真实图像样本的概念空间。找到它,相当于揭示了训练图像的底层结构。简而言之,当您采样时,您本质上是在“跟随这个学习到的矢量场的电流”来生成新的逼真图像。
培训目标
D正确计算从纯噪声到真实图像(数据流形)的每一个可能的轨迹实际上是不可能的。您甚至事先不知道目标真实图像是什么样子,这使得直接、显式的计算变得棘手。相反,有必要训练一个具有可学习参数的模型来近似反向扩散过程。通过在训练过程中将该模型暴露于大量中间噪声数据中,这隐式地指导模型学习复杂的去噪轨迹。
让我们深入研究训练目标并推导出相应的损失函数。通常,推导从观察到的数据点的对数似然开始。

对于单个观测数据点习,0(代表真实数据),其似然可以通过考虑习,0 和所有未观测的中间扩散步骤的联合概率来表示,习,1,习,2,...,习,t 其中习,t 是纯噪声,t 是扩散步骤的总数。

这个过程相当于通过扩散过程整合出所有可能的轨迹,这些轨迹可能导致观察到的数据点。这也称为边缘化,因为它有效地边缘化了未观察到或潜在的变量(x1、x2、...、xt)。
让我更简洁地表达一下。

然后,我将使用一个众所周知的技巧,即将表达式乘除相同的正向过程分布 q。这种技术从根本上类似于变分自动编码器 (VAE) 中证据下界 (ELBO) 的表述方式,它使我能够将边际似然转换为期望值。具体可以参考我之前的文章《终于!VAE KL 损失的明确推导“。

给定期望公式,
![]()
我可以将其重新表述为一种期望。

由于 Jensen 不等式,logE[x] ≥ E[log(x),并且 log 是一个凹函数,因此 Jensen 不等式确保了

最大化该目标 (ELBO) 会导致对数似然最大化。
从这一点开始,为了避免符号混乱,我将通过专注于单个观察到的数据点 x 并删除冗余符号来简化。请注意,我将在推导结束时解决经验平均值(平均超过 N 个数据点)。

现在,我可以扩展简化的表达式,如下所示。

请注意,q(x1, x2 | x0) 等于 q(x2, x1| x0),因为联合概率中的事件顺序 x1, x2 无关紧要。它被称为概率连词 (AND) 的交换性质。
联合概率可以表示为条件概率和边际概率(又名概率链法则)的乘积,例如,p(x0, x1, x2) = p(x0 | x1, x2).p(x1|x2).p(x2)。所以表达式也可以写成

然而,分母中出现的正向过程分布 q 的结果表达式并不立即显现出来。为了澄清,让我使用一个简单的联合概率 q(x3, x2, x1, x0),它可以分解为条件概率和边际概率的乘积。这可以写成
![]()
![]()
并且两种公式是等价的。
![]()
![]()
我希望分母中出现的分布 q 现在有意义。
![]()
如前所述,扩散过程定义了扩散步骤的马尔可夫链。例如,x2 的概率仅取决于其上一步,x1、x3 仅取决于 x2,依此类推。所以表达式,

现在可以简化为

现在让我应用 logA⋅B = logA + logB 来进一步重新排列公式。




在继续之前,让我们快速绕道来证明以下表达式是正确的。我需要表达式的右侧,以便可以将其代入上面的公式。
![]()
为了证明,我可以首先将分布 q 乘以一 (1) 除以 q(xt-1 |x0)q(x0) 的
![]()
然后,由于马尔可夫性质和概率连合的交换性质,分母中的条件概率和边际概率可以表示为如下所示的联合概率。
![]()
最后,我可以用不同的形式再次将其表达为条件概率和边际概率,以证明先前的主张。

现在我可以将其代入期望公式并继续其余推导。


由于 logA⋅B = logA + logB,我可以在求和中应用此属性将其分解为两个单独的求和,如下所示。

第二个求和可以进一步简化,因为分子中的许多项与分母中的项相抵消。


通过再次将属性 logA⋅B = logA + logB 应用于第一项、第三项和第四项,

我可以得出与 DDPM 论文中类似的表达式。

此表达式需要进行一些关键调整。首先,最后一步的分布可以简单地近似为标准高斯先验。这是因为最后一步的数据 x 被迭代前向扩散过程破坏得如此之多,以至于它本质上只是遵循标准高斯分布的随机噪声。
![]()
接下来,我需要否定整个表达式,因为负对数似然通常用作优化的损失函数。

由于求和和期望都是线性算子,我可以将其表示为

第一项和第二项可以转换为库尔巴克-莱布勒(KL)发散形式。

现在我已经推导出了单个数据点的损失函数 (ELBO) 的关键分量,让我们扩展到整个数据集。

在生成建模中,真实数据分布 q(x0) 不可用,但存在 N 个样本的有限数据集。这个想法是使用样本近似 q(x0),这也称为蒙特卡洛估计或经验期望。
所以在实践中,接受以下表达式。

因此,最终形式是

您现在可能已经注意到,上面的最终形式与 DDPM 论文中介绍的格式不同,您是对的。该文件对第三项进行了进一步简化。
第三项可以重写为
![]()
由于 x0 和 x1 非常相似,尤其是噪声添加很小,因此 DDPM 论文的作者可能决定将嵌套期望折叠为 x0 ~ q(x0) 上的单个外部期望。这允许仅对项进行一次采样。这导致了简化和最终的 DDPM ELBO 目标。

如您所见,ELBO 目标函数由 KL 项和一个重建项(第三项)组成。DDPM 论文的作者发现,由于 x0 和 x1 非常相似,这第三项对整体训练信号的贡献很小,因此他们在训练期间丢弃了它。此外,第一个 KL 项也被丢弃,因为它不涉及任何模型参数;因此,最小化它对优化模型没有影响。
最后,第二个KL项是DDPM论文中的主要学习信号。对于每个步骤 t,它将以 x0 为条件的真实后验 q 与学习到的逆过程 pθ 进行比较。这些 KL 项是可微的,可以通过分析计算。基本上,模型经过训练以最大限度地减少每个步骤的这种不匹配。
有趣的是,DDPM 论文使用了一个简化的训练目标,该目标源自 ELBO 目标中的 KL 术语。
![]()
我不会介绍这部分,因为这篇文章已经太长了,但这个目标训练模型预测添加到图像 x0 以产生噪声图像 xt 的噪声ε。相反的过程基本上可以消除训练期间学到的噪声(“去鼻”)。
我希望这篇文章有助于理解去噪扩散模型背后的数学概念。
更多推荐
所有评论(0)