Administrator
发布于 2026-09-09 / 0 阅读
0
0

扩散模型(Diffusion)

1. 图像生成的基本思路:

图像生成的目标是让计算机画出新图像,但计算机并不知道怎么直接画图。所以,我们需要一种方法来指导计算机。这里的核心方法是使用 随机数 来产生图像。具体来说,我们会生成一个随机的向量,这个向量遵循正态分布,神经网络负责把这些随机数“转译”成一张图片。这就好比给神经网络一串密码,它能根据密码解密成一张独特的图片。每次我们生成新图像时,只需要换一个随机数输入,神经网络就会生成一张新图片。

2. 神经网络是如何学习的:

为了让神经网络学会生成好看的图片,它需要“模仿”真实的图片。比如我们给神经网络提供很多同类型的图片(比如人脸),神经网络会反复尝试,把随机向量变成图片,并不断调整它的参数,直到生成的图片看起来像训练数据。这就像训练一个艺术家,你给他看很多范例,他会慢慢学会画出类似风格的画。

3. 图像生成的难点:

相比其他任务,图像生成更困难,因为它缺乏明确的“标准答案”。举几个例子:

​ • 分类任务(容易):给AI一个图片,告诉它是“猫”还是“狗”,AI只要努力把答案接近标准就行。

​ • 验证任务(容易):给AI两张图片,告诉它是不是同一个人,AI只需要判断对错。

​ • 图像生成(困难):我们只告诉AI“画得像训练图片一样”,但没有告诉它应该画哪一张,也没有明确的评分标准。

这个问题就像教一个画家创作新作品,只告诉他“风格要像这组画”,但并不给具体的参考画。这对AI来说更难,需要更精妙的方法才能解决。

为了解决这一问题,人们专门设计了一些用于生成图像的神经网络架构。这些架构中比较出名的有生成对抗模型(GAN)和变分自编码器(VAE)。

GAN,顾名思义就是干,用两个神经网络互相对着干来改进图像生成质量,生成器负责根据随机向量生成图片,判别器负责判断图片是不是训练集中真实存在的图片,生成器想骗过判别器,判别器不想被骗到,二者相互进步

VAE 提出了一种逆向思维的方法,生成图片太难了,那就先学会从图片中提取特征(即向量),然后再学着用这些特征重建图片编码器负责把输入图片变成特征向量,解码器负责把向量还原成新图像。VAE最大的亮点是有了标准答案,直接和原图比较,计算它们的差异,这样网络就知道怎么调整自己了。 更详细内容见 VAE

举个例子,编码器是翻译家,把一幅图像翻译成“关键特征的描述”(向量),解码器是画家,根据这些描述把图像重新画出来,如果翻译得准确,画出来的图像就会和原始图像一模一样。否则,翻译家和画家都会反复修改,直到结果满意。

但是问题是VAE 效果一般,GAN训练起来不方便,因此Diffusion应运而生

扩散模型

扩散模型是一种改进的生成网络架构,可以看作是一个特殊的变分自编码器(VAE),设计了一个更简单有效的训练方式,同时生成效果接近甚至超越GAN。

Diffusion的核心思想是 从有序到无序,再回到有序 (灵感来自热力学) ,在热力学中,物体的状态可以通过外界干扰(比如加入噪声)逐渐变得无序,对应到图像生成任务,就是从训练集的图像(有序)出发,逐步添加噪声,让它变成随机分布(无序),反过来,如果学会了如何从无序恢复到有序,就可以从随机噪声生成清晰的图像。

举个例子,一个干净的玻璃窗,我们用喷雾器喷上越来越多的水雾(噪声),最后玻璃变得模糊不清。如果有人学会了擦掉这些水雾(去噪),就能让模糊的玻璃重新变得清晰。扩散模型的解码器就是那个“擦玻璃”的人。

和VAE的区别

传统的VAE还需要把图像变成低维的潜在空间特征向量,在扩散模型中就不需要这么麻烦了,不断地添加噪声就行(扩散模型始终操作的是“完整的图像”)。这种加噪的过程不需要学习,直接用固定规则(比如每一步加一点随机噪声)完成,避免了编码器复杂的训练。因此,扩散模型避免了GAN中复杂的对抗训练,又比VAE更高效,最关键的是,比VAE容易理解。

