要为正向扩散过程采样噪声,首先需要定义噪声计划,然后逐步在多个时间步长上对数据应用缩放的高斯噪声。正向扩散过程通过根据预定义的方差计划迭代地添加少量高斯噪声,将数据(例如图像)转化为纯噪声。在每个时间步长 (\(t\)),噪声从正态分布 (\(\mathcal{N}(0, I)\)) 中采样,并根据计划导出的系数进行缩放。这些系数控制着在每一步中保留多少信号以及添加多少噪声,从而确保数据逐渐变得与随机噪声无法区分。
该过程依赖于两个关键组件:方差计划 (\(\beta_t\))(其中 (\(t\)) 的范围从 1 到 (\(T\))) 和一组派生参数 (\(\alpha_t = 1 - \beta_t\)))。累积乘积 (\(\bar{\alpha}_t = \prod_{s=1}^t \alpha_s\)) 跟踪了直到时间步长 (\(t\)) 的总信号保留量。例如,如果 (\(\beta_1 = 0.1\))),那么 (\(\alpha_1 = 0.9\)));如果 (\(\beta_2 = 0.2\))),则 (\(\alpha_2 = 0.8\))),累积乘积 (\(\bar{\alpha}_2 = 0.9 \times 0.8 = 0.72\)))。在每个时间步长 (\(t\)),带噪声的数据 (\(x_t\)) 计算公式为 (\(x_t = \sqrt{\bar{\alpha}_t} \cdot x_0 + \sqrt{1 - \bar{\alpha}_t} \cdot \epsilon\))),其中 (\(\epsilon \sim \mathcal{N}(0, I)\)))。( \(\sqrt{\bar{\alpha}_t}\) ) 项保留了原始数据的一部分,而 ( \(\sqrt{1 - \bar{\alpha}_t}\) ) 项则对采样的噪声进行缩放,以匹配累积方差。
在实践中,这使得对于任何 (\(t\)) 都可以通过单步高效地计算过程,无需迭代所有先前的时间步长。例如,如果在图像上训练扩散模型,您可能会预先计算所有 (\(\bar{\alpha}_t\)) 值,并在训练期间随机采样一个时间步长 (\(t\))。然后从标准正态分布中抽取噪声 (\(\epsilon\)),按 (\(\sqrt{1 - \bar{\alpha}_t}\)) 进行缩放,并将其添加到缩放后的输入 (\(\sqrt{\bar{\alpha}_t} \cdot x_0\))) 中。这种方法确保了不同时间步长之间的一致性,并简化了实现。方差计划的常见选择是线性或基于余弦的 (\(\beta_t\)) 进展,这平衡了逐渐添加噪声与计算稳定性。