真实逆向转移概率 p(xt−1∣xt) 代表了生成数据所需采样的分布,通过从噪声 xT 逆行至干净样本 x0 来实现。然而,计算此分布需要知晓原始数据分布 q(x0),这使其变得难以处理。
我们的方法是使用神经网络 (neural network)来近似这个逆向转移。我们定义一个参数 (parameter)化分布 pθ(xt−1∣xt),模型将学习它。由于正向过程添加了高斯噪声,逆向转移的一个合理选择也是高斯分布:
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))
在这里,μθ(xt,t) 是高斯分布 xt−1 的均值,Σθ(xt,t) 是其协方差矩阵,给定时间步 t 时的 xt。均值和协方差原则上都可以依赖于噪声数据 xt 和时间步 t,它们由我们神经网络的参数 θ 决定。
因此,神经网络的任务是预测此高斯分布在每个时间步 t 的参数。
预测均值 μθ(xt,t)
有两种常见的方式来参数 (parameter)化均值 μθ(xt,t):
- 直接预测均值: 网络可以设计为直接输出 μθ(xt,t)。
- 预测噪声 ϵ: 网络预测在对应正向步骤 t 中添加的噪声分量 ϵ。这种方式更为普遍,并且常带来更稳定的训练和更简单的目标函数(我们将在下一章看到)。
我们来关注第二种方式,即预测噪声。我们设计一个神经网络 (neural network),通常表示为 ϵθ,它接收当前的噪声样本 xt 和时间步 t 作为输入,并输出一个预测的噪声分量 ϵθ(xt,t)。
为什么预测噪声是有用的?回顾正向过程(第2章,“中间步骤的采样”),后验分布 q(xt−1∣xt,x0) 是可处理的,并且也是高斯分布。它的均值具有特定形式。尽管在逆向过程中我们不知道 x0,但我们可以使用为 q(xt−1∣xt,x0) 推导出的关系,并用从 xt 和预测噪声 ϵθ(xt,t) 得出的估计值来替代 x0。这给出了我们参数化逆向分布 pθ(xt−1∣xt) 均值的以下表达式:
μθ(xt,t)=αt1(xt−1−αˉtβtϵθ(xt,t))
其中:
- ϵθ(xt,t) 是我们神经网络的输出。
- αt=1−βt 和 αˉt=∏i=1tαi 是从正向过程噪声调度(βt)得出的。
这个方程提供了一种直接计算去噪步骤 xt−1 均值的方式,它使用当前状态 xt 和网络的噪声预测 ϵθ(xt,t)。神经网络的主要工作是学习在给定结果 xt 的情况下,在步骤 t 添加的正确噪声 ϵ。
固定方差 Σθ(xt,t)
协方差矩阵 Σθ(xt,t) 呢?尽管网络也可以学习方差,但 Ho 等人(DDPM 的作者)发现,固定方差效果良好并简化了模型。协方差通常设为对角形式,即 Σθ(xt,t)=σt2I,其中 I 是单位矩阵。方差 σt2 通常根据正向过程的方差来选择:
- 选项 1: σt2=βt
- 选项 2: σt2=β~t=1−αˉt1−αˉt−1βt
两种选项都将逆向过程方差与正向过程中使用的噪声调度相关联。使用 β~t 对应于当 x0 已知时真实后验 q(xt−1∣xt,x0) 的方差,而使用 βt 在经验上表现良好,特别是对于我们稍后将讨论的 Lsimple 目标函数。为了简化,σt2=βt 是一个普遍的选择。固定方差意味着神经网络 (neural network)只需预测噪声 ϵθ(xt,t) 来定义逆向转移。
神经网络 (neural network)结构
神经网络 ϵθ(xt,t) 需要处理输入 xt(通常与原始数据具有相同维度,例如图像)和时间步 t(一个标量)。然后,它必须输出一个与 xt 形状相同的张量 ϵθ,表示预测的噪声。
完成此任务的一个非常成功的结构是 U-Net,我们将在第4章对其进行详细阐述。U-Net 结构非常适合图像类数据,并能有效整合时间步信息 t。
示意图展示了神经网络 ϵθ 在参数 (parameter)化逆向过程中的作用。它接收噪声数据 xt 和时间步 t 来预测噪声 ϵθ。此预测随后与噪声调度(αt,βt,αˉt)中的固定参数一同,用于计算近似逆向转移 pθ(xt−1∣xt) 的均值 μθ。方差 σt2 通常是固定的。
总之,我们使用一个学习到的高斯分布 pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),σt2I) 来近似难以处理的逆向分布 p(xt−1∣xt)。我们使用神经网络 ϵθ(xt,t) 来预测噪声分量,这使我们能够计算均值 μθ(xt,t)。方差 σt2 通常根据正向过程噪声调度固定。这种设置构成了训练扩散模型的依据,我们将在下文介绍。