运行过程

扩散模型的工作流程分成两步:正向扩散反向去噪,可以把它们类比为 VAE 中的编码和解码。

在正向过程中,我们从一张清晰的图片开始(输入 x_0 ),通过一次次“加噪声”的操作,使得这张图片逐渐变得模糊,最后变成完全随机的噪声图片 x_T ,符合标准正态分布。

反向过程的目标是逆转这个加噪的过程,从一张完全随机的噪声图像 x_T 出发,通过一步步“去噪声”的操作,让图像逐渐清晰起来,最终还原成原来的清晰图像 x_0

在这个过程中,神经网络的任务是学习这个“去噪声”的操作,它需要学会每一步该如何减掉噪声,抵消正向过程中的加噪效果,训练完成后,我们只需要从正态分布中随机采一个噪声图 x_T,让网络一步步去噪,就能生成一张新图。

就像把喷满颜料的白纸(随机噪声)慢慢擦干净(去噪),最后还原出纸上的原图(清晰图像)。神经网络学习这个逐步去噪的优化方式比直接生成整个图片更加容易学会。

Diffusion 的数学模型

扩散模型的前向过程,其实就是一个“逐步加噪”的过程,目标是把一张清晰的图像,慢慢变成一张接近标准正态分布的纯噪声图。但这里的“加噪声”并不是简单粗暴地往图像上叠一层随机噪声,而是更精细地设计了一个采样过程。每一步的图像 x_t,是从一个和前一帧图像 x_{t-1} 有关的正态分布中采样出来的:

x_t \sim \mathcal{N}(\mu_t(x_{t-1}), \sigma_t^2 I)

也就是说,我们并不是直接把噪声加到图像上,而是从一个特定的分布中“抽”出一个图像,这个分布的均值 \mu_t(x_{t-1}) 是基于前一帧图像算出来的,而方差 \sigma_t^2 则控制了加入噪声的强度。这种“逐步采样”的设计让每一帧图像和前一帧保持一定的联系,同时也逐渐引入新的噪声。

整个加噪过程其实是一个马尔可夫过程,也就是说当前状态 x_t 只依赖于前一时刻 x_{t-1},跟更早的历史状态(比如 x_{t-2}, x_{t-3})无关。

为了让这个过程更直观,我们可以把上面的分布公式简化成一个更常见的形式:

x_t \sim \mathcal{N}\left(\sqrt{1 - \beta_t}x_{t-1}, \beta_t I\right)

这里,\beta_t 是一个很小的数,用来控制每一步添加多少噪声。而前面的 \sqrt{1 - \beta_t} 是缩放因子,用来保证 x_t 中还有一部分是从 x_{t-1} 继承来的,因为从前一时刻导这一时刻会逐渐减弱,所以\sqrt{1 - \beta_t} < 1

如果我们把它展开成更容易理解的形式,就是:

\mathbf{x}_t = \sqrt{1 - \beta_t} \mathbf{x}_{t-1} + \sqrt{\beta_t} \boldsymbol{\epsilon}_{t-1}
  • \boldsymbol{\epsilon}_{t-1} \sim \mathcal{N}(0, \mathbf{I}) 是从标准正态分布采样的随机噪声
  • \sqrt{1 - \beta_t} \mathbf{x}_{t-1} 表示从上一帧图像中保留的内容, \mathbf{x}_t 会继承 \mathbf{x}_{t-1} 的一部分。
  • \sqrt{\beta_t} \boldsymbol{\epsilon}_{t-1} 是当前这一帧加入的新噪声

从这个公式可以看出,随着时间 t 的推移,图像中的“原始信息”会越来越少,而噪声的比例会越来越高。到了最后一步,图像就几乎完全变成了一张纯噪声图。

我们可以继续展开 \mathbf{x}_t 的表达式,把它写成更直观的多步形式。首先从递推公式出发:

\mathbf{x}_t = \sqrt{1 - \beta_t} \left(\sqrt{1 - \beta_{t-1}} \mathbf{x}_{t-2} + \sqrt{\beta_{t-1}} \boldsymbol{\epsilon}_{t-2}\right) + \sqrt{\beta_t} \boldsymbol{\epsilon}_{t-1}

继续展开多步,会得到一个累积式:

