【论文阅读】Denoising Diffusion Probabilistic Models (DDPM)详细解析及公式推导

摘要

使用扩散概率模型(一类受非平衡热力学启发的潜变量模型)展示了高质量的图像合成结果。作者最佳的结果是通过在加权变分界上进行训练获得的,该界是根据扩散概率模型与带朗之万动力学的去噪分数匹配之间的新型联系设计的,并且作者的模型自然地支持一种渐进式有损解压方案,这可以被解释为自回归解码的推广。在无条件 CIFAR10 数据集上,作者获得了 9.46 的 Inception 分数和 3.17 的最先进 FID 分数。在 256x256 的 LSUN 数据集上,作者获得了与 ProgressiveGAN 相似的样本质量。我们的实现可在 https://github.com/hojonathanho/diffusion 获取。

核心思想解析

Denoising Diffusion Probabilistic Models (DDPM) 是一种基于扩散过程的生成模型,通过逐步添加和去除噪声实现数据生成。其核心分为前向扩散(加噪)和反向扩散(去噪)两个过程,最终学习从噪声中重构数据。

在这里插入图片描述

重参数化

在这里插入图片描述

前向扩散过程

前向过程将数据逐渐转化为高斯噪声,每一步根据预设的噪声调度参数 βt\beta_tβt​ 添加噪声。给定数据 x0x_0x0​,第 ttt 步的加噪结果 xtx_txt​ 服从以下分布:
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI) q(x_t|x_{t-1}) = \mathcal{N}(x_t; \sqrt{1-\beta_t}x_{t-1}, \beta_t\mathbf{I}) q(xt​∣xt−1​)=N(xt​;1−βt​​xt−1​,βt​I)
通过重参数化技巧,可直接从 x0x_0x0​ 计算任意 ttt 步的噪声数据:
xt=αˉtx0+1−αˉtϵ x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon xt​=αˉt​​x0​+1−αˉt​​ϵ
其中 αt=1−βt\alpha_t = 1-\beta_tαt​=1−βt​,αˉt=∏s=1tαs\bar{\alpha}_t = \prod_{s=1}^t \alpha_sαˉt​=∏s=1t​αs​,ϵ∼N(0,I)\epsilon \sim \mathcal{N}(0, \mathbf{I})ϵ∼N(0,I)。

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

反向扩散过程

反向过程通过神经网络学习逐步去噪。模型预测噪声 ϵθ\epsilon_\thetaϵθ​ 以重构数据,目标是最小化以下损失函数:
L=Et,x0,ϵ[∥ϵ−ϵθ(xt,t)∥2] \mathcal{L} = \mathbb{E}_{t,x_0,\epsilon}\left[\|\epsilon - \epsilon_\theta(x_t,t)\|^2\right] L=Et,x0​,ϵ​[∥ϵ−ϵθ​(xt​,t)∥2]
去噪每一步的均值和方差通过以下公式计算:
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t)) p_\theta(x_{t-1}|x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t,t), \Sigma_\theta(x_t,t)) pθ​(xt−1​∣xt​)=N(xt−1​;μθ​(xt​,t),Σθ​(xt​,t))
其中 μθ\mu_\thetaμθ​ 通常由预测噪声 ϵθ\epsilon_\thetaϵθ​ 推导得出。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

训练与生成步骤

训练阶段

  1. 从数据集中采样 x0x_0x0​,随机选择时间步 ttt。
  2. 生成噪声 ϵ\epsilonϵ 并计算 xtx_txt​。
  3. 训练神经网络 ϵθ\epsilon_\thetaϵθ​ 预测噪声,优化均方误差损失。

生成阶段

  1. 从高斯噪声 xTx_TxT​ 开始,逐步去噪至 x0x_0x0​。
  2. 每一步使用 ϵθ\epsilon_\thetaϵθ​ 预测噪声,并通过采样得到 xt−1x_{t-1}xt−1​。

关键改进与扩展

  • 噪声调度:线性或余弦调度的 βt\beta_tβt​ 影响训练稳定性和生成质量。
  • 加速采样:DDIM(Denoising Diffusion Implicit Models)通过非马尔可夫链加速生成。
  • 条件生成:通过分类器引导或嵌入条件信息实现可控生成。

代码实现要点

# 噪声预测网络结构(U-Net为例)classUNet(nn.Module):def__init__(self):super().__init__() self.time_embed = nn.Sequential( nn.Linear(embed_dim, time_emb_dim), nn.SiLU(), nn.Linear(time_emb_dim, time_emb_dim)) self.down_blocks = nn.ModuleList([DownsampleBlock(...)for _ inrange(num_layers)]) self.up_blocks = nn.ModuleList([UpsampleBlock(...)for _ inrange(num_layers)])# 训练循环核心步骤deftrain_step(x0, t): noise = torch.randn_like(x0) xt = sqrt_alphas_cumprod[t]* x0 + sqrt_one_minus_alphas_cumprod[t]* noise predicted_noise = model(xt, t) loss = F.mse_loss(predicted_noise, noise)return loss 

数学推导补充

