扩散模型和基于分数的生成模型是用于生成图像或音频等数据的密切相关的方法。两者都通过迭代地将随机噪声细化为结构化输出,但它们在数学框架和训练目标上有所不同。扩散模型专注于学习一个逐步逆转向数据中逐渐添加噪声的过程。例如,在图像生成中,扩散模型可能从一张带有噪声的图像开始,并在多个步骤中逐步“去噪”。另一方面,基于分数的模型学习估计数据分布的梯度(或“分数”),通过指示如何调整随机噪声以使其与真实数据模式对齐来指导生成过程。
主要的技术区别在于它们建模数据的方式。扩散模型明确定义了一个前向过程(随时间添加噪声)和一个逆向过程(移除噪声)。它们训练神经网络来预测每一步的噪声,最小化预测噪声和实际噪声之间的差异。基于分数的模型避免直接建模噪声,而是训练网络来估计分数——即数据点应移动的方向,以匹配训练分布。例如,基于分数的模型可能使用 Langevin 动力学,这是一种采样技术,它利用分数通过遵循数据分布的梯度来迭代地将随机噪声细化为合理的数据。虽然这两种方法都涉及迭代细化,但扩散模型在其噪声计划中更具规定性,而基于分数的方法在遍历数据空间方面更灵活。
实际上,这两种方法有很多相似之处,甚至可以在一个统一的框架下进行整合。例如,最近的研究表明,当噪声计划受到限制时,扩散模型可以被视为基于分数模型的一个特例。像去噪扩散概率模型 (DDPM) 和噪声条件分数网络 (NCSN) 这样的工具说明了这种重叠:DDPM 预测噪声,而 NCSN 预测分数,但两者都依赖于迭代去噪。开发人员可能选择扩散模型是因为其实现简单(例如,固定的噪声计划),或选择基于分数的方法是因为其在处理复杂数据流形方面的灵活性。像 PyTorch 和 TensorFlow 这样的库支持这两种方法,并且性能通常取决于网络架构或采样步骤的选择等细节。最终,两者的选择可能取决于具体的用例以及在理论优美性与实际调优之间所需的平衡。