\mathbf{x}_t = \sqrt{(1 - \beta_t)(1 - \beta_{t-1})} \mathbf{x}_{t-2} + \sqrt{\beta_{t-1}(1 - \beta_t)} \boldsymbol{\epsilon}_{t-2} + \sqrt{\beta_t} \boldsymbol{\epsilon}_{t-1}

可以看到,随着我们不断展开,\mathbf{x}_t 会包含更早的图像状态(比如 x_{t-2})以及多个独立噪声项的加权和。

这时候我们用到一个重要的数学性质:多个高斯随机变量的线性组合仍然服从高斯分布。具体来说,如果

\boldsymbol{\epsilon}_1, \boldsymbol{\epsilon}_2 \sim \mathcal{N}(0, \mathbf{I})

且它们彼此独立,那么对任意常数 a, b 有:

a \boldsymbol{\epsilon}_1 + b \boldsymbol{\epsilon}_2 \sim \mathcal{N}(0, (a^2 + b^2) \mathbf{I})

我们可以把这个性质应用到刚才的展开式。注意到两个噪声项 \boldsymbol{\epsilon}_{t-2}\boldsymbol{\epsilon}_{t-1} 是独立的,因此可以合并成一个新的高斯变量:

\mathbf{x}_t = \sqrt{(1-\beta_t)(1-\beta_{t-1})} \mathbf{x}_{t-2} + \sqrt{(1-\beta_t)\beta_{t-1} + \beta_t} \boldsymbol{\epsilon}

进一步,我们还可以换个角度表达,把前面图像的贡献提出来,把剩下的部分视为总噪声的强度:

\mathbf{x}_t = \sqrt{(1-\beta_t)(1-\beta_{t-1})} \mathbf{x}_{t-2} + \sqrt{1 - (1-\beta_t)(1-\beta_{t-1})} \boldsymbol{\epsilon}

这个结果说明了:即使我们跳过中间步骤,仍然可以通过一步采样,把 \mathbf{x}_{t-2} 加上一部分等效的噪声,得到 \mathbf{x}_t

证明

这里从 \sqrt{(1-\beta_t)\beta_{t-1} + \beta_t}\boldsymbol{\epsilon} 变成了 \sqrt{1 - (1-\beta_t)(1-\beta_{t-1})}\boldsymbol{\epsilon} ,下面证明一下

前面我们得到:

\mathbf{x}_t = \sqrt{(1-\beta_t)(1-\beta_{t-1})} \mathbf{x}_{t-2} + \sqrt{(1-\beta_t)\beta_{t-1} + \beta_t} \boldsymbol{\epsilon}

现在要证明:

(1-\beta_t)\beta_{t-1} + \beta_t = 1 - (1-\beta_t)(1-\beta_{t-1})

我们从左边开始化简:

(1-\beta_t)\beta_{t-1} + \beta_t = \beta_{t-1} - \beta_t \beta_{t-1} + \beta_t

这是一个很常见的代数结构:x_1 - x_1 x_2 + x_2,而 (1-x_1) (1- x_2) = 1 - x_1 - x_2 + x_1 x_2 ,因此我们的目标就是往这上面凑,由此可得

(1-\beta_t)(1-\beta_{t-1}) = 1 - \beta_t - \beta_{t-1} + \beta_t \beta_{t-1}

于是可以得到:

1 - (1-\beta_t)(1-\beta_{t-1}) = \beta_t + \beta_{t-1} - \beta_t \beta_{t-1}

这正好等于我们前面推导出的 (1-\beta_t)\beta_{t-1} + \beta_t,所以两边确实是相等的。

因此,我们可以将加权噪声项简化为:

\sqrt{(1-\beta_t)\beta_{t-1} + \beta_t} = \sqrt{1 - (1-\beta_t)(1-\beta_{t-1})}

如果从概率的角度来看,其实这个结构也很有意思:

  • (1 - \beta_t)(1 - \beta_{t-1}) 可以理解为两个独立事件 A 不发生B 不发生 的概率;
  • 那么 1 - (1 - \beta_t)(1 - \beta_{t-1}) 就是 “A 或 B 至少发生一次” 的概率。

回到上面公式,我们继续扩展公式有:

