论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(五)

Understanding Diffusion Models: A Unified Perspective(五)

  • 文章概括
  • 基于得分的生成模型(Score-based Generative Models)

文章概括

引用:

@article{luo2022understanding,title={Understanding diffusion models: A unified perspective},author={Luo, Calvin},journal={arXiv preprint arXiv:2208.11970},year={2022}
}
Luo, C., 2022. Understanding diffusion models: A unified perspective. arXiv preprint arXiv:2208.11970.

原文: https://arxiv.org/abs/2208.11970
代码、数据和视频:https://arxiv.org/abs/2208.11970


系列文章:
请在 《 《 文章 》 》 专栏中查找



基于得分的生成模型(Score-based Generative Models)

我们已经证明,可以通过优化神经网络 s θ ( x t , t ) s_\theta(x_t,t) sθ(xt,t)来预测得分函数 ∇ log ⁡ p ( x t ) \nabla \log p(x_t) logp(xt),从而学习一个变分扩散模型(VDM)。然而,在我们的推导中,得分项是通过应用Tweedie公式得出的;这并没有为我们提供关于得分函数的具体含义或为什么值得建模的深入直观理解。幸运的是,我们可以参考另一类生成模型,即基于得分的生成模型(Score-based Generative Models)[9, 10, 11],以获得这些直觉。事实证明,我们可以证明之前推导的VDM公式与基于得分的生成模型公式是等价的,这使我们能够在这两种解释之间灵活切换。

为了开始理解为什么优化得分函数是有意义的,我们可以绕道回顾一下基于能量的模型(Energy-based Models)[12, 13]。任意灵活的概率分布可以写成以下形式:

p θ ( x ) = 1 Z θ e − f θ ( x ) (152) p_{\theta}(x) = \frac{1}{Z_{\theta}} e^{-f_{\theta}(x)} \tag{152} pθ(x)=Zθ1efθ(x)(152)

其中, f θ ( x ) f_{\theta}(x) fθ(x)是一个可以任意灵活调整的参数化函数,称为能量函数,通常由神经网络建模,而 Z θ Z_{\theta} Zθ是一个归一化常数,用于确保 ∫ p θ ( x ) d x = 1 \int p_{\theta}(x)dx = 1 pθ(x)dx=1。一种学习这种分布的方法是最大似然估计(最大似然估计是什么?);然而,这需要对归一化常数 Z θ = ∫ e − f θ ( x ) d x Z_{\theta} = \int e^{-f_{\theta}(x)}dx Zθ=efθ(x)dx进行可计算的求解,但对于复杂的 f θ ( x ) f_{\theta}(x) fθ(x)函数来说,这可能无法实现。

一种避免计算或建模归一化常数的方法是使用一个神经网络 s θ ( x ) s_{\theta}(x) sθ(x)来学习分布 p ( x ) p(x) p(x)的得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x)。这一方法的动机来自以下观察:对方程(152)两边的对数取导数,可得:

∇ x log ⁡ p θ ( x ) = ∇ x log ⁡ ( 1 Z θ e − f θ ( x ) ) (153) = ∇ x log ⁡ 1 Z θ + ∇ x log ⁡ e − f θ ( x ) (154) = − ∇ x f θ ( x ) (155) ≈ s θ ( x ) (156) \begin{aligned} \nabla_x \log p_{\theta}(x) &= \nabla_x \log \left( \frac{1}{Z_{\theta}} e^{-f_{\theta}(x)} \right) \quad &\text{(153)} \\ &= \nabla_x \log \frac{1}{Z_{\theta}} + \nabla_x \log e^{-f_{\theta}(x)} \quad &\text{(154)} \\ &= -\nabla_x f_{\theta}(x) \quad &\text{(155)} \\ &\approx s_{\theta}(x) \quad &\text{(156)} \end{aligned} xlogpθ(x)=xlog(Zθ1efθ(x))=xlogZθ1+xlogefθ(x)=xfθ(x)sθ(x)(153)(154)(155)(156)

这可以自由地表示为一个神经网络,而无需涉及任何归一化常数。通过最小化与真实得分函数的Fisher散度,可以优化得分模型:

E p ( x ) [ ∥ s θ ( x ) − ∇ log ⁡ p ( x ) ∥ 2 2 ] (157) \mathbb{E}_{p(x)} \left[ \| s_{\theta}(x) - \nabla \log p(x) \|_2^2 \right] \tag{157} Ep(x)[sθ(x)logp(x)22](157)

