扩散模型通过学习反转一个渐进的噪声添加过程来生成数据。从概念上讲,它们分两个阶段运行:一个正向过程,通过许多步骤用噪声破坏数据;一个反向过程,训练一个神经网络来撤销这种破坏。在正向阶段,输入数据(如图像)通过在每个步骤中添加少量高斯噪声来逐步改变。这会将原始数据转换为数百或数千个步骤中的随机噪声,模拟扩散过程。关键思想是,通过理解如何反转这种噪声添加,模型可以通过迭代地细化噪声来从噪声中生成新数据。
训练过程侧重于教导模型预测和消除每个步骤中添加的噪声。例如,给定特定时间步长的噪声图像,训练模型以估计噪声分量。这通常使用诸如预测噪声和实际噪声之间的均方误差 (MSE) 之类的损失函数来完成。模型架构通常是 U-Net,旨在处理空间数据,并以当前时间步长为条件来调整其针对不同噪声水平的行为。通过学习反转每个小的破坏步骤,模型构建了从纯噪声重建数据的能力。这种方法避免了其他生成模型中使用的复杂概率计算,而是依赖于迭代细化。
在采样(生成)期间,模型从随机噪声开始,并逐步应用学习到的反向过程。在每个时间步,网络预测当前“噪声”数据中的噪声,并减去它以产生稍微更清晰的版本。重复此操作,直到形成连贯的输出(例如,图像)。例如,生成猫图像可能从静态开始,边缘和形状在几十个步骤中逐渐显现。实际实现通常优化步骤数 - 使用较少的步骤来提高速度(例如,50 个步骤),或使用更多的步骤来提高质量(例如,1,000 个步骤)。虽然计算密集,但这种迭代去噪提供了对输出的精细控制,并避免了 GAN 中出现的模式崩溃问题。开发人员可以调整诸如步数或噪声计划之类的参数,以平衡速度和输出质量。