前向扩散过程在多个时间步上逐步为数据添加噪声,形成一个马尔可夫链。这里将阐述这个链中单一步骤的精确数学定义。具体来说,这包括了理解如何从时间步 t−1 的状态 xt−1 演变为时间步 t 的下一个状态 xt。
这个转变由条件概率分布 q(xt∣xt−1) 定义。在像去噪扩散概率模型(DDPM)这样的标准扩散模型中,这种转变被建模为添加少量高斯噪声。每一步添加的噪声量由预先确定的方差调度控制,用 βt 表示,其中 t 的取值范围从1到 T (总扩散步数)。
具体来说,分布 q(xt∣xt−1) 被定义为一个高斯分布,其均值取决于前一个状态 xt−1,其方差由 βt 给出:
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
让我们来分析这个公式:
- xt: 时间步 t 的数据(例如,图像张量)。
- xt−1: 前一个时间步 t−1 的数据。
- βt: 在步进 t 添加的高斯噪声的方差。这是一个由方差调度决定的小的正数。典型值可能开始时非常小(例如,10−4),并在步进中略微增加。
- I: 单位矩阵。这很重要,因为 xt 通常是多维的(例如,图像中的像素)。噪声独立地添加到每个维度,具有相同的方差 βt。
- N(x;μ,Σ): 这表示关于变量 x 的高斯(正态)分布,均值为 μ,协方差矩阵为 Σ。在我们的情况中,均值为 1−βtxt−1,协方差为 βtI。
这个公式表明 xt 围绕着 xt−1 的略微缩小版本(由 1−βt 缩放),并添加了由 βt 控制的噪声。因为 βt 很小,所以 1−βt 略小于1,这意味着来自 xt−1 的信号大部分被保留,但引入了噪声。
为了方便,通常定义 αt=1−βt。由于 βt 是小而正的,αt 略小于1。使用这种表示法,公式变为:
q(xt∣xt−1)=N(xt;αtxt−1,(1−αt)I)
这种形式强调了新状态 xt 是缩放后的前一个状态 αtxt−1 和新添加的方差为 1−αt=βt 的噪声的组合。
我们可以使用重参数化技巧来表示从 xt−1 采样 xt 的过程。如果 ϵt−1 是从标准高斯分布 N(0,I) 中抽取的随机变量,那么我们可以将 xt 写为:
xt=αtxt−1+1−αtϵt−1
其中,ϵt−1∼N(0,I)。这种表述对于实现特别有用,因为它明确分离了确定性部分(缩放 xt−1)和随机性部分(添加缩放后的标准高斯噪声)。
值序列 β1,β2,...,βT(或等效地 α1,α2,...,αT)构成了噪声调度。这个调度的选择是一个重要的设计决策,它影响着扩散过程和模型性能。我们将在下一节讨论不同的调度策略。
目前,重要的结论是这个单步转移公式。它是整个前向扩散过程的基本组成部分,精确地定义了噪声如何增量地添加到马尔可夫链的每一步。理解这个公式对于掌握前向过程的性质以及逆向(去噪)过程如何在后续被公式化是必要的。
让我们为一个从 xt−1 转变到 xt 的单个数据点(一维)进行可视化。
图示单个步骤 xt−1→xt。点 xt−1 被缩放至 αtxt−1,然后添加方差为 βt=1−αt 的高斯噪声,从而得到新状态 xt。
这种逐步添加受控噪声的方式确保了如果我们重复这个过程 T 步,得到的 xT 将几乎纯噪声,有效地破坏了原始数据结构。下一节将讨论噪声调度中 βt 值如何选择,后续章节将说明我们如何推导一个公式,可以直接从 x0 跳到任意 xt。