得分函数表示什么?对于每一个 x x x,对其对数似然关于 x x x的梯度,实质上描述了在数据空间中需要朝哪个方向移动以进一步增加其似然值。

直观地说,得分函数定义了数据 x x x所在整个空间的一个向量场,指向数据分布的模式(modes)。在图6的右图中对此进行了直观展示。通过学习真实数据分布的得分函数,我们可以通过从同一空间中的任意点开始,反复跟随得分函数指引的方向,直到达到一个模式来生成样本。此采样过程被称为朗之万动力学(Langevin dynamics),其数学描述如下:

x i + 1 ← x i + c ∇ log ⁡ p ( x i ) + 2 c ϵ , i = 0 , 1 , … , K (158) x_{i+1} \leftarrow x_i + c \nabla \log p(x_i) + \sqrt{2c} \epsilon, \quad i = 0, 1, \ldots, K \tag{158} xi+1xi+clogp(xi)+2c ϵ,i=0,1,,K(158)

其中, x 0 x_0 x0是从一个先验分布(例如均匀分布)中随机采样得到的,而 ϵ ∼ N ( ϵ ; 0 , I ) \epsilon \sim \mathcal{N}(\epsilon; 0, I) ϵN(ϵ;0,I)是一个额外的噪声项,用于确保生成的样本不会总是收敛到某个模式上,而是围绕模式徘徊,以增加多样性。此外,由于学习到的评分函数是确定性的,加入噪声项进行采样为生成过程增加了随机性,这可以避免确定性轨迹的问题,特别是在采样从位于多个模式之间的位置开始时。图6中展示了Langevin动力学采样以及噪声项带来的好处的直观描述。


在这里插入图片描述图6:使用Langevin动力学生成的三个随机采样轨迹的可视化,所有轨迹均从同一个初始化点开始,针对一个高斯混合分布进行采样。左图展示了这些采样轨迹在三维等高线图上的分布,而右图则将采样轨迹与真实评分函数进行对比。从相同的初始化点出发,由于Langevin动力学采样过程中引入的随机噪声项,我们能够从不同的模式生成样本;如果没有噪声项,从固定点采样的每次试验都会确定性地沿着评分收敛到相同的模式。


1. 什么是得分函数?

1.1 定义 得分函数定义为概率密度分布 p ( x ) p(x) p(x) 的对数梯度: ∇ x log ⁡ p ( x ) . \nabla_x \log p(x). xlogp(x).

  • 它描述了在数据空间中,如何朝着使概率密度 p ( x ) p(x) p(x) 最大的方向移动。
  • 得分函数实际上是一个向量场,在每个点 x x x 指向分布 p ( x ) p(x) p(x) 增大的方向。

1.2 直观意义

  • 如果把 log ⁡ p ( x ) \log p(x) logp(x) 看作山脉的高度,那么得分函数是山脉的斜率,指向 “爬坡” 的方向。
  • 在图 6 的右图中,得分函数形成了一个向量场,箭头表示每个点的梯度方向。

2. 归一化常数和得分函数

2.1 概率密度的形式 一个概率分布通常可以写成: p θ ( x ) = 1 Z θ e − f θ ( x ) . p_\theta(x) = \frac{1}{Z_\theta} e^{-f_\theta(x)}. pθ(x)=Zθ1efθ(x). 这里:

  • Z θ = ∫ e − f θ ( x ) d x Z_\theta = \int e^{-f_\theta(x)} dx Zθ=efθ(x)dx 是归一化常数,确保 p θ ( x ) p_\theta(x) pθ(x) 满足积分为 1 的条件。
  • f θ ( x ) f_\theta(x) fθ(x) 是未归一化的负对数密度。

2.2 归一化常数的难点

  • 在高维数据中,直接计算 Z θ Z_\theta Zθ 是非常困难的,因为积分 ∫ e − f θ ( x ) d x \int e^{-f_\theta(x)} dx efθ(x)dx 通常无法解析。
  • 为了避免直接计算 Z θ Z_\theta Zθ,我们可以转而学习得分函数 ∇ x log ⁡ p θ ( x ) \nabla_x \log p_\theta(x) xlogpθ(x),因为它不依赖于 Z θ Z_\theta Zθ

2.3 得分函数公式的推导 p θ ( x ) = 1 Z θ e − f θ ( x ) p_\theta(x) = \frac{1}{Z_\theta} e^{-f_\theta(x)} pθ(x)=Zθ1efθ(x) 出发,对其取对数: log ⁡ p θ ( x ) = − f θ ( x ) − log ⁡ Z θ . (153) \log p_\theta(x) = -f_\theta(x) - \log Z_\theta. \tag{153} logpθ(x)=fθ(x)logZθ.(153)

