# DDPM从条件贝叶斯到反向过程



# DDPM：从条件贝叶斯到反向过程

目标：在给定 $x^{(t)}$ 时，得到**反向**条件分布 $p_\theta(x^{(t-1)} \mid x^{(t)})$，用于从噪声逐步去噪生成样本。下面按“贝叶斯形式 → 为何条件于 $x^{(0)}$ → 边际与条件之别 → 各分布特性”整理推理与结论。

---

## 1. 贝叶斯形式

**1.1 不条件于 $x^{(0)}$ 时**，反向条件分布可写为：

$$
p_\theta (x^{(t-1)} \mid x^{(t)}) = \frac{p_\theta(x^{(t)} \mid x^{(t-1)})\, p_\theta(x^{(t-1)})}{p_\theta(x^{(t)})}
$$

**1.2 条件于 $x^{(0)}$ 时**（推导与训练中用）：

$$
p_\theta (x^{(t-1)} \mid x^{(t)}, x^{(0)}) = \frac{p_\theta(x^{(t)} \mid x^{(t-1)}, x^{(0)})\, p_\theta(x^{(t-1)} \mid x^{(0)})}{p_\theta(x^{(t)} \mid x^{(0)})}
$$

在前向扩散中，用固定的 $q$ 替代上式中的转移与边际，并利用马尔可夫性 $q(x^{(t)} \mid x^{(t-1)}, x^{(0)}) = q(x^{(t)} \mid x^{(t-1)})$，则分子、分母中出现的 $q(x^{(t)} \mid x^{(t-1)})$、$q(x^{(t-1)} \mid x^{(0)})$、$q(x^{(t)} \mid x^{(0)})$ 均为**已知的高斯、有闭式**，故**后验 $q(x^{(t-1)} \mid x^{(t)}, x^{(0)})$ 可解析求出**（单高斯，均值、方差均有闭式），便于推导反向分布的参数形式并构造训练目标（如对 $\epsilon$ 的回归）。采样时没有 $x^{(0)}$，实际使用的是模型学到的 $p_\theta(x^{(t-1)} \mid x^{(t)})$。

---

## 2. 为何必须显式写出 $x^{(0)}$？

- $q(x^{(t-1)} \mid x^{(0)})$、$q(x^{(t)} \mid x^{(0)})$ 在**给定 $x^{(0)}$** 时是单高斯、有闭式，没有问题。
- **我们真正需要的是**：**不给定 $x^{(0)}$** 的反向条件分布 $q(x^{(t-1)} \mid x^{(t)})$。

由贝叶斯：

$$
q(x^{(t-1)} \mid x^{(t)}) \propto q(x^{(t)} \mid x^{(t-1)})\, q(x^{(t-1)}).
$$

其中：

- $q(x^{(t-1)}) = \int q(x^{(t-1)} \mid x^{(0)})\, p_\text{data}(x^{(0)})\,\mathrm{d}x^{(0)}$ 是对**整个数据分布**的积分，相当于无穷多个高斯的混合，**没有闭式**；
- 分母 $q(x^{(t)})$ 同样不可解析（见下节）。

因此：**不给定 $x^{(0)}$ 时，$q(x^{(t-1)} \mid x^{(t)})$ 无法解析求出**。只有**固定 $x^{(0)}$** 时，后验 $q(x^{(t-1)} \mid x^{(t)}, x^{(0)})$ 才是单峰高斯且均值、方差都有闭式；我们利用这一可解析形式做推导和训练，再用神经网络去逼近“在不知道 $x^{(0)}$ 时”的反向转移 $p_\theta(x^{(t-1)} \mid x^{(t)})$。

---

## 3. $q(x^{(t)})$ 与 $q(x^{(t)} \mid x^{(0)})$ 的区别：为何 $q(x^{(t)})$ 不是高斯？

**3.1 给定 $x^{(0)}$ 时（条件分布）**

$$
q(x^{(t)} \mid x^{(0)}) = \mathcal{N}\big(x^{(t)};\ \sqrt{\bar\alpha_t}\, x^{(0)},\ (1-\bar\alpha_t)\mathbf{I}\big)
$$

这是**一个**高斯，有闭式、可采样、可求密度。

**3.2 不给定 $x^{(0)}$ 时（边际分布）**

$$
q(x^{(t)}) = \int q(x^{(t)} \mid x^{(0)})\, p_\text{data}(x^{(0)})\,\mathrm{d}x^{(0)}.
$$

含义：先按数据分布采样 $x^{(0)}$，再按前向扩散加噪到 $t$ 步，得到的 $x^{(t)}$ 的分布。

**3.3 为什么 $q(x^{(t)})$ 不是高斯？**

