噪声通过一系列增量步骤被纳入扩散过程,这些步骤逐渐将结构化数据(如图像)转化为随机噪声。这通过一个前向过程完成,即系统地添加噪声;以及一个学习到的反向过程将其移除以重建原始数据。核心思想是训练一个模型来逆转加噪步骤,使其能够通过从纯噪声开始并迭代细化来生成新数据。
前向过程遵循预定义的噪声调度,该调度决定了在每个时间步添加多少高斯噪声。例如,在每个步骤 ( t ),当前数据 ( x_t ) 是前一数据 ( x_{t-1} ) 和噪声样本 ( \epsilon ) 的加权组合。数学上,这通常表示为 ( x_t = \sqrt{1 - \beta_t} \cdot x_{t-1} + \sqrt{\beta_t} \cdot \epsilon ),其中 ( \beta_t ) 控制步骤 ( t ) 的噪声强度。( \beta_t ) 的值通常很小,并随时间逐渐增加,确保数据平滑地从结构过渡到噪声。开发者通常使用预定义的 ( \beta_t ) 调度,例如线性或基于余弦的增加,以平衡跨步骤的损坏率。
在训练过程中,模型通过预测每个步骤中添加的噪声分量 ( \epsilon ) 来学习逆转此过程。例如,给定一个带噪声的输入 ( x_t ) 和时间步 ( t ),训练一个神经网络(例如 U-Net)来估计 ( \epsilon )。损失函数将预测的噪声与前向过程中使用的实际噪声进行比较。训练完成后,模型可以通过从随机噪声 ( x_T ) 开始并迭代应用反向过程来生成数据:在每个步骤中,它预测 ( x_t ) 中的噪声,减去它,并细化 ( x_{t-1} )。为了在采样过程中引入随机性,一些方法在每个去噪步骤中添加少量新噪声,以确保输出的多样性。这种受控加噪和学习去噪的结合使扩散模型能够生成高质量、多样化的结果。