x x x 求梯度: ∇ x log ⁡ p θ ( x ) = ∇ x ( − f θ ( x ) − log ⁡ Z θ ) . \nabla_x \log p_\theta(x) = \nabla_x \left( -f_\theta(x) - \log Z_\theta \right). xlogpθ(x)=x(fθ(x)logZθ).

注意到:

  • log ⁡ Z θ \log Z_\theta logZθ 是一个常数,与 x x x 无关,因此其梯度为 0。
  • 只剩下 − ∇ x f θ ( x ) -\nabla_x f_\theta(x) xfθ(x)

于是: ∇ x log ⁡ p θ ( x ) = − ∇ x f θ ( x ) . (155) \nabla_x \log p_\theta(x) = -\nabla_x f_\theta(x). \tag{155} xlogpθ(x)=xfθ(x).(155)

通过神经网络 s θ ( x ) s_\theta(x) sθ(x) 来近似 − ∇ x f θ ( x ) -\nabla_x f_\theta(x) xfθ(x),因此: ∇ x log ⁡ p θ ( x ) ≈ s θ ( x ) . (156) \nabla_x \log p_\theta(x) \approx s_\theta(x). \tag{156} xlogpθ(x)sθ(x).(156)


3. 优化目标

3.1 如何优化得分函数? 学习得分函数的目标是让模型 s θ ( x ) s_\theta(x) sθ(x) 接近真实得分函数 ∇ x log ⁡ p ( x ) \nabla_x \log p(x) xlogp(x)。我们通过以下损失函数来实现: E p ( x ) [ ∥ s θ ( x ) − ∇ x log ⁡ p ( x ) ∥ 2 2 ] . (157) \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla_x \log p(x) \|_2^2 \right]. \tag{157} Ep(x)[sθ(x)xlogp(x)22].(157)

3.2 直观理解

  • 我们希望神经网络 s θ ( x ) s_\theta(x) sθ(x) 的输出与真实分布 p ( x ) p(x) p(x) 的得分函数 ∇ x log ⁡ p ( x ) \nabla_x \log p(x) xlogp(x) 尽可能一致。
  • 这一损失函数被称为 Fisher 散度,是得分匹配方法的核心。

4. Langevin 动力学采样

4.1 什么是 Langevin 动力学? Langevin 动力学是一种通过得分函数进行采样的算法。它的核心思想是:从一个随机点出发,沿着得分函数的方向逐步逼近数据分布的模式(modes)。其迭代公式为:
x i + 1 ← x i + c ∇ x log ⁡ p ( x i ) + 2 c ϵ , ϵ ∼ N ( 0 , I ) . (158) x_{i+1} \leftarrow x_i + c \nabla_x \log p(x_i) + \sqrt{2c} \epsilon, \quad \epsilon \sim \mathcal{N}(0, \mathbf{I}). \tag{158} xi+1xi+cxlogp(xi)+2c ϵ,ϵN(0,I).(158)

4.2 每一项的意义

  • x i + 1 x_{i+1} xi+1:下一步的采样点。
  • x i x_i xi:当前采样点。
  • c ∇ x log ⁡ p ( x i ) c \nabla_x \log p(x_i) cxlogp(xi):沿得分函数方向的梯度更新,使得样本更靠近数据分布的高密度区域。
  • 2 c ϵ \sqrt{2c} \epsilon 2c ϵ:加入随机噪声,增加样本多样性,避免所有样本收敛到同一个模式。

4.3 Langevin 动力学的效果 在图 6 中:

  • 左图展示了多个采样轨迹如何逐步逼近高斯混合分布的高密度区域。
  • 右图展示了得分函数形成的向量场,表明 Langevin 动力学的梯度更新方向。

5. Langevin 动力学的意义

5.1 采样过程 通过 Langevin 动力学,我们可以从随机初始点(例如均匀分布或标准高斯分布)生成样本,这些样本最终将逼近数据分布 p ( x ) p(x) p(x)

5.2 噪声的作用 噪声项 2 c ϵ \sqrt{2c} \epsilon 2c ϵ 的引入是为了:

  1. 避免采样陷入某个模式,保证生成样本的多样性。
  2. 在分布中探索不同的高密度区域。