\mathbf{x}_t = \sqrt{(1-\beta_t)(1-\beta_{t-1})(1-\beta_{t-2})}\mathbf{x}_{t-3} + \sqrt{1 - (1-\beta_t)(1-\beta_{t-1})(1-\beta_{t-2})}\boldsymbol{\epsilon}

通过递推关系一直推到 \mathbf{x}_0 ,可以看出,\mathbf{x}_t 是由最初的 \mathbf{x}_0 和多个加权噪声项组成。为方便表示,我们定义:

\alpha_t = 1 - \beta_t, \quad \bar{\alpha}_t = \prod_{i=1}^t \alpha_i

于是,\mathbf{x}_t 就可以直接用 \mathbf{x}_0 和一个整体噪声项表示为:

\mathbf{x}_t = \underbrace{\sqrt{\bar{\alpha}_t} \mathbf{x}_0}_{\text{初始输入}} + \underbrace{\sqrt{1 - \bar{\alpha}_t} \boldsymbol{\epsilon}}_{\text{加权噪声}}

这个公式非常重要,它揭示了在前向加噪过程中,每一时刻的图像其实是由两部分组成的:

  • \sqrt{\bar{\alpha}_t} \mathbf{x}_0:保留原图 \mathbf{x}_0 的成分,随着 t 增大而逐渐减弱;
  • \sqrt{1 - \bar{\alpha}_t} \boldsymbol{\epsilon}:噪声成分,随时间逐步增强。

特别是当 t = T 时,\bar{\alpha}_T 会非常接近 0,也就是说,\mathbf{x}_T 几乎完全由噪声组成。这正是扩散模型中“从有序走向无序”的过程。

有了这个公式,我们就可以进一步理解,为什么加噪声的公式写作:

x_t \sim \mathcal{N}(\sqrt{1-\beta_t}x_{t-1}, \beta_t\mathbf{I})

这个公式的核心思想是:每一步都让图像变得“更模糊一点”。这里的 \beta_t 是一个小于 1 的常数,表示当前时刻引入多少噪声。在 DDPM 的原始论文中,\beta_t 是线性增长的,在 DDPM 论文中,通常设置为从 \beta_1 = 10^{-4} 逐渐增大到 \beta_T = 0.02

随着 \beta_t 的增大,\alpha_t = 1 - \beta_t 也会随之减小,而 \bar{\alpha}_t = \prod_{i=1}^{t} \alpha_i 就会越来越小,趋近于 0。

回到闭式表达式:

x_t = \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon

t 趋近于 T,由于 \bar{\alpha}_T 已非常接近 0,那么 x_T 就几乎等于:

x_T \approx \sqrt{1 - \bar{\alpha}_T} \epsilon

\sqrt{1 - \bar{\alpha}_T} 也非常接近 1,因此最终的 x_T 基本就是一个从标准正态分布中采样得到的噪声。这恰好符合扩散模型的目标:从清晰图像逐步加噪,最终变成服从 \mathcal{N}(0, \mathbf{I}) 的纯噪声。

从这个角度看,我们可以把加噪公式理解为一个“控制图像均值和方差逐步变化”的设计:每一步都让图像的均值更趋近于 0,方差更趋近于单位矩阵 \mathbf{I},最终得到一张完全随机的图像。

扩散模型中的核心约束

我们再回到前面提到的加噪公式:

x_t \sim \mathcal{N}\left(\sqrt{1 - \beta_t}x_{t-1}, \beta_t \mathbf{I}\right)

为了更好地理解它,我们可以把均值项记作 a = \sqrt{1 - \beta_t},噪声项的标准差记作 b = \sqrt{\beta_t},那么整个分布可以简写为:

x_t \sim \mathcal{N}(a x_{t-1}, b^2 \mathbf{I})

在正态分布中,有一个很重要的性质:方差是各个独立部分方差的总和,总方差=(均值部分的方差)+(噪声部分的方差):

  • 一个是 x_{t-1} 缩放后的分布贡献(均值项);
  • 一个是加上的高斯噪声(扰动项);

那么它们对总方差的贡献分别是 a^2b^2,所以总方差为:

\text{Var}(x_t) = a^2 + b^2 = (1 - \beta_t) + \beta_t = 1