反向过程的真实后验分布 q(xt−1∣xt,x0)q(x_{t-1}|x_t,x_0)q(xt−1​∣xt​,x0​) 可解析计算为:
q(xt−1∣xt,x0)=N(xt−1;μ~t(xt,x0),β~tI) q(x_{t-1}|x_t,x_0) = \mathcal{N}(x_{t-1}; \tilde{\mu}_t(x_t,x_0), \tilde{\beta}_t\mathbf{I}) q(xt−1​∣xt​,x0​)=N(xt−1​;μ~​t​(xt​,x0​),β~​t​I)
其中:
μ~t=αˉt−1βt1−αˉtx0+αt(1−αˉt−1)1−αˉtxt \tilde{\mu}_t = \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0 + \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t μ~​t​=1−αˉt​αˉt−1​​βt​​x0​+1−αˉt​αt​​(1−αˉt−1​)​xt​
β~t=1−αˉt−11−αˉtβt \tilde{\beta}_t = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t β~​t​=1−αˉt​1−αˉt−1​​βt​
模型通过拟合 μ~t\tilde{\mu}_tμ~​t​ 实现去噪。

Read more

C#初级开发者:AI预测重构需求下的创意守护与效率革命——老码农的幽默实战录

C#初级开发者:AI预测重构需求下的创意守护与效率革命——老码农的幽默实战录

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎点赞 + 收藏 + 关注哦 💕 📚 本文简介 本文探讨了C#初级开发者在AI时代的挑战,特别是AI分析代码库历史记录预测重构需求导致的主动性焦虑。文章分析了AI预测的工作原理,揭示了其在C#环境中的局限性,并通过代码示例和案例展示了开发者如何保持创意和主导权。作者提供了实战策略,如提升代码质量、利用AI工具辅助,以及培养业务洞察力,帮助开发者从焦虑转向高效行动。核心观点认为,AI虽能优化流程,但人类开发者的情境理解和创新思维仍是不可替代的竞争优势。 目录 * 📚 本文简介 * 📚 引言:当AI开始“读心”代码库,初级C#开发者的焦虑与转机 * 📚 一、AI分析代码库历史记录的真相:是“预言家”还是“复读机”? * 📘1、AI如何预测重构需求:基于模式匹配的“高级猜谜” * 📘2、C#代码库的特点与AI分析:强类型语言的“双刃剑”

当开发者遇上AI副驾驶:效率翻倍还是技能退化?

当开发者遇上AI副驾驶:效率翻倍还是技能退化?

在 AI 技术飞速渗透各行各业的当下,我们早已告别 “谈 AI 色变” 的观望阶段,迈入 “用 AI 提效” 的实战时代 💡。无论是代码编写时的智能辅助 💻、数据处理中的自动化流程 📊,还是行业场景里的精准解决方案 ,AI 正以润物细无声的方式,重构着我们的工作逻辑与行业生态 🌱。今天,我想结合自身实战经验,带你深入探索 AI 技术如何打破传统工作壁垒 🧱,让 AI 真正从 “概念” 变为 “实用工具” ,为你的工作与行业发展注入新动能 ✨。 文章目录 * 当开发者遇上AI副驾驶:效率翻倍还是技能退化? 🚀 * 一、AI副驾驶的崛起:从辅助到协作 💡 * 1.1 什么是AI副驾驶? * 1.2 技术基础:大模型如何理解代码? * 二、效率翻倍:AI如何加速开发流程 ⚡ * 2.1 减少样板代码(

原生多模态AI架构:统一训练与跨模态推理的系统实现与性能优化

原生多模态AI架构:统一训练与跨模态推理的系统实现与性能优化

人们眼中的天才之所以卓越非凡,并非天资超人一等而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。———— 马尔科姆·格拉德威尔 🌟 Hello,我是Xxtaoaooo! 🌈 “代码是逻辑的诗篇,架构是思想的交响” 在人工智能快速发展的今天,多模态AI已经从实验室走向了产业应用的前沿。从GPT-4V到Gemini,从CLIP到ImageBind,业界对多模态模型的探索正在经历从"拼接式融合"到"原生统一"的范式转变。传统的多模态方案往往采用预训练单模态模型后再进行跨模态对齐,这种方式虽然实现简单,但在模态间的深度语义理解、计算效率和推理一致性上存在明显瓶颈。本文将深入探讨原生多模态AI架构的核心设计理念,从统一编码空间的构建、跨模态注意力机制的实现,到分布式训练优化和推理加速策略,系统性地剖析如何构建一个高性能的原生多模态AI系统。 文章将首先解析原生多模态架构与传统方案的本质区别,阐述统一Token空间的设计哲学;随后深入到技术实现层面,详细讲解多模态Transformer的架构设计、跨模态注意力的计算优化、以及混合精度训练的工程实践;在性能优化部分

AI资源白嫖——Trae国际版一周年福利,免费用一个月600次快速请求

AI资源白嫖——Trae国际版一周年福利,免费用一个月600次快速请求

AI资源白嫖——Trae国际版一周年福利,免费用一个月600次快速请求 作为字节跳动推出的全球首款AI原生IDE,Trae自上线以来就凭借强大的代码生成、多模型适配能力圈粉无数开发者。恰逢Trae国际版上线一周年(1月20日周年庆),官方开启了重磅福利大放送,无论你是免费用户还是Pro用户,都能领到专属快速请求额度,堪称AI编程党的“羊毛盛宴”。今天就带大家吃透这份福利,手把手教你领取、使用,顺带解锁Trae国际版的隐藏玩法。 一、福利核心详情:谁能领?领多少? 本次一周年福利面向Trae国际版全量用户,无门槛覆盖免费用户与Pro用户,额度与有效期根据用户类型差异化配置,具体如下: * 免费用户:直接赠送600次Fast Request(快速请求),有效期至北京时间2026年2月14日10:00,足足一个月的使用期限,日常开发需求完全够用。 * Pro用户:升级赠送800次Fast Request,有效期延长至北京时间2026年3月14日10:00,适配专业开发者高频使用场景。 福利适用范围覆盖Trae国际版IDE全场景,包括Chat模式、Builder模式、SOLO模