6. 示例:从二维高斯混合分布采样

  1. 假设数据分布是一个二维高斯混合分布,有两个主要模式。
  2. 初始点 x 0 x_0 x0 从均匀分布中随机采样。
  3. 使用 Langevin 动力学公式迭代:
    • 计算得分函数 ∇ x log ⁡ p ( x i ) \nabla_x \log p(x_i) xlogp(xi),指示向高密度区域移动的方向。
    • 加入噪声项 2 c ϵ \sqrt{2c} \epsilon 2c ϵ,避免收敛到固定点。
  4. 最终,生成的样本分布将匹配数据的高斯混合分布。

总结

  1. 得分函数:描述如何在数据空间中移动以增加概率密度。
  2. 神经网络学习得分函数:避免直接计算归一化常数。
  3. Langevin 动力学:通过得分函数采样,从随机点生成符合数据分布的样本。
  4. 噪声的作用:增加多样性,避免收敛到单一模式。

请注意,公式(157)中的目标依赖于真实的评分函数,而对于建模自然图像等复杂分布,我们无法获得该函数。幸运的是,已经衍生出一些被称为评分匹配的替代技术(如文献[14, 15, 16, 17]),它们无需知道真实评分即可最小化Fisher散度,并能够通过随机梯度下降进行优化。

总体而言,将分布表示为评分函数并通过马尔可夫链蒙特卡洛技术(例如Langevin动力学)使用它来生成样本的过程被称为基于评分的生成建模(Score-based Generative Modeling)[9, 10, 11]。

  1. 公式 (157) 的目标和问题
  2. 评分匹配(Score Matching)的定义和动机
  3. 评分匹配方法如何解决 Fisher 散度问题
  4. 基于评分的生成建模(Score-based Generative Modeling)的关键概念

1. 公式 (157):目标与问题

公式 (157) 是 Fisher 散度的定义,用于最小化模型得分函数与真实得分函数的差异: E p ( x ) [ ∥ s θ ( x ) − ∇ log ⁡ p ( x ) ∥ 2 2 ] . \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right]. Ep(x)[sθ(x)logp(x)22].

  • 目标:让模型得分函数 s θ ( x ) s_\theta(x) sθ(x) 接近真实得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x)
  • 真实得分函数的难点:在建模复杂分布(如自然图像)时,无法直接获得真实分布 p ( x ) p(x) p(x) 或其得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x)
    • 原因:真实数据分布可能未知,或者处于复杂的低维流形上。

2. 评分匹配(Score Matching)逐步加噪评分匹配

2.1 定义
评分匹配(Score Matching)是一种无需直接访问 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x) 的方法,用于最小化 Fisher 散度。通过数学技巧,Fisher 散度可以被重新表达为一个可计算的目标函数,从而绕过对真实得分函数的依赖。

2.2 推导 Fisher 散度的可计算形式

目标函数: E p ( x ) [ ∥ s θ ( x ) − ∇ log ⁡ p ( x ) ∥ 2 2 ] . \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right]. Ep(x)[sθ(x)logp(x)22]. 展开平方: E p ( x ) [ ∥ s θ ( x ) ∥ 2 2 ] − 2 E p ( x ) [ s θ ( x ) T ∇ log ⁡ p ( x ) ] + E p ( x ) [ ∥ ∇ log ⁡ p ( x ) ∥ 2 2 ] . \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 \right] - 2 \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] + \mathbb{E}_{p(x)} \left[ \| \nabla \log p(x) \|_2^2 \right]. Ep(x)[sθ(x)22]2Ep(x)[sθ(x)Tlogp(x)]+Ep(x)[∥∇logp(x)22].

关键点:

  • 第三项 E p ( x ) [ ∥ ∇ log ⁡ p ( x ) ∥ 2 2 ] \mathbb{E}_{p(x)} \left[ \| \nabla \log p(x) \|_2^2 \right] Ep(x)[∥∇logp(x)22] 是一个常数,与 θ \theta θ 无关。
  • 第二项 E p ( x ) [ s θ ( x ) T ∇ log ⁡ p ( x ) ] \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] Ep(x)[sθ(x)Tlogp(x)] 是核心,需要通过积分技巧消除对 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x) 的显式依赖。