这个公式告诉我们,为了保证每一步采样得到的 x_t 仍然是一个单位方差的分布(最终可以趋近标准正态分布 \mathcal{N}(0, \mathbf{I})),我们在设计 ab 时必须满足这个约束:

a^2 + b^2 = 1

所以为了满足生成的分布最终是标准正态分布(满足方差为 1 的性质),均值部分和噪声部分必须满足 a^2 + b^2 = 1。这是扩散模型中一个非常关键的设计原则,它确保了加噪过程在数学上是“收敛”的,确保加噪过程能够正确地从信号逐步过渡到纯噪声

反向过程的目标

在扩散模型中,前向过程是不断加噪,把一张清晰图像逐步变成纯噪声。而反向过程的目标,就是从这个随机噪声中一步步“去噪”,还原出清晰图像。这个过程本质上是一个概率建模过程:我们希望神经网络能学会每一步如何从 x_t 回到 x_{t-1}

具体来说,反向过程中的每一步可以表示为一个高斯分布的采样过程:

\mathbf{x}_{t-1} \sim \mathcal{N}(\tilde{\boldsymbol{\mu}}_t, \tilde{\beta}_t \mathbf{I})

这里:

  • \mathbf{x}_{t-1} 是我们希望采样出的“更清晰”的图像
  • \tilde{\boldsymbol{\mu}}_t 是神经网络预测的去噪均值,代表当前图像在下一步“去噪”后的中心位置
  • \tilde{\beta}_t 是这个采样过程的方差,控制生成过程中的随机性(越接近最后一步,方差越小)

去噪公式推导

反向过程的关键,就是如何估计出 \tilde{\boldsymbol{\mu}}_t。要做到这一点,我们利用前向过程中的已知结构,结合神经网络预测的噪声,反推出一个“去噪”版本的均值。

前向加噪过程有闭式公式:

\mathbf{x}_t = \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t} \boldsymbol{\epsilon}

我们可以把它稍作变形,从 \mathbf{x}_t 和噪声 \boldsymbol{\epsilon} 中反推出原图 \mathbf{x}_0

\mathbf{x}_0 = \frac{1}{\sqrt{\bar{\alpha}_t}} \left( \mathbf{x}_t - \sqrt{1 - \bar{\alpha}_t} \boldsymbol{\epsilon} \right)

现在假设神经网络已经学会了去估计这个噪声 \boldsymbol{\epsilon},我们就可以将它代入到反向公式中,得到 \tilde{\boldsymbol{\mu}}_t 的表达式:

\tilde{\boldsymbol{\mu}}_t = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \right)

其中:

  • \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) 是神经网络预测出的当前图像中所包含的噪声;
  • \alpha_t = 1 - \beta_t,是每一步控制信息保留程度的参数;
  • \bar{\alpha}_t = \prod_{i=1}^t \alpha_i,是从初始图像到当前时刻累积的保留率。

最后,反向过程的方差项 \tilde{\beta}_t 通常是预设的常量或者一个简单的函数,用来调控采样的随机程度。它可以保证整个生成过程在保持一定多样性的同时,也具有较强的稳定性。

神经网络的学习过程

为了从 \mathbf{x}_t 推断出前一步的图像 \mathbf{x}_{t-1},我们需要知道当前图像 \mathbf{x}_t 和时间步 t。神经网络 \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) 会对 \mathbf{x}_t 中的噪声进行预测,输出一个估计值 \boldsymbol{\epsilon}_\theta。接着,我们用这个估计值计算出一个去噪后的均值 \tilde{\boldsymbol{\mu}}_t,从而从 \mathbf{x}_t 中移除噪声,并根据分布 \mathcal{N}(\tilde{\boldsymbol{\mu}}_t, \tilde{\beta}_t \mathbf{I}) 采样,得到前一时刻的图像 \mathbf{x}_{t-1}。重复这一过程,就可以从纯噪声逐步生成逼近真实图像的数据。

使用神经网络的原因在于,虽然加噪声的过程可以明确地建模,但要反推这个过程(即去噪)是无法直接计算的,因此只能通过神经网络来学习这个逆过程。神经网络学到的,就是如何将加噪声的逆操作近似地还原出来。

通过贝叶斯公式,我们可以在已知初始图像 \mathbf{x}_0 的前提下,计算从 \mathbf{x}_t 回推到 \mathbf{x}_{t-1} 的条件分布。其表达式如下:

