1. 扩散模型基础概念解析在计算机视觉领域生成模型一直是个热门研究方向。DDPMDenoising Diffusion Probabilistic Models作为近年来备受关注的生成模型其核心思想是通过模拟物理扩散过程来生成高质量图像。与传统的GAN或VAE不同DDPM采用了一种全新的渐进式生成策略。扩散模型的基本原理可以类比为墨水在水中扩散的过程。想象一下如果我们把一滴墨水滴入清水墨水分子会逐渐扩散直到完全溶解在水中。DDPM的前向过程forward process就是模拟这个扩散过程而反向过程reverse process则相当于让墨水分子重新聚集回原始状态。关键提示DDPM的前向过程是确定的马尔可夫链而反向过程则是需要学习的参数化模型。2. DDPM数学原理深度拆解2.1 前向扩散过程前向过程定义了一个固定的马尔可夫链逐步向数据添加高斯噪声。给定初始数据分布x₀~q(x₀)前向过程在T个时间步上逐步添加噪声产生一系列潜在变量x₁,...,x_T。每个时间步的转移概率为q(xₜ|xₜ₋₁) N(xₜ; √(1-βₜ)xₜ₋₁, βₜI)其中βₜ是噪声调度参数通常随着t的增加而增大。这个过程的特殊之处在于我们可以直接计算任意时间步t的分布q(xₜ|x₀) N(xₜ; √ᾱₜx₀, (1-ᾱₜ)I)这里αₜ1-βₜᾱₜ∏ᵗₛ₌₁αₛ。这个性质让我们可以高效地训练模型因为我们可以直接从x₀采样xₜ而不需要逐步计算所有中间状态。2.2 反向生成过程反向过程的目标是从噪声中重建原始数据。我们定义另一个马尔可夫链参数化为pθ(xₜ₋₁|xₜ)逐步去噪数据pθ(xₜ₋₁|xₜ) N(xₜ₋₁; μθ(xₜ,t), Σθ(xₜ,t))其中μθ和Σθ是神经网络学习的参数。关键在于当βₜ足够小时反向过程的转移分布也是高斯的这使得我们可以有效地训练模型。2.3 损失函数推导DDPM的训练目标是最大化对数似然的下界ELBO。经过推导我们可以得到以下形式的损失函数L Eₜ,x₀,ε[||ε - εθ(√ᾱₜx₀ √(1-ᾱₜ)ε, t)||²]这个结果表明我们可以训练一个网络εθ来预测添加到数据中的噪声ε。这种参数化方式在实践中表现非常稳定是DDPM成功的关键之一。3. 手写推导全流程解析3.1 前向过程推导细节让我们从定义前向过程开始。给定初始数据点x₀我们定义一系列逐渐增加噪声的变量x₁,...,x_T。每个步骤的转换可以表示为xₜ √αₜxₜ₋₁ √(1-αₜ)zₜ₋₁其中zₜ₋₁ ~ N(0,I)。通过递归展开这个关系我们可以得到xₜ √ᾱₜx₀ √(1-ᾱₜ)z这个推导的关键在于利用高斯分布的性质两个独立高斯随机变量的和仍然是高斯的且方差相加。3.2 反向过程推导细节反向过程的目标是学习q(xₜ₋₁|xₜ,x₀)。利用贝叶斯规则我们可以证明q(xₜ₋₁|xₜ,x₀) ∝ q(xₜ|xₜ₋₁)q(xₜ₋₁|x₀)经过推导可以得到q(xₜ₋₁|xₜ,x₀) N(xₜ₋₁; μ̃ₜ(xₜ,x₀), β̃ₜI)其中 μ̃ₜ(xₜ,x₀) (√ᾱₜ₋₁βₜ)/(1-ᾱₜ)x₀ (√αₜ(1-ᾱₜ₋₁))/(1-ᾱₜ)xₜ β̃ₜ (1-ᾱₜ₋₁)/(1-ᾱₜ)βₜ这个结果表明如果我们知道x₀就可以精确计算反向过程的均值。3.3 训练目标推导为了训练模型我们需要最小化负对数似然的上界。经过一系列推导我们可以将目标简化为Eₜ,x₀,ε[||ε - εθ(xₜ,t)||²]这意味着我们可以训练一个网络来预测噪声ε而不是直接预测均值。这种参数化方式在实践中更加稳定。4. 实现细节与技巧4.1 噪声调度选择噪声调度βₜ的选择对模型性能至关重要。常见的选择包括线性调度βₜ从β₁线性增加到β_T余弦调度基于余弦函数调整ᾱₜ实践中余弦调度通常能产生更好的结果因为它在前向过程的早期和后期变化更平缓。4.2 网络架构设计DDPM通常使用U-Net架构作为主干网络包含以下关键组件下采样块逐步减少空间分辨率上采样块逐步恢复空间分辨率残差连接保留低频信息注意力机制捕捉长距离依赖网络还需要将时间步t作为输入通常通过位置编码实现。4.3 采样加速技巧标准DDPM采样需要T步通常T1000这在实际应用中可能太慢。几种加速方法包括DDIMDenoising Diffusion Implicit Models通过非马尔可夫链实现加速步长缩减使用更大的步长减少总步数知识蒸馏训练一个更小的模型来模仿原始模型5. 常见问题与解决方案5.1 训练不稳定问题症状损失值波动大生成质量不一致解决方案检查噪声调度是否合理降低学习率增加批量大小使用梯度裁剪5.2 生成图像模糊问题症状生成的图像缺乏细节过于平滑解决方案增加模型容量调整噪声调度减少后期噪声延长训练时间尝试不同的网络架构5.3 采样速度慢问题症状生成一张图像需要太长时间解决方案实现DDIM采样减少总步数使用混合精度推理考虑模型蒸馏6. 完整手写推导笔记要点在我的手写推导笔记中详细记录了以下关键内容前向过程联合分布的推导反向过程条件分布的贝叶斯推导ELBO证据下界的详细展开从KL散度到噪声预测目标的转换重参数化技巧的应用各时间步噪声权重的计算这些笔记特别强调了推导过程中的关键步骤和容易出错的细节。例如在计算反向过程的条件分布时需要特别注意高斯分布的归一化常数处理。另一个容易混淆的点是在推导ELBO时各项的物理意义解释。在实际实现中我发现将理论推导与代码实现一一对应非常重要。例如噪声预测网络的设计直接对应于理论中的εθ(xₜ,t)而时间步的嵌入方式则对应于理论中对连续时间t的处理。