2.3 无需真实评分的技术
在文献 [14, 15, 16, 17] 中,研究者提出了以下两种方法来优化 Fisher 散度:

  1. 直接评分匹配 将目标函数通过积分分部法(Integration by Parts)重写,消除对 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x) 的依赖。

    • 假设数据分布 p ( x ) p(x) p(x) 的支持域是全空间,且 p ( x ) p(x) p(x) 在边界上迅速衰减为零。
    • 将期望项重写为:
      E p ( x ) [ s θ ( x ) T ∇ log ⁡ p ( x ) ] = − E p ( x ) [ div s θ ( x ) ] , \mathbb{E}_{p(x)} \left[ s_\theta(x)^T \nabla \log p(x) \right] = -\mathbb{E}_{p(x)} \left[ \text{div} \, s_\theta(x) \right], Ep(x)[sθ(x)Tlogp(x)]=Ep(x)[divsθ(x)],
      其中 div s θ ( x ) \text{div} \, s_\theta(x) divsθ(x) 表示得分函数的散度。
    • 替换后:
      E p ( x ) [ ∥ s θ ( x ) − ∇ log ⁡ p ( x ) ∥ 2 2 ] ∝ E p ( x ) [ ∥ s θ ( x ) ∥ 2 2 + 2 div s θ ( x ) ] . \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right] \propto \mathbb{E}_{p(x)} \left[ \| s_\theta(x) \|_2^2 + 2 \text{div} \, s_\theta(x) \right]. Ep(x)[sθ(x)logp(x)22]Ep(x)[sθ(x)22+2divsθ(x)].
  2. 逐步加噪评分匹配 为数据添加逐步递增的高斯噪声,并训练得分函数 s θ ( x , t ) s_\theta(x, t) sθ(x,t)

    • 噪声扰动后的分布:
      p σ t ( x t ) = ∫ p ( x ) N ( x t ; x , σ t 2 I ) d x . p_{\sigma_t}(x_t) = \int p(x) \mathcal{N}(x_t; x, \sigma_t^2 I) dx. pσt(xt)=p(x)N(xt;x,σt2I)dx.
    • 学习目标:
      arg ⁡ min ⁡ θ ∑ t = 1 T λ ( t ) E p σ t ( x t ) [ ∥ s θ ( x , t ) − ∇ log ⁡ p σ t ( x t ) ∥ 2 2 ] . \arg\min_\theta \sum_{t=1}^T \lambda(t) \mathbb{E}_{p_{\sigma_t}(x_t)} \left[ \| s_\theta(x, t) - \nabla \log p_{\sigma_t}(x_t) \|_2^2 \right]. argθmint=1Tλ(t)Epσt(xt)[sθ(x,t)logpσt(xt)22].
    • 优点:通过逐步加噪扩大分布覆盖范围,使得低密度区域的训练信号变得更加丰富。

3. 基于评分的生成建模

3.1 定义 将数据分布 p ( x ) p(x) p(x) 表示为得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x),并通过马尔可夫链蒙特卡洛(MCMC)技术(如 Langevin 动力学)采样,生成符合数据分布的样本。

3.2 Langevin 动力学 采样公式: x i + 1 = x i + c ∇ log ⁡ p ( x i ) + 2 c ϵ , x_{i+1} = x_i + c \nabla \log p(x_i) + \sqrt{2c} \epsilon, xi+1=xi+clogp(xi)+2c ϵ,

  • c c c:步长。
  • ϵ ∼ N ( 0 , I ) \epsilon \sim \mathcal{N}(0, I) ϵN(0,I):随机噪声。

3.3 逐步退火 Langevin 动力学 为了解决原始评分匹配的低效问题,引入逐步加噪的退火 Langevin 动力学:

  1. 初始化:从一个简单的先验分布(如高斯分布)采样初始点 x 0 x_0 x0
  2. 逐步采样:依次降低噪声水平 σ t \sigma_t σt,并在每一步运行 Langevin 动力学。
  3. 最终样本收敛到真实分布 p ( x ) p(x) p(x)

4. 与变分扩散模型的联系

4.1 训练目标的相似性 逐步加噪评分匹配的目标(公式 161)与变分扩散模型(VDM)的训练目标几乎一致:

  • 都是同时学习多个噪声水平下的得分函数。
  • 通过加噪扩展分布的支持域。

4.2 无限时间步的推广 当时间步数 T → ∞ T \to \infty T 时:

  • 逐步加噪过程可以被视为一个连续的随机过程。
  • 对应于一个随机微分方程(SDE):
    • 正向 SDE:描述从数据分布逐步加噪的过程。
    • 逆向 SDE:描述从高斯噪声分布逐步采样生成数据的过程。

5. 示例:二维高斯分布的评分匹配

假设数据分布是一个二维高斯分布: p ( x ) = N ( x ; μ , Σ ) . p(x) = \mathcal{N}(x; \mu, \Sigma). p(x)=N(x;μ,Σ).

5.1 真实得分函数 得分函数为: ∇ log ⁡ p ( x ) = − Σ − 1 ( x − μ ) . \nabla \log p(x) = -\Sigma^{-1}(x - \mu). logp(x)=Σ1(xμ).