q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) = \frac{q(\mathbf{x}_t|\mathbf{x}_{t-1}, \mathbf{x}_0)q(\mathbf{x}_{t-1}|\mathbf{x}_0)}{q(\mathbf{x}_t|\mathbf{x}_0)}

其中:

  • q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) 表示从当前图像 \mathbf{x}_t 回退到前一时刻图像 \mathbf{x}_{t-1} 的分布。

  • q(\mathbf{x}_t|\mathbf{x}_{t-1}, \mathbf{x}_0) 是加噪过程的分布,形式为:

    q(\mathbf{x}_t|\mathbf{x}_{t-1}, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_t;\sqrt{1 - \beta_t}\mathbf{x}_{t-1}, \beta_t \mathbf{I})

    其中 \beta_t 是控制噪声方差的参数。

  • q(\mathbf{x}_t|\mathbf{x}_0)q(\mathbf{x}_{t-1}|\mathbf{x}_0) 可由以下加噪公式推导得到:

    \mathbf{x}_t = \sqrt{\bar{\alpha}_t} \mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t} \boldsymbol{\epsilon}_t

    于是有:

    q(\mathbf{x}_t|\mathbf{x}_0) = \mathcal{N}\left(\mathbf{x}_t; \sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1 - \bar{\alpha}_t)\mathbf{I}\right)
    q(\mathbf{x}_{t-1}|\mathbf{x}_0) = \mathcal{N}\left(\mathbf{x}_{t-1}; \sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_0, (1 - \bar{\alpha}_{t-1})\mathbf{I}\right)
  • 其中 \bar{\alpha}_t = \prod_{i=1}^t \alpha_i = \prod_{i=1}^t (1 - \beta_i),表示前 t 步的噪声累积影响。

将上述表达式代入贝叶斯公式,可以得到:

q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) = \frac{\mathcal{N}(\mathbf{x}_t;\sqrt{1 - \beta_t}\mathbf{x}_{t-1}, \beta_t \mathbf{I}) \quad \mathcal{N}\left(\mathbf{x}_{t-1}; \sqrt{\bar{\alpha}_{t-1}} \mathbf{x}_0, (1 - \bar{\alpha}_{t-1})\mathbf{I}\right)}{\mathcal{N}\left(\mathbf{x}_t; \sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1 - \bar{\alpha}_t)\mathbf{I}\right)}

推导结果是一个高斯分布:

q(\mathbf{x}_{t-1} \mid \mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_{t-1}; \tilde{\mu}_t, \tilde{\beta}_t \mathbf{I})

加噪逆操作的均值 \boldsymbol{\mu}_t 为:

\tilde{\mu}_t = \frac{1}{\sqrt{\alpha_t}} \left( \mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar{\alpha}_t}} \boldsymbol{\epsilon}_t \right)
  • 其中 \boldsymbol{\epsilon}_t 是通过加噪公式采样的噪声。

加噪逆操作的方差 \tilde{\beta}_t 为:

\tilde{\beta}_t = \frac{1 - \bar{\alpha}_{t-1}}{1 - \bar{\alpha}_t} \beta_t

可以看到,\tilde{\beta}_t 完全由已知参数 \beta_t 决定,与图像本身无关。因此,神经网络的主要任务是预测均值部分,也就是上面的 \tilde{\mu}_t

由于 \mathbf{x}_t 是已知的,神经网络只需要预测 \boldsymbol{\epsilon}_t,从而间接地得到均值。我们寻找一个\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) 来近似替换公式中的 \boldsymbol{\epsilon}_t,这里的 \theta 是神经网络的可学习参数。

为了让网络预测更准确,我们定义了一个损失函数,让神经网络的输出 \boldsymbol{\epsilon}_\theta 与真实噪声 \boldsymbol{\epsilon}_t 之间的差异尽可能小。:

L = \| \boldsymbol{\epsilon}_t - \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t) \|^2

在每一步训练中,神经网络接收当前噪声图像 \mathbf{x}_t 和对应的时间步 t 作为输入,输出一个预测的噪声 \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)。通过最小化这个损失函数,使得预测值尽可能贴近真实噪声,从而提高去噪过程的精度。


评论