深度学习·DDPM

文章目录

DDPM

一、前向加噪(已知过程)

1️⃣ 单步加噪

q ( x t ∣ x t − 1 ) = N ( x t ; ; α t x t − 1 , ; ( 1 − α t ) I ) q(x_t \mid x_{t-1}) = \mathcal{N}\big(x_t;; \sqrt{\alpha_t}x_{t-1},; (1-\alpha_t)I\big) q(xt∣xt−1)=N(xt;;αt xt−1,;(1−αt)I)

含义:

  • 每一步 = "缩小原图 + 加一点高斯噪声"
  • α t \alpha_t αt 控制保留多少原信息

2️⃣ 多步闭式(最关键)

q ( x t ∣ x 0 ) = N ( x t ; ; α ˉ t x 0 , ; ( 1 − α ˉ t ) I ) q(x_t \mid x_0) = \mathcal{N}\big(x_t;; \sqrt{\bar{\alpha}_t}x_0,; (1-\bar{\alpha}_t)I\big) q(xt∣x0)=N(xt;;αˉt x0,;(1−αˉt)I)

等价写法:

x t = α ˉ t x 0 + 1 − α ˉ t , ϵ , ϵ ∼ N ( 0 , I ) x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t},\epsilon,\quad \epsilon \sim \mathcal{N}(0,I) xt=αˉt x0+1−αˉt ,ϵ,ϵ∼N(0,I)

含义(非常重要):

任意一步的加噪,可以直接由"原图 + 一次高斯噪声"得到


二、反向去噪(模型学习的对象)

3️⃣ 模型定义

p θ ( x t − 1 ∣ x t ) p_\theta(x_{t-1} \mid x_t) pθ(xt−1∣xt)

含义:

  • 学习从"更噪的图"恢复"稍微干净一点的图"
  • 这是整个生成过程的核心

三、训练目标(ELBO)

4️⃣ 原始目标

min ⁡ − log ⁡ p θ ( x 0 ) \min -\log p_\theta(x_0) min−logpθ(x0)


5️⃣ 变分下界(ELBO)

L E L B O = E ∗ q ( x ∗ 1 : T ∣ x 0 ) log ⁡ q ( x 1 : T ∣ x 0 ) log ⁡ p θ ( x 0 : T ) \mathcal{L}_{ELBO}= \mathbb{E}*{q(x*{1:T}\mid x_0)} \left \\log q(x_{1:T}\\mid x_0) \\log p_\\theta(x_{0:T}) \\right LELBO=E∗q(x∗1:T∣x0)logq(x1:T∣x0)logpθ(x0:T)

含义:

用一个"可计算的上界"去优化原本不可计算的似然


四、最关键的一步(KL 形式)

训练本质变成:

E ∗ q K L ( q ( x ∗ t − 1 ∣ x t , x 0 ) ; ∣ ; p θ ( x t − 1 ∣ x t ) ) \mathbb{E}*q\left \\mathrm{KL}\\big(q(x\*{t-1}\\mid x_t,x_0);\|;p_\\theta(x_{t-1}\\mid x_t)\\big) \\right E∗qKL(q(x∗t−1∣xt,x0);∣;pθ(xt−1∣xt))

含义:

让模型学到"真实的去噪过程"


五、最终训练目标(实际用的)

6️⃣ 噪声预测目标(核心)

L = E t , x 0 , ϵ ∣ ϵ − ϵ ∗ θ ( x t , 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


这一公式的真正含义:

  • ϵ \epsilon ϵ:真实加进去的噪声(已知)
  • ϵ θ \epsilon_\theta ϵθ:模型预测的噪声
  • 目标:让两者尽可能一致

六、为什么是"预测噪声"而不是"预测图像"

关键等价关系:

x 0 1 α ˉ t ( x t − 1 − α ˉ t , ϵ ) x_0 \frac{1}{\sqrt{\bar{\alpha}_t}} \left( x_t - \sqrt{1-\bar{\alpha}_t},\epsilon \right) x0αˉt 1(xt−1−αˉt ,ϵ)

含义:

只要知道噪声,就可以恢复原图

因此:

  • 预测 x 0 x_0 x0 ⇔ 预测 ϵ \epsilon ϵ
  • 但预测 ϵ \epsilon ϵ 更稳定、更容易训练

七、生成过程(训练完成后)

7️⃣ 采样公式

x t − 1 由 x t 和 ϵ θ ( x t , t ) 计算 x_{t-1} \text{由 } x_t \text{ 和 } \epsilon_\theta(x_t,t) \text{ 计算} xt−1由 xt 和 ϵθ(xt,t) 计算

(具体形式略)


含义:

  • 从纯噪声 x T ∼ N ( 0 , I ) x_T \sim \mathcal{N}(0,I) xT∼N(0,I) 开始
  • 一步步去噪,最终得到图像

八、核心逻辑总结


前向过程(已知)

x 0 → x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_0 \rightarrow x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon x0→xt=αˉt x0+1−αˉt ϵ


训练目标

ϵ θ ( x t , t ) ≈ ϵ \epsilon_\theta(x_t,t) \approx \epsilon ϵθ(xt,t)≈ϵ


生成过程

x T → x T − 1 → ⋯ → x 0 x_T \rightarrow x_{T-1} \rightarrow \cdots \rightarrow x_0 xT→xT−1→⋯→x0


九、最关键的三条(建议记忆)

1️⃣ 加噪公式

x t = α ˉ t x 0 + 1 − α ˉ t ϵ x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon xt=αˉt x0+1−αˉt ϵ

👉 任意步加噪


2️⃣ 模型输出

ϵ θ ( x t , t ) \epsilon_\theta(x_t,t) ϵθ(xt,t)

👉 模型预测噪声


3️⃣ 训练目标

∣ ϵ − ϵ θ ∣ 2 |\epsilon - \epsilon_\theta|^2 ∣ϵ−ϵθ∣2

👉 实际优化目标


一句话总结

DDPM 的核心数学本质:用高斯加噪构造一个可控的概率路径,并训练模型去预测该路径中的噪声,从而学习其逆过程。

推导过程







相关推荐
Darling噜啦啦5 天前
列表转树算法深度解析:从 Map 到 Reduce 的两种实现,面试高频考点
数据结构·算法·面试
小小工匠6 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
玖玥拾6 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Qres8216 天前
算法复键——树状数组
数据结构·算法
牛油果子哥q7 天前
并查集(DSU)超精讲,路径压缩、按秩合并、万能模板、连通性判定、最小生成树与刷题实战全解
数据结构·c++·最小生成树·并查集
凌波粒7 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
WL学习笔记7 天前
单项不带头不循环链表
数据结构·链表
小糯米6017 天前
JS 数组
数据结构·算法·排序算法
小欣加油7 天前
leetcode3612 用特殊操作处理字符串I
数据结构·c++·算法·leetcode·职场和发展
凌波粒7 天前
LeetCode--90.子集II(回溯算法)
数据结构·算法·leetcode