5.2 模型得分函数 假设模型的得分函数为 s θ ( x ) = − x + ϵ θ ( x ) s_\theta(x) = -x + \epsilon_\theta(x) sθ(x)=x+ϵθ(x),其中 ϵ θ ( x ) \epsilon_\theta(x) ϵθ(x) 是神经网络的误差项。

5.3 训练目标 Fisher 散度: E p ( x ) [ ∥ s θ ( x ) − ∇ log ⁡ p ( x ) ∥ 2 2 ] = E p ( x ) [ ∥ ϵ θ ( x ) ∥ 2 2 ] . \mathbb{E}_{p(x)} \left[ \| s_\theta(x) - \nabla \log p(x) \|_2^2 \right] = \mathbb{E}_{p(x)} \left[ \| \epsilon_\theta(x) \|_2^2 \right]. Ep(x)[sθ(x)logp(x)22]=Ep(x)[ϵθ(x)22].

通过最小化 ϵ θ ( x ) \epsilon_\theta(x) ϵθ(x) 的期望平方,可以优化得分函数。


总结

  1. 公式 (157) 的问题:依赖于真实得分函数 ∇ log ⁡ p ( x ) \nabla \log p(x) logp(x),但真实分布未知。
  2. 评分匹配方法:通过积分技巧和逐步加噪,绕过了对真实得分函数的显式依赖。
  3. 基于评分的生成建模:利用学习到的得分函数进行采样,生成符合数据分布的样本。
  4. 与扩散模型的联系:两者在训练目标和采样过程中密切相关。

然而,正如Song和Ermon在文献[9]中详细说明的,原始评分匹配存在三个主要问题。首先,当 x x x位于高维空间中的低维流形上时,评分函数定义不明确。从数学上可以看出,这种情况下,低维流形以外的所有点的概率为零,其对数是未定义的。这在试图学习自然图像生成模型时尤为不便,因为自然图像已知位于整个环境空间的低维流形上。

其次,通过原始评分匹配训练的评分函数在低密度区域不够准确。从我们在公式(157)中最小化的目标中可以看出这一点。由于它是 p ( x ) p(x) p(x)上的期望,并且明确地在其样本上训练,模型对于很少见或未见过的样本无法获得准确的学习信号。这是一个问题,因为我们的采样策略涉及从高维空间中的随机位置(最有可能是随机噪声)开始,并根据学习到的评分函数进行移动。由于我们依赖的是噪声或不准确的评分估计,最终生成的样本可能也会表现不佳,或者需要更多迭代才能收敛到准确的输出。

最后,即使Langevin动力学采样使用的是真实评分,其采样过程也可能无法混合。假设真实数据分布是两个不相交分布的混合体:

p ( x ) = c 1 p 1 ( x ) + c 2 p 2 ( x ) (159) p(x)=c_1p_1(x)+c_2p_2(x) \tag{159} p(x)=c1p1(x)+c2p2(x)(159)

然后,当计算分数时,这些混合系数会丢失,因为对数操作将系数与分布分离,而梯度操作会将其清零。为了形象化这一点,请注意右图6中显示的真实分数函数无法区分三个分布之间的不同权重;从图示的初始化点进行Langevin动力学采样时,抵达每个模式的概率大致相等,尽管在实际的高斯混合分布中,右下角的模式权重更高。

事实证明,这三个缺点可以通过向数据添加多个层级的高斯噪声同时解决。首先,由于高斯噪声分布的支持范围是整个空间,因此被扰动的数据样本不再局限于低维流形。其次,添加大幅度的高斯噪声会增加数据分布中每个模式覆盖的区域,从而在低密度区域提供更多的训练信号。最后,添加具有递增方差的多层级高斯噪声将导致尊重真实混合系数的中间分布。

正式地,我们可以选择一个正的噪声水平序列 { σ t } t = 1 T \{\sigma_t\}_{t=1}^T {σt}t=1T,并定义一系列逐步扰动的数据分布:

p σ t ( x t ) = ∫ p ( x ) N ( x t ; x , σ t 2 I ) d x (160) p_{\sigma_t}(x_t) = \int p(x)\mathcal{N}(x_t;x,\sigma_t^2I)dx \tag{160} pσt(xt)=p(x)N(xt;x,σt2I)dx(160)

然后,通过使用得分匹配(score matching)训练一个神经网络 s θ ( x , t ) s_\theta(x,t) sθ(x,t),以同时学习所有噪声水平的得分函数:

arg ⁡ min ⁡ θ ∑ t = 1 T λ ( t ) E p σ t ( x t ) [ ∥ s θ ( x , t ) − ∇ log ⁡ p σ t ( x t ) ∥ 2 2 ] (161) \arg\min_{\theta} \sum_{t=1}^{T} \lambda(t) \mathbb{E}_{p_{\sigma_t}(x_t)} \left[ \left\| s_\theta(x, t) - \nabla \log p_{\sigma_t}(x_t) \right\|_2^2 \right] \tag{161} argθmint=1Tλ(t)Epσt(xt)[sθ(x,t)logpσt(xt)22](161)

其中, λ ( t ) \lambda(t) λ(t)是一个依赖于噪声水平 t t t的正权重函数。需要注意的是,该目标函数与在公式148中为训练变分扩散模型推导出的目标几乎完全一致。此外,作者提出了退火Langevin动力学采样作为一种生成程序,其中通过依次对 t = T , T − 1 , … , 2 , 1 t=T,T-1,\ldots,2,1 t=T,T1,,2,1运行Langevin动力学来生成样本。初始化选择某个固定的先验分布(如均匀分布),而每个后续的采样步骤都从前一次模拟的最终样本开始。由于噪声水平随着时间步 t t t逐渐减小,同时步长也随时间减少,样本最终会收敛到一个真实的模式。这与变分扩散模型的马尔科夫HVAE解释中所执行的采样过程直接类似,在该过程中,一个随机初始化的数据向量通过降低噪声水平被逐步优化。

因此,我们已经在训练目标和采样程序中明确建立了变分扩散模型与基于分数的生成模型之间的联系。

一个问题是如何将扩散模型自然地推广到无限数量的时间步。在马尔科夫HVAE视角下,这可以被解释为将层级数量扩展到无穷,即 T → ∞ T \to \infty T。从等价的基于分数的生成模型的视角来看,这一点更加清晰;在无限数量的噪声尺度下,图像在连续时间上的扰动可以表示为一个随机过程,因此可以用随机微分方程(SDE)(什么是随机微分方程(SDE))来描述。采样则通过逆向SDE进行,这自然需要估计每个连续值噪声水平下的分数函数[10]。SDE的不同参数化本质上描述了不同的时间扰动方案,从而能够灵活地对加噪过程进行建模[6]。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/68733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中 端口被占用如何解决

lsof命令查找 查找被占用端口 lsof -i :端口号 #示例 lsof -i :8080 lsof -i :3306 netstat命令查找 查找被占用端口 netstat -tuln | grep 端口号 #示例 netstat -tuln | grep 3306 netstat -tuln | grep 6379 ss命令查找 查找被占用端口 ss -tunlp | grep 端口号 #示例…

苍穹外卖第一天

角色分工 技术选型 pojo子模块 nginx反向代理 MD5密码加密

IP服务模型

1. IP数据报 IP数据报中除了包含需要传输的数据外,还包括目标终端的IP地址和发送终端的IP地址。 数据报通过网络从一台路由器跳到另一台路由器,一路从IP源地址传递到IP目标地址。每个路由器都包含一个转发表,该表告诉它在匹配到特定目标地址…

Kafka下载

一、Kafka下载 下载地址:https://kafka.apache.org/downloads 二、Kafka安装 因为选择下载的是 .zip 文件,直接跳过安装,一步到位。 选择在任一磁盘创建空文件夹(不要使用中文路径),解压之后把文件夹内容…

使用 Motor-CAD 脚本实现 Maxwell 电机模型的 Ansys 自动化

在本博客中,我将展示如何使用 Ansys Motor-CAD 自动创建的电机设计脚本在 Ansys Maxwell 中自动创建电机模型。我以无刷永磁电机为例介绍工作流程。 汽车CAD 将 Motor-CAD 设计导出为脚本文件以在 Maxwell 中运行。 导出电机 CAD 设计 在菜单条中选择“工具”选项…

《逆向工程核心原理》第三~五章知识整理

查看上一章节内容《逆向工程核心原理》第一~二章知识整理 对应《逆向工程核心原理》第三章到第五章内容 小端序标记法 字节序 多字节数据在计算机内存中存放的字节顺序分为小端序和大端序两大类 大端序与小端序 BYTE b 0x12; WORD w 0x1234; DWORD dw 0x12345678; cha…

使用 SpringBoot+Thymeleaf 模板引擎进行 Web 开发

