1. 扩散模型损失函数的核心逻辑
第一次接触扩散模型时,我被那个看似简单的MSE损失函数迷惑了——为什么预测噪声就能实现高质量的图像生成?直到亲手推导了变分下界(ELBO)到噪声预测损失的转化过程,才真正理解其中的精妙设计。这个推导过程不仅解释了损失函数的合理性,更为调参和debug提供了理论依据。
扩散模型本质上是在解决一个概率分布逐步转换的问题。前向过程(加噪)将数据分布逐渐转化为高斯噪声,而反向过程(去噪)则需要学习如何逆转这个过程。直接建模反向过程的条件概率p(x_{t-1}|x_t)面临两大难题:一是高维空间的条件概率估计本身就很困难;二是需要保持整个时间序列的一致性。
变分推断的关键思路是用一个参数化的分布q_θ(x_{t-1}|x_t)来近似真实的反向过程。这个近似的好坏通过KL散度来衡量,而ELBO就是这个KL散度的下界。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 从ELBO到噪声预测的数学之旅
2.1 ELBO的原始形式
完整的ELBO表达式包含多个项:
code复制ELBO = E[log p(x_T)] + Σ_{t=1}^T E[log p_θ(x_{t-1}|x_t) - log q(x_t|x_{t-1})]
其中:
- 第一项log p(x_T)是最终噪声的似然,通常可以忽略
- 第二项中的log p_θ(x_{t-1}|x_t)衡量反向过程的准确性
- log q(x_t|x_{t-1})衡量前向过程的确定性
在实际推导中,我们会发现大多数项都可以简化或抵消,最终留下的核心项与噪声预测直接相关。
2.2 关键简化步骤
通过一系列数学变换(详见附录中的完整推导),ELBO可以简化为:
code复制L_simple = E_{t,x_0,ε}[||ε - ε_θ(√ᾱ_t x_0 + √(1-ᾱ_t)ε, t)||^2]
这个简化过程有几个关键点:
- 利用重参数化技巧将x_t表示为x_0和ε的线性组合
- 假设反向过程的条件分布也是高斯分布
- 忽略与参数θ无关的项
最终形式告诉我们:最小化预测噪声ε_θ与实际噪声ε的MSE损失,实际上是在最大化ELBO下界。
3. 噪声预测损失的实现细节
3.1 时间步嵌入的实践技巧
噪声预测网络ε_θ需要知道当前的时间步t,常见实现方式有
