扩散模型——标准噪声调度
噪声调度方法概述
可以把扩散模型想象成“修复一张被逐渐撕碎的拼图”。正向过程是按步骤撕碎图片(加噪),反向过程则是学习如何修复(去噪)。噪声调度决定了“撕碎”的速度和节奏,其关键意义在于:
-
控制学习难度:噪声调度决定了模型在每个阶段的学习任务。如果初始阶段噪声过大,模型可能难以从纯噪声中识别出有效的结构信息;反之,若噪声过小,模型又可能学习不到有意义的去噪过程。
-
平衡细节与结构:理想的噪声调度能在早期保留图像的宏观结构(如轮廓、布局),而在后期专注于恢复微观细节(如纹理、毛发)。糟糕的调度会导致模糊或伪影等问题。
-
影响训练与生成效率:不同的噪声调度对计算资源的需求不同。一个高效的调度可以在更少的步骤内达到相同的生成质量,从而显著加速训练和推理。
以下是几种常见的噪声调度策略及其实现方法。
线性噪声调度(Linear Schedule)
线性调度是最简单的噪声调度方法,噪声水平随时间线性变化,即β值随时间线性增加,每个时间步增加恒定的噪声。Jonathan Ho 等人在《Denoising Diffusion Probabilistic Models》介绍了线性噪声调度。
优点:实现简单,计算高效,是许多基线模型(如DDPM)的默认选择。缺点:后期噪声增长过快,可能导致模型难以学习精细细节,生成图像可能模糊。
低分辨率图像生成、快速原型验证。
数学表达:
噪声水平 在时间步
的值为:
代码实现(Python):
def linear_schedule(t, T, beta_min=0.0001, beta_max=0.02):
return beta_min + (beta_max - beta_min) * (t / T)
余弦噪声调度(Cosine Schedule)
余弦调度通过余弦函数调整噪声水平,避免线性调度的突变问题。β值的变化遵循余弦函数,初期和末期变化慢,中期变化快。Alex Nichol 等人在《Improved Denoising Diffusion Probabilistic Models》提出了余弦噪声调度,作为线性噪声调度的改进,尤其解决了线性噪声调度在 t=T 附近信噪比的快速下降。
优点:生成图像细节更丰富、更锐利,训练更稳定,通常能获得更高的FID/IS分数。缺点:计算稍复杂,早期学习速度可能较慢。
当前最主流的选择,广泛应用于高分辨率图像生成(如Stable Diffusion等)。
数学表达:
噪声水平 的计算公式为:
此处 s 是一个小的偏移量(例如 0.006),以防止 在 t=0 附近过小。在实践中,我们将
限制为不大于 0.999,以防止在扩散过程结束时接近 t = T 时出现奇点。

平方根噪声调度(Sqrt Schedule)
平方根调度使噪声变化更平缓,适合某些扩散模型的需求。Xiang Lisa Li 等人在《Diffusion-LM Improves Controllable Text Generation》提出Sqrt Schedule 。作者觉得前两种噪声表对文本数据不具有鲁棒性。作者认为在接近原始数据的地方,即 t=0 附近去噪比较简单,如果添加噪声太小,不足以扰乱数据,因此应该添加更大的噪声。
数学表达:
噪声水平 为:
s 是一个小常数,对应于起始噪声水平。该文提出的sqrt 时间表以更高的噪声水平开始,并且在前 50 个步骤中噪声迅速增加。然后 sqrt 减慢注入噪声的速度,以避免在高噪声问题上花费太多步骤,这可能很难很好地解决。

指数噪声调度(Exponential Schedule)
指数调度通过指数函数调整噪声水平,适用于快速变化的场景,可处理音频生成、多尺度数据等特定任务。β值呈指数级增长,初期变化迅速,后期逐渐放缓。
优点:初期快速变化有助于捕捉细节,在处理数据尺度差异大时表现出色。缺点:初期噪声增长过快,可能不利于学习稳定的结构信息。
数学表达:
噪声水平的计算公式为:
代码实现(Python):
def exponential_schedule(t, T, beta_min=0.0001, beta_max=0.02):
return beta_min * (beta_max / beta_min) ** (t / T)
选择噪声调度的建议
- 线性调度:简单易用,适合初步实验。
- 余弦调度:平滑过渡,适合高质量生成任务。
- 平方根调度:噪声变化更缓慢,适合稳定训练。
- 指数调度:噪声快速变化,适合某些特定场景。
根据具体任务需求调整参数(如 beta_min 和 beta_max)以获得最佳效果。
本文来源于网络学习后,通过个人总结等完成,感谢各位前辈的讲解,如有不妥或有误的地方,欢迎大家来讨论,批评指正。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)