目录 一、什么是 Thymeleaf 模板引擎 二、Thymeleaf 模板引擎的 Maven 坐标 三、配置 Thymeleaf 四、访问页面 五、访问静态资源 六、Thymeleaf 使用示例 七、Thymeleaf 常用属性 前言 在现代 Web 开发中,模板引擎被广泛用于将动态内容渲染到静态页面中。Thy…

MongoDB快速上手(包会用)

MongoDB快速上手(包会用) MongoDB 介绍 🐱‍💻 MongoDB 是一个开源的 文档型数据库,它使用类似 JSON 的 BSON(二进制 JSON)格式来存储数据,具有高性能、可扩展性和灵活性。它适用于…

STC32通用GPIO中断,库函数配置方式 AI8051U和STC32G已测试没有问题

近来STC的单片机已经出到32位了,并且个人自己打板测试了几个型号,相比之前的51完全不是一个量级,可以通过以下这张图片中的信息来感受一下如今的32位8051单片机的强大,也是很很期待25年的这一新作了! 配图为AI8052U或…

使用Pygame制作“Flappy Bird”游戏

1. 前言 Flappy Bird 是一款“点击上浮、松手下落”的横向卷轴游戏: 场景中持续出现上下成对的管道,玩家需要让小鸟在管道之间穿行;每穿过一对管道记 1 分;若小鸟碰到管道或掉到地面,则游戏结束;一旦上手…

java求职学习day23

MySQL 单表 & 约束 & 事务 1. DQL操作单表 1.1 创建数据库,复制表 1) 创建一个新的数据库 db2 CREATE DATABASE db2 CHARACTER SET utf8; 2) 将 db1 数据库中的 emp 表 复制到当前 db2 数据库 1.2 排序 通过 ORDER BY 子句 , 可以将查询出的结果进行排序 ( 排序只…

markdown公式特殊字符

个人学习笔记 根号 在 Markdown 中,要表示根号 3,可以使用 LaTeX 语法来实现。常见的有以下两种方式: 行内公式形式:使用一对美元符号 $ 将内容包裹起来,即 $\sqrt{3}$ ,在支持 LaTeX 语法渲染的 Markdow…

git笔记-简单入门

git笔记 git是一个分布式版本控制系统,它的优点有哪些呢?分为以下几个部分 与集中式的版本控制系统比起来,不用担心单点故障问题,只需要互相同步一下进度即可。支持离线编辑,每一个人都有一个完整的版本库。跨平台支持…

系统学习算法: 专题七 递归

递归算法简而言之就是当一个大问题拆分为多个子问题时,如果每个子问题的操作步骤都一样,就可以用递归,其中递归在递的时候要有结束条件,不能一直递下去,结束条件后就归 这里不建议学习递归的时候抠细节,还…

C++中常用的十大排序方法之1——冒泡排序

成长路上不孤单😊😊😊😊😊😊 【😊///计算机爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C中常用的排序方法之——冒泡排序的相关…

OpenEuler学习笔记(十五):在OpenEuler上搭建Java运行环境

一、在OpenEuler上搭建Java运行环境 在OpenEuler上搭建Java运行环境可以通过以下几种常见方式,下面分别介绍基于包管理器安装OpenJDK和手动安装Oracle JDK的步骤。 使用包管理器安装OpenJDK OpenJDK是Java开发工具包的开源实现,在OpenEuler上可以方便…

【二叉搜索树】

二叉搜索树 一、认识二叉搜索树二、二叉搜索树实现2.1插入2.2查找2.3删除 总结 一、认识二叉搜索树 二叉搜索树(Binary Search Tree,简称 BST)是一种特殊的二叉树,它具有以下特征: 若它的左子树不为空,则…

洛谷P3372 【模板】线段树 1以及分块

【模板】线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m,分别表示该数列数字的个数和操作的总个数。 …

Linux运维之Linux的安装和配置

目录 Linux的基本概念: 1.为什么要使用Linux? 2.什么是Linux? Linux的安装和配置: 1.下载Linux的虚拟机和镜像文件: 1.1下载虚拟机 1.2下载镜像文件 2.在虚拟机或者物理机中安装Linux操作系统 3.配置虚拟机的…

【ArcMap零基础训练营】01 ArcMap使用入门及绘图基础

ArcMap入门及使用技巧 230106直播录像 ArcMap使用技巧及制图入门 ArcGIS的安装 本次教学使用的ArcMap版本为10.7,建议各位安装ArcGIS10.0及其以上版本的英文版本。 下载及安装详细教程可参考ArcGIS 10.8 for Desktop 完整安装教程 麻辣GIS 改善使用体验的几个操作…