在训练扩散模型时,最常见的损失函数侧重于测量预测噪声与扩散过程中添加的实际噪声之间的差异。核心思想是训练模型通过预测每个步骤中的噪声来逆转数据的逐渐噪声化。使用的主要损失函数是模型预测噪声与应用于数据的真实噪声之间的均方误差 (MSE) 损失。这种方法简单明了,并符合扩散过程的迭代去噪目标。例如,在去噪扩散概率模型 (DDPM) 框架中,损失简化为最小化模型输出与每个时间步添加的噪声之间的 MSE。这是可行的,因为模型通过逐步改进其噪声预测来学习重建原始数据。
一些扩散模型的变体使用 MSE 损失的加权版本来考虑不同时间步的噪声水平差异。在训练期间,较早的时间步(数据噪声较小)可能会被分配较低的权重,而较晚的时间步(数据高度损坏)会获得较高的权重。这种加权有助于模型专注于学习对更具挑战性的、噪声更大的状态进行去噪。例如,最初的 DDPM 论文引入了一种简化的加权方案,避免了复杂的计算,从而使训练在计算上更有效率。此外,一些实现使用变分下界 (VLB) 损失,该损失源于最大化模型概率假设下数据的可能性。然而,在实践中,由于 VLB 损失的计算效率和稳定的训练行为,通常会被近似或替换为更简单的 MSE 损失。
在特殊情况下,开发人员可能会将 MSE 损失与其他目标相结合。例如,在训练潜在扩散模型(如 Stable Diffusion)时,可以添加 L1 或感知损失以提高潜在空间中重建的质量。但是,这些添加项是核心噪声预测损失的辅助项。损失函数的选择通常取决于特定的架构以及训练稳定性和输出质量之间的权衡。对于大多数开发人员来说,从标准的 MSE 损失开始(如 Hugging Face 的 Diffusers 或 OpenAI 的代码库中所实现的那样)可以提供可靠的基线。实际实现通常涉及按时间步特定因子缩放损失或调整学习率以平衡收敛速度和稳定性。