- 每个固定的 $x^{(0)}$ 对应**一个**高斯 $q(x^{(t)}\mid x^{(0)}) = \mathcal{N}(\sqrt{\bar\alpha_t}x^{(0)}, (1-\bar\alpha_t)\mathbf{I})$，**均值**为 $\sqrt{\bar\alpha_t}x^{(0)}$、方差固定。
- 对 $x^{(0)}$ 积分相当于按 $p_\text{data}(x^{(0)})$ 加权混合这些高斯，每个 $x^{(0)}$ 对应**不同均值**的高斯。
- **不同均值的高斯做混合，一般不再是单高斯**（仅 trivial 情形如单点退化为一个高斯）。
- 此外 $p_\text{data}(x^{(0)})$ 未知（只有样本），该积分**解析算不出**，故 $q(x^{(t)})$ 既无闭式，也不是“一个”高斯。

**小结：**

- “加噪后**在给定 $x^{(0)}$ 下**是高斯” ✓  
- “加噪后**边际** $q(x^{(t)})$ 是高斯且能解析写出” ✗  

因此必须先固定 $x^{(0)}$，用可解析的 $q(x^{(t-1)} \mid x^{(t)}, x^{(0)})$ 来推导和训练，再用网络逼近不给定 $x^{(0)}$ 时的反向 $q(x^{(t-1)}\mid x^{(t)})$。

---

## 4. 各分布特性小结

**术语约定**：**可解析** = 有闭式（如 $\mathcal{N}(\mu,\Sigma)$ 且 $\mu,\Sigma$ 由已知量写出）；**可采样** = 在已知参数下能直接采样；**可求** = 在给定输入下能算密度或所需统计量。

| 分布 | 含义 | 单高斯? | 闭式/可解析? | 可采样? | 可求密度等? | 说明 |
|------|------|---------|----------------|---------|-------------|------|
| $q(x^{(t)} \mid x^{(t-1)})$ | 前向单步转移 | 是 | 是 | 是 | 是 | $\mathcal{N}(\sqrt{1-\beta_t}x^{(t-1)}, \beta_t\mathbf{I})$，完全已知。 |
| $q(x^{(t)} \mid x^{(0)})$ | 从 $x^{(0)}$ 加噪到 $t$ 步 | 是 | 是 | 是 | 是 | $\mathcal{N}(\sqrt{\bar\alpha_t}x^{(0)}, (1-\bar\alpha_t)\mathbf{I})$。 |
| $q(x^{(t-1)} \mid x^{(0)})$ | 从 $x^{(0)}$ 加噪到 $t-1$ 步 | 是 | 是 | 是 | 是 | 同上，时间步 $t-1$。 |
| $q(x^{(t-1)} \mid x^{(t)}, x^{(0)})$ | 给定 $x^{(t)}, x^{(0)}$ 的反向后验 | 是 | 是 | 是 | 是 | 均值 $\tilde\mu_t$、方差 $\tilde\beta_t$ 有闭式；**推导与训练的关键**。 |
| $q(x^{(t)})$ | 前向 $t$ 步边际（对数据） | 否 | 否 | 是* | 否 | 混合分布；$p_\text{data}$ 未知故无闭式。* 采样：先采 $x^{(0)}\sim p_\text{data}$ 再采 $x^{(t)}\sim q(\cdot\mid x^{(0)})$。 |
| $q(x^{(t-1)})$ | 前向 $t-1$ 步边际 | 否 | 否 | 是* | 否 | 同上。 |
| $q(x^{(t-1)} \mid x^{(t)})$ | 真实反向转移（无 $x^{(0)}$） | 否 | 否 | 否 | 否 | 依赖不可解析的 $q(x^{(t-1)})$、$q(x^{(t)})$；需用网络逼近。 |
| $p_\theta(x^{(t-1)} \mid x^{(t)})$ | 模型学得的反向转移 | 是 | 是（给定 $\theta$） | 是 | 是 | 用 $\epsilon_\theta$ 等参数化；训练目标来自 $q(x^{(t-1)}\mid x^{(t)}, x^{(0)})$。 |
| $p_\text{data}(x^{(0)})$ | 数据分布 | — | 否 | 是** | 否 | 仅有样本。** 采样即从数据集取样本。 |

- **训练**：利用可解析、可采样的 $q(x^{(t)}\mid x^{(0)})$、$q(x^{(t-1)}\mid x^{(t)}, x^{(0)})$ 与 $p_\text{data}$ 的样本，构造损失（如对 $\epsilon$ 的回归），训练 $p_\theta(x^{(t-1)}\mid x^{(t)})$。
- **采样**：从 $x^{(T)}\sim \mathcal{N}(0,\mathbf{I})$ 出发，逐步用 $p_\theta(x^{(t-1)}\mid x^{(t)})$ 采样，不依赖 $x^{(0)}$ 或 $q(x^{(t-1)}\mid x^{(t)})$ 的闭式。

