119119
120120<h2 id =" q-002 " >面试问题:DDPM中的马尔可夫链是如何定义的?介绍一下DDPM的前向扩散过程和反向去噪过程</h2 >
121121
122- DDPM的核心是** 两个对称的一阶马尔可夫链** :一个是** 固定的前向扩散链** (逐步将数据转化为纯噪声),另一个是** 可学习的反向去噪链** (逐步从纯噪声中恢复数据)。整个模型通过变分推断训练反向链,使其精确逆转前向扩散过程。
122+ DDPM的核心是** 两个对称的一阶马尔可夫链** :一个是** 人为设计的固定前向扩散链** (逐步将数据转化为纯噪声),另一个是** 可学习的反向去噪链** (逐步从纯噪声中恢复数据)。整个模型通过变分推断训练反向链,使其精确逆转前向扩散过程。
123+
124+ ![ DDPM扩散模型的前向扩散过程和反向去噪过程示意图] ( ./imgs/DDPM扩散模型的前向扩散过程和反向去噪过程示意图.png )
123125
124126### 1. DDPM中马尔可夫链的核心定义
125127
@@ -129,9 +131,11 @@ DDPM是一个隐变量模型,其所有状态转移都满足**一阶马尔可
129131- 反向过程(生成): $p_ \theta(x_ {0: T }) = p(x_T) \prod_ {t=1}^T p_ \theta(x_ {t-1}|x_t)$ ,是** 可学习参数** 的马尔可夫链
130132- 所有隐变量 $x_1,...,x_T$ 与数据 $x_0$ 具有相同维度
131133
132- ### 2. 前向扩散过程(数据→噪声)
134+ ### 2. DDPM的前向扩散过程(数据→噪声)
135+
136+ 前向扩散过程的目标是** 逐步向原始数据添加微小的高斯噪声** ,经过 $T$ 步后将数据完全转化为标准高斯噪声。
133137
134- 前向过程的目标是 ** 逐步向原始数据添加微小的高斯噪声 ** ,经过 $T$ 步后将数据完全转化为标准高斯噪声。
138+ ![ DDPM扩散模型的前向扩散过程示意图 ] ( ./imgs/DDPM扩散模型的前向扩散过程示意图.png )
135139
136140#### 1. 转移分布定义
137141
@@ -161,58 +165,147 @@ x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, \quad \epsilon
161165- 无需逐步迭代 $T$ 步,可一步生成任意时刻的带噪声样本
162166- 当 $T$ 足够大时(论文中 $T=1000$ ), $\bar{\alpha}_ T \to 0$ , $x_T \approx \mathcal{N}(0,I)$ ,即最终状态服从标准高斯分布,作为生成过程的先验
163167
164- ### 3. 反向去噪过程 (噪声→数据)
168+ ### 3. DDPM的反向去噪过程 (噪声→数据)
165169
166- 反向过程的目标是** 学习一个马尔可夫链,精确逆转前向扩散过程** ,从标准高斯噪声 $x_T$ 出发,逐步生成清晰图像 $x_0$ 。
170+ 反向去噪过程的目标是** 学习一个马尔可夫链,精确逆转前向扩散过程** ,从标准高斯噪声 $x_T$ 出发,逐步生成清晰图像 $x_0$ 。
171+
172+ ![ DDPM扩散模型反向去噪过程示意图] ( ./imgs/DDPM扩散模型反向去噪过程示意图.png )
167173
168174#### 1. 转移分布建模
169175
170- 由于前向过程每步添加的噪声很小,反向过程的转移分布也可建模为高斯分布 :
176+ 由于前向扩散过程每步添加的噪声很小,反向去噪过程的转移分布也可建模为高斯分布 :
171177
172178``` math
173179p_\theta(x_{t-1}|x_t) = \mathcal{N}\left(x_{t-1}; \mu_\theta(x_t,t), \sigma_t^2 I\right)
174180```
175181
176- - 均值 $\mu_ \theta(x_t,t)$ :由神经网络(U-Net)学习得到,是模型的核心参数
182+ - 均值 $\mu_ \theta(x_t,t)$ :由神经网络(U-Net、DiT、Tranformer等 )学习得到,是模型的核心参数
177183- 方差 $\sigma_t^2$ :论文中设为固定值,通常取 $\sigma_t^2 = \beta_t$ 或 $\tilde{\beta}_ t = \frac{1-\bar{\alpha}_ {t-1}}{1-\bar{\alpha}_ t}\beta_t$ (两种极端情况效果相近)
178184
179- #### 2. 最优均值推导(ε-预测参数化)
185+ #### 2. 最优均值推导( $ε$ -预测参数化)
186+
187+ 反向去噪过程真正想学习的是 $p_ \theta(x_ {t-1}|x_t)$ :给定当前带噪样本 $x_t$ ,预测上一步更干净的样本 $x_ {t-1}$ 。但训练时有一个很关键的便利条件:我们手里有真实训练图像 $x_0$ ,而前向扩散过程 $q$ 又是人为定义好的高斯马尔可夫链。因此在训练阶段,可以先计算一个“标准答案”:
188+
189+ ``` math
190+ q(x_{t-1}|x_t,x_0)
191+ ```
192+
193+ 这个公式表示:如果已经知道原图 $x_0$ ,也知道加噪后的 $x_t$ ,那么中间状态 $x_ {t-1}$ 最可能是什么样。这个分布不是模型学习出来的,而是由前向扩散公式严格推出来的,所以可以作为反向去噪模型 $p_ \theta(x_ {t-1}|x_t)$ 的学习目标。
194+
195+ 根据贝叶斯定理,前向扩散过程的后验分布(已知 $x_t$ 和 $x_0$ 时 $x_ {t-1}$ 的分布)可以写成:
196+
197+ ``` math
198+ q(x_{t-1}|x_t,x_0) = \frac{q(x_t|x_{t-1},x_0)q(x_{t-1}|x_0)}{q(x_t|x_0)}
199+ ```
200+
201+ 由于前向过程满足一阶马尔可夫性, $x_t$ 在给定 $x_ {t-1}$ 后不再依赖 $x_0$ ,所以:
202+
203+ ``` math
204+ q(x_{t-1}|x_t,x_0) = \frac{q(x_t|x_{t-1})q(x_{t-1}|x_0)}{q(x_t|x_0)}
205+ ```
206+
207+ 这里三项都已经知道:
208+
209+ ``` math
210+ q(x_t|x_{t-1}) = \mathcal{N}\left(x_t;\sqrt{\alpha_t}x_{t-1},\beta_t I\right)
211+ ```
180212
181- 根据贝叶斯定理,前向过程的后验分布(已知 $x_t$ 和 $x_0$ 时 $x_ {t-1}$ 的分布)是可计算的:
213+ ``` math
214+ q(x_{t-1}|x_0) = \mathcal{N}\left(x_{t-1};\sqrt{\bar{\alpha}_{t-1}}x_0,(1-\bar{\alpha}_{t-1})I\right)
215+ ```
216+
217+ ``` math
218+ q(x_t|x_0) = \mathcal{N}\left(x_t;\sqrt{\bar{\alpha}_t}x_0,(1-\bar{\alpha}_t)I\right)
219+ ```
220+
221+ 直观理解: $q(x_t|x_ {t-1})$ 告诉我们“ $x_ {t-1}$ 经过一步加噪后要能解释当前的 $x_t$ ”, $q(x_ {t-1}|x_0)$ 告诉我们“ $x_ {t-1}$ 又必须是从原图 $x_0$ 加噪 $t-1$ 步得到的合理状态”。这两个高斯约束相乘后,仍然是一个高斯分布。因此后验分布可计算为:
182222
183223``` math
184224q(x_{t-1}|x_t,x_0) = \mathcal{N}\left(x_{t-1}; \tilde{\mu}_t(x_t,x_0), \tilde{\beta}_t I\right)
185225```
186226
187- 其中最优均值为:
227+ 其中后验方差为:
228+
229+ ``` math
230+ \tilde{\beta}_t = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t
231+ ```
232+
233+ 后验均值(也就是“如果知道真实 $x_0$ ,最合理的反向均值”)为:
188234
189235``` math
190236\tilde{\mu}_t(x_t,x_0) = \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t + \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0
191237```
192238
193- 将 $x_0 = \frac{x_t - \sqrt{1-\bar{\alpha}_ t}\epsilon}{\sqrt{\bar{\alpha}_ t}}$ (来自前向过程重参数化)代入上式,可将最优均值转化为** 预测噪声** $\epsilon$ 的形式:
239+ 这个公式看起来复杂,但含义很朴素: $\tilde{\mu}_ t$ 是 $x_t$ 和 $x_0$ 的加权平均。当前状态 $x_t$ 提供“现在已经噪到什么程度”的信息,原图 $x_0$ 提供“最终应该回到哪里”的信息,权重由噪声调度 $\alpha_t,\beta_t,\bar{\alpha}_ t$ 决定。
240+
241+ 问题来了:采样生成时我们只有 $x_t$ ,并不知道真实的 $x_0$ 。如果直接让神经网络预测均值 $\mu_ \theta(x_t,t)$ ,它需要学习一个比较绕的加权均值函数。DDPM的关键技巧是利用前向扩散的重参数化公式:
242+
243+ ``` math
244+ x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon
245+ ```
246+
247+ 将它改写为:
248+
249+ ``` math
250+ x_0 = \frac{x_t - \sqrt{1-\bar{\alpha}_t}\epsilon}{\sqrt{\bar{\alpha}_t}}
251+ ```
252+
253+ 也就是说,只要知道 $x_t$ 中混入了多少噪声 $\epsilon$ ,就可以反推出对应的干净图像 $x_0$ 的估计。将这个 $x_0$ 代入后验均值公式:
254+
255+ ``` math
256+ \tilde{\mu}_t(x_t,x_0)
257+ = \frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t
258+ + \frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}
259+ \cdot
260+ \frac{x_t-\sqrt{1-\bar{\alpha}_t}\epsilon}{\sqrt{\bar{\alpha}_t}}
261+ ```
262+
263+ 利用 $\bar{\alpha}_ t=\alpha_t\bar{\alpha}_ {t-1}$ 化简,可以得到:
264+
265+ ``` math
266+ \tilde{\mu}_t(x_t,x_0)
267+ = \frac{1}{\sqrt{\alpha_t}}\left(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon\right)
268+ ```
269+
270+ 于是,原本的“预测反向均值”问题就变成了“预测前向过程中加入的噪声”问题。训练时真实噪声 $\epsilon$ 是已知的,因为 $x_t$ 就是我们用下面这个公式人为合成出来的:
271+
272+ ``` math
273+ x_t = \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, \quad \epsilon \sim \mathcal{N}(0,I)
274+ ```
275+
276+ 所以模型只需要学习:
277+
278+ ``` math
279+ \epsilon_\theta(x_t,t) \approx \epsilon
280+ ```
281+
282+ 再把预测噪声 $\epsilon_ \theta(x_t,t)$ 代入化简后的后验均值,就得到反向过程使用的模型均值:
194283
195284``` math
196285\mu_\theta(x_t,t) = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t,t)\right)
197286```
198287
199288其中 $\epsilon_ \theta(x_t,t)$ 是神经网络,输入带噪声样本 $x_t$ 和时间步 $t$ ,输出预测的噪声 $\epsilon$ 。
200289
290+ 可以把整个逻辑串成一句话:
291+
292+ 前向过程可计算 → 后验 $q(x_ {t-1}|x_t,x_0)$ 有解析最优均值 → 最优均值依赖 $x_0$ → $x_0$ 又可以由 $x_t$ 和噪声 $ε$ 表示 → 所以学习均值等价于学习噪声 $ε$ → 训练目标变成简单的噪声预测 MSE。
293+
201294这是DDPM最关键的创新:** 将学习复杂的均值函数转化为简单的噪声预测任务** ,大大简化了训练目标。
202295
203- #### 3. 训练目标
296+ #### 3. DDPM的训练目标
204297
205- 通过最大化对数似然的变分下界,最终化简得到DDPM的简化训练目标(论文中效果最好的版本 ):
298+ 通过最大化对数似然的变分下界,我们可以最终化简得到DDPM的简化训练目标(DDPM论文中效果最好的版本 ):
206299
207300``` math
208301L_{\text{simple}}(\theta) = \mathbb{E}_{t \sim U(1,T), x_0 \sim q(x_0), \epsilon \sim \mathcal{N}(0,I)}\left[\left\|\epsilon - \epsilon_\theta\left(\sqrt{\bar{\alpha}_t}x_0 + \sqrt{1-\bar{\alpha}_t}\epsilon, t\right)\right\|^2\right]
209302```
210303
211- - 训练流程:随机采样时间步 $t$ 、原始图像 $x_0$ 和噪声 $\epsilon$ ,生成带噪声样本 $x_t$ ,让模型预测 $\epsilon$ ,计算MSE损失并反向传播
304+ 训练流程:随机采样时间步 $t$ 、原始图像 $x_0$ 和噪声 $\epsilon$ ,生成带噪声样本 $x_t$ ,让模型预测 $\epsilon$ ,计算MSE损失并反向传播。
212305
213- #### 4. 采样流程(算法2)
306+ #### 4. 采样流程
214307
215- 训练完成后,生成样本的过程如下 :
308+ 训练完成后,DDPM生成样本的过程如下 :
216309
217310** 步骤 1** :从标准高斯分布采样初始噪声 $x_T \sim \mathcal{N}(0,I)$ 。
218311
@@ -229,11 +322,11 @@ x_{t-1} = \frac{1}{\sqrt{\alpha_t}}\left(x_t - \frac{\beta_t}{\sqrt{1-\bar{\alph
229322
230323<h2 id =" q-003 " >面试问题:介绍一下DDPM中的重参数技巧</h2 >
231324
232- ** DDPM中的重参数技巧是整个模型能够高效训练的数学基石 ** 。它将原本不可导的随机采样过程转化为可导的确定性计算,不仅解决了反向传播的问题,更将DDPM的训练目标从复杂的变分下界简化为了简单的MSE损失,让扩散模型从理论构想变成了可实际训练的生成模型。
325+ ** DDPM中的重参数技巧(Reparameterization Trick)是扩散模型能够高效训练的数学基石 ** 。它将原本不可导的随机采样过程转化为可导的确定性计算,不仅解决了反向传播的问题,更将DDPM的训练目标从复杂的变分下界简化为了简单的MSE损失,让扩散模型从理论构想变成了可实际训练的生成模型。
233326
234327### 1. 重参数技巧的本质
235328
236- 重参数技巧(Reparameterization Trick)的核心思想是 :** 将随机变量的采样过程拆分为"确定性变换+独立随机噪声采样"两部分,把随机性从计算图中分离出来,使得整个过程对模型参数可导** 。
329+ 重参数技巧的核心思想是 :** 将随机变量的采样过程拆分为"确定性变换+独立随机噪声采样"两部分,把随机性从计算图中分离出来,使得整个过程对模型参数可导** 。
237330
238331在VAE中,重参数用于后验分布 $q(z|x)$ 的采样;而在DDPM中,重参数** 专门用于前向扩散过程的边缘分布 $q(x_t|x_0)$ 的采样** ,这是DDPM与其他生成模型的关键区别。
239332
@@ -294,7 +387,7 @@ x_0 = \frac{x_t - \sqrt{1-\bar{\alpha}_t}\epsilon}{\sqrt{\bar{\alpha}_t}}
294387
295388<h2 id =" q-003a " >面试问题:DDPM训练目标中的L_simple、L_vlb、混合损失各自解决什么问题?</h2 >
296389
297- DDPM的三个训练目标** 从理论严谨性到工程实用性形成了完整的梯度** : $L_ {\text{vlb}}$ 是严格的概率理论基础, $L_ {\text{simple}}$ 是工业界标准的工程实现,混合损失则兼顾了两者的优点。理解它们的取舍关系 ,是掌握扩散模型训练精髓的核心。
390+ DDPM的三个训练目标** 从理论严谨性到工程实用性形成了完整的梯度** : $L_ {\text{vlb}}$ 是严格的概率理论基础, $L_ {\text{simple}}$ 是工业界标准的工程实现,混合损失则兼顾了两者的优点。Rocky人为理解它们的取舍关系 ,是掌握扩散模型训练精髓的核心。
298391
299392### 1. 核心前提:所有损失都源自变分下界
300393
@@ -356,7 +449,7 @@ L_{\text{simple}}(\theta) = \mathbb{E}_{t \sim U(1,T), x_0 \sim q(x_0), \epsilon
356449
357450#### 3. 理论依据(为什么去掉权重依然有效)
358451
359- 论文证明 :当神经网络足够强大时,优化 $L_ {\text{simple}}$ 和优化 $L_ {\text{vlb}}$ 的** 最优解是完全一致的** 。 $L_ {\text{simple}}$ 本质上是一个** 加权的变分下界** ,只是权重与 $L_ {\text{vlb}}$ 不同,它更符合人类的视觉感知特性。
452+ DDPM论文中证明 :当神经网络足够强大时,优化 $L_ {\text{simple}}$ 和优化 $L_ {\text{vlb}}$ 的** 最优解是完全一致的** 。 $L_ {\text{simple}}$ 本质上是一个** 加权的变分下界** ,只是权重与 $L_ {\text{vlb}}$ 不同,它更符合人类的视觉感知特性。
360453
361454#### 4. 局限性
362455
@@ -391,10 +484,7 @@ L_{\text{mixed}} = \lambda L_{\text{simple}} + (1-\lambda) L_{\text{vlb}}
391484
392485其中 $\lambda \in (0,1)$ 是平衡系数,通常取 $\lambda=0.9$ 左右。
393486
394- #### 3. 解决的核心问题
395-
396- - 打破了"样本质量和对数似然不可兼得"的困境,让模型既拥有媲美GAN的生成质量,又具备概率模型的可解释性和可评估性。
397- - 适用于对概率性能有要求的场景,如数据压缩、异常检测等。
487+ 打破了"样本质量和对数似然不可兼得"的困境,让模型既拥有超越GAN的生成质量,又具备概率模型的可解释性和可评估性。
398488
399489
400490<h2 id =" q-005 " >面试问题:DDPM是预测噪声还是预测当前分布?为什么DDPM加噪声的幅度是不一致的?扩散模型中添加的是高斯噪声,能否使用其他噪声的加噪方式?</h2 >
0 commit comments