扩散模型是一种生成模型,它通过迭代地将随机噪声提炼成结构化输出来创建数据。它分两个阶段工作:一个正向过程,逐渐用噪声破坏训练数据;一个反向过程,训练神经网络来撤销这种破坏。例如,如果您在图像上训练扩散模型,正向过程可能会缓慢地向照片添加像素级噪声,直到它变成随机静态。然后,该模型学习逐步反转此噪声,最终从纯噪声开始,逐步“去噪”生成新图像。
其核心机制依赖于一个数学框架,其中正向过程被建模为马尔可夫链——一系列步骤,其中每个步骤都向数据添加少量高斯噪声。这由一个固定的时间表定义,该时间表确定在每个步骤中添加多少噪声。在训练期间,该模型学习预测在正向过程的每个步骤中添加的噪声。在反向阶段,经过训练的模型采用噪声输入,并通过多个步骤迭代地减去预测的噪声,逐渐重建干净的数据样本。例如,在文本到图像的生成中,该模型可能从随机像素开始,并在 50-100 个步骤中将其细化为与文本提示匹配的连贯图像。训练目标通常包括最小化模型预测的噪声与正向过程中添加的实际噪声之间的差异,与 GAN 中的对抗训练相比,这在计算上是高效的。
扩散模型广泛用于图像合成、修复和超分辨率等任务。它们比 GAN 等替代方案具有优势,例如稳定的训练(无模式崩溃)和高输出多样性。然而,它们的迭代采样过程可能很慢——生成图像可能需要数十次网络评估。像潜在扩散(在 Stable Diffusion 中使用)这样的技术通过在压缩的潜在空间中应用扩散过程来解决这个问题,从而降低了计算成本。虽然它们在计算上比单步模型更重,但它们的灵活性和质量使它们在精度至关重要的应用中很受欢迎,例如医学成像或逼真的艺术生成。开发人员通常使用像 PyTorch 这样的框架,以及像 Hugging Face 的 Diffusers 这样的库来高效地实现这些模型。