扩散模型的数学原理:从噪声消除到图像生成的完整链路

扩散模型(Diffusion Model)是一种先进的生成模型,它通过模拟数据的逐步噪声化和去噪过程来生成高质量图像。其核心思想是将数据分布逐步转化为噪声分布(正向过程),然后学习一个逆向过程来从噪声中重建数据。下面,我将逐步解释其数学原理,涵盖从噪声消除到图像生成的完整链路。整个过程基于概率模型和变分推断,确保数学表达准确(所有行内数学用 $...$ 格式,独立公式用 $$...$$ 格式)。

1. 模型概述

扩散模型将图像生成视为一个时间序列过程。给定一个真实图像 $x_0$(来自数据分布),模型通过 $T$ 个时间步逐步添加噪声,使其变为纯噪声 $x_T$(正向过程)。然后,训练一个神经网络学习逆向过程,从 $x_T$ 开始逐步去噪,生成新图像 $x_0$。关键数学工具包括马尔可夫链、高斯分布和变分下界(ELBO)。

2. 正向过程:噪声添加(从图像到噪声)

正向过程是一个马尔可夫链,每一步添加高斯噪声,将数据 $x_0$ 逐步转化为各向同性高斯噪声 $x_T$。噪声的强度由调度参数 $\beta_t$ 控制($0 < \beta_t < 1$,且 $\beta_t$ 随时间递增)。

  • 数学定义
    给定初始图像 $x_0$,正向过程定义为条件分布:
    $$ q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t I) $$
    其中,$t = 1, 2, \ldots, T$,$I$ 是单位矩阵。这意味着每一步的 $x_t$ 是 $x_{t-1}$ 的线性变换加上高斯噪声。

  • 累积效应
    通过递归,我们可以直接从 $x_0$ 计算任意 $x_t$:
    $$ x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon $$
    其中,$\epsilon \sim \mathcal{N}(0, I)$ 是标准高斯噪声,$\alpha_t = 1 - \beta_t$,$\bar{\alpha}t = \prod{s=1}^{t} \alpha_s$。当 $t = T$ 时,$\bar{\alpha}_T \approx 0$,因此:
    $$ q(x_T) \approx \mathcal{N}(0, I) $$
    这表示 $x_T$ 接近纯噪声分布。

  • 物理意义
    正向过程模拟了数据“扩散”到噪声的过程,类似于热力学中的扩散现象。噪声调度 $\beta_t$ 通常设计为线性或余弦增长,以确保平滑过渡。

3. 逆向过程:噪声消除(从噪声到图像)

逆向过程是正向过程的逆,它从噪声 $x_T$ 开始,逐步预测并去除噪声,生成新图像 $x_0$。这需要学习一个参数化模型 $p_\theta$(通常用神经网络实现),以近似真实的后验分布 $q(x_{t-1} | x_t)$。

  • 数学定义
    逆向过程也是一个马尔可夫链:
    $$ p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) $$
    其中,$\theta$ 是模型参数,$\mu_\theta$ 和 $\Sigma_\theta$ 是神经网络预测的均值和方差。方差 $\Sigma_\theta$ 通常固定为 $\sigma_t^2 I$ 以简化训练。

  • 关键推导
    真实后验 $q(x_{t-1} | x_t, x_0)$ 可解析求出(基于贝叶斯规则):
    $$ q(x_{t-1} | x_t, x_0) = \mathcal{N}(x_{t-1}; \tilde{\mu}_t(x_t, x_0), \tilde{\beta}_t I) $$
    其中,
    $$ \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, \quad \tilde{\beta}t = \frac{1 - \bar{\alpha}{t-1}}{1 - \bar{\alpha}t} \beta_t $$
    模型的目标是让 $p
    \theta$ 逼近这个分布,通过预测噪声 $\epsilon$ 来实现(因为 $x_t$ 依赖于 $\epsilon$)。

4. 训练过程:学习噪声预测

模型训练的目标是最小化负对数似然,但由于其难解性,我们使用变分下界(ELBO)。这简化为最小化噪声预测的均方误差。

  • 损失函数
    损失函数基于预测噪声的误差:
    $$ \mathcal{L}(\theta) = \mathbb{E}{t, x_0, \epsilon} \left[ | \epsilon - \epsilon\theta(x_t, t) |^2 \right] $$
    其中,$t$ 均匀采样自 $[1, T]$,$x_0$ 来自训练数据,$\epsilon \sim \mathcal{N}(0, I)$,$\epsilon_\theta$ 是神经网络(如U-Net),预测在时间步 $t$ 添加的噪声。$x_t$ 由正向过程计算:$x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon$。

  • 训练步骤

    1. 随机采样训练图像 $x_0$。
    2. 随机采样时间步 $t \in [1, T]$。
    3. 采样噪声 $\epsilon \sim \mathcal{N}(0, I)$,计算 $x_t$。
    4. 输入 $x_t$ 和 $t$ 到神经网络,输出预测噪声 $\epsilon_\theta(x_t, t)$。
    5. 计算损失 $| \epsilon - \epsilon_\theta |^2$,并通过梯度下降更新 $\theta$。
      训练完成后,$\epsilon_\theta$ 能准确预测任意 $x_t$ 处的噪声。
5. 生成过程:从噪声到图像合成

一旦模型训练好,生成新图像就是从噪声开始,逐步应用逆向过程去噪。

  • 算法步骤

    1. 采样初始噪声:$x_T \sim \mathcal{N}(0, I)$。
    2. 对 $t = T, T-1, \ldots, 1$ 逐步迭代:
      • 计算预测噪声:$\epsilon_\theta(x_t, t)$。
      • 估计 $x_{t-1}$:
        $$ x_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1 - \bar{\alpha}t}} \epsilon\theta(x_t, t) \right) + \sigma_t z $$
        其中,$z \sim \mathcal{N}(0, I)$ 是额外噪声(当 $t > 1$ 时添加,$t=1$ 时 $z=0$),$\sigma_t$ 是标准差(通常 $\sigma_t^2 = \beta_t$)。
    3. 最终输出 $x_0$ 作为生成图像。
  • 完整链路图解

    • 正向(噪声添加):$x_0 \rightarrow x_1 \rightarrow \cdots \rightarrow x_T$($x_T$ 是纯噪声)。
    • 逆向(噪声消除):$x_T \rightarrow x_{T-1} \rightarrow \cdots \rightarrow x_0$($x_0$ 是生成图像)。
      在逆向过程中,每一步 $x_t$ 被“净化”为 $x_{t-1}$,逐步减少噪声,直到恢复清晰图像。
6. 总结与应用

扩散模型的核心优势在于其稳定性和高保真生成能力,数学上通过变分推断和噪声预测实现。完整链路展示了如何从简单噪声分布生成复杂图像:

  • 噪声消除本质:逆向过程学习数据的内在结构,逐步“消除”噪声,而非直接生成。
  • 实际应用:广泛用于图像生成、超分辨率、图像编辑等(如DALL·E 2、Stable Diffusion)。训练时需大量数据和计算资源,但推理过程可控。

如果您有具体问题(如调度参数设计或代码实现),我可以进一步深入!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