扩散模型NCSN,使用分数匹配的生成模型,Generative Modeling by Estimating Gradients of the Data Distribution

前言

论文题目:Generative Modeling by Estimating Gradients of the Data Distribution
论文地址:https://arxiv.org/abs/1907.05600
收录情况:NeurIPS 2019 (Oral)

NCSN也可以被看作一种扩散模型,DDPM的讲解已经有很多了,但是对于宋飏大佬的这篇文章解读还是比较少的,细读这篇文章有着不小的收获。

动机

目前的两大类生成模型:

  • 基于似然的方法(likelihood-based methods)
    -使用对数似然或者合适的替代作为训练目标
    必须使用特定的架构构建归一化的概率模型(like自回归模型、flow models)或使用替代的损失(like VAE中的evidence lower bound)
  • 基于对抗的方法(GAN)
    使用对抗训练最小化模型和数据分布之间的f-偏差或概率度量,对抗训练过程不稳定

做法

提出了一种基于数据密度的方法
基于对数数据密度得分的估计和采样

estimating and sampling from the (Stein) Score of the logarithmic data density

得分:输入数据点处对数密度函数的梯度

the gradient of the log-density function at the input data point.

这是指向对数数据密度增长最多的方向的向量场

This is a vector field pointing in the direction where the log data grows the most.

用分数匹配训练的神经网络来从数据中学习这个向量场。然后,使用朗之万动力学生成样本。

Produce samples using Langevin dynamics

通过在数据分布的梯度向量场中逐渐移动一个随机初始样本到高密度区域来工作。这意味着初始的随机样本会根据估计的得分向量(即数据点在数据分布中的梯度)逐渐向数据密度高的区域移动,从而生成更加真实的样本。

以上就是该文章的核心思想,看起来有点抽象,接下来我们通过这一过程中存在的挑战来理解。

(1)得分的未定义性

First, if the data distribution is supported on a low dimensional manifold—as it is often assumed for many real world datasets—the score will be undefined in the ambient space, and score matching will fail to provide a consistent score estimator.

这是因为在环境空间中的大部分区域(非流形区域)可能根本没有数据点,因此在这些区域内无法有效地计算得分。分数匹配在这种情况下将无法提供一致的分数估计,因为它依赖于整个空间中数据的存在。
举个例子,给定一个由一些特定形状或模式的点组成的数据集,如果所有的点都紧密地分布在一条细长的线上(所谓的“低维流形”),那么在这条线上的点,我们可以很好地估计他们的“得分”(数据点在数据分布中的梯度),类似于在山脉中找到最高点的路径。但是,如果偏离了这条线,到了周围空旷的“环境空间”,那里因为没有或很少有数据点,就很难说清楚怎样移动是向“高处”移动,因为那里根本就没有“山”或者“坡度”可言。所以,当数据只在这种特定的线或面上分布时,在其他大部分空间里,无法定义这样的“得分”,也就无法准确地生成新的数据点。

(2)数据稀疏性和采样效率

Second, the scarcity of training data in low data density regions, e.g., far from the manifold, hinders the accuracy of score estimation and slows down the mixing of Langevin dynamics sampling.

在数据密度低的区域,如远离数据流形的区域,由于训练数据的稀缺,分数估计的准确性受到影响。这种数据的稀缺性不仅影响分数估计的准确性,还会减缓Langevin动力学采样的混合速度。混合速度是指算法达到平衡分布所需的时间,如果这一过程缓慢,则采样效率低下。此外,由于需要穿越数据密度低的区域以在分布的不同模式之间过渡,使得混合变得更加困难。
举个例子,假如数据集像是星星点缀在夜空中,只在某些区域聚集,而其他地方则几乎是空白。由于朗之万动力学通常在数据分布的低密度区域中初始化,如果我们随机地在这个“夜空”中选择一个起点来生成新的数据点,很可能这个起点落在了星星稀疏的区域。由于这些区域数据点很少,我们很难判断如何从这里开始“移动”到数据点密集的区域,也就是说,我们难以准确地估计应该如何生成质量好的新数据点。因此这些区域中不准确的分数估计将对采样过程产生负面影响。此外,从数据稀疏的地方到达数据密集的地方可能需要很长时间,这就像是在夜空中寻找星星一样,如果星星很少,我们就需要更多时间来找到正确的路径。

那么作者是如何解决上述问题的呢,其做法非常巧妙。
(1)添加随机高斯噪声

we propose to perturb the data with random Gaussian noise of various magnitudes. Adding random noise ensures the resulting distribution does not collapse to a low dimensional manifold. Large noise levels will produce samples in low density regions of the original (unperturbed) data distribution, thus improving score estimation.

用不同幅度的随机高斯噪声扰动数据。添加随机噪声可确保生成的分布不会塌陷为低维流形。这种做法可以确保数据分布不会仅限于低维流形,而是在更广泛的空间中有所展开。噪声的加入相当于在数据中人为地增加了变异,帮助模型学习到在低数据密度区域的得分。
(2)使用单一得分网络,条件化噪声水平

we train a single score network conditioned on the noise level and estimate the scores at all noise magnitudes.

训练了一个单一的得分网络,这个网络的输入条件包括噪声水平。这意味着模型不仅学习原始数据的得分,也学习在不同噪声水平下数据的得分。这样,模型可以在各种噪声条件下估计得分,增强了其灵活性和鲁棒性。
(3)退火Langevin动力学

We then propose an annealed version of Langevin dynamics, where we initially use scores corresponding to the highest noise level, and gradually anneal down the noise level until it is small enough to be indistinguishable from the original data distribution.

在这种退火Langevin动力学中,初始时使用与最高噪声水平对应的得分开始采样,然后逐渐降低噪声水平,直到与原始数据分布几乎无差别。这种逐步减小噪声的过程帮助算法有效地从数据稀疏区域向高密度区域过渡,同时确保采样过程的平滑和高效。

是不是还有些抽象?来举个例子:
想象正在做一个拼图,但拼图的某些部分几乎是空白的,只有很少的线索来帮助完成这些区域。
(1)向拼图中添加噪点
这就像是在拼图的空白部分随机撒上一些彩色的小点点,这样即使原本很难看出任何图案的区域,现在也有了一些可识别的信息。这有助于更好地判断如何在这些区域进行拼接。在数据生成的情景中,加入噪声的做法可以帮助模型在原本数据稀疏的地方“看到”一些结构,从而进行更好的学习和生成。
(2)使用一个能感知噪声大小的模型
接下来,使用一个特别的模型,这个模型不仅能看到拼图的每一块(模型能够识别和处理数据的各个部分),还能根据周围的“噪点”来调整自己的策略。无论噪点多少,这个模型都能尝试找出最佳的拼接方法。在数据生成场景中,这意味着无论数据的不确定性多大,模型都能尽可能准确地预测数据的分布。
通过这种方式,模型不仅能“看到”原始数据的结构,还能“感知”到因噪声引入的新信息。这就好比在拼图时,不只是关注已有的线索,还能利用背景中散落的颜色点来帮助你判断应该如何放置每一块拼图。模型通过这样的方式,可以更全面地理解和预测数据的分布,尤其是在原始数据较为稀疏或不完整的区域。
(3)从大量噪点开始,逐渐减少噪点
最后,采用了一种从多噪点到少噪点逐渐过渡的方法,这就像是先从一个粗略的拼图开始,然后逐渐向更精细、更清晰的方向调整。起初,模型在很多噪点中尝试找出大致的结构;随着时间推移,减少噪点使得模型能够更精确地看到每一块拼图的细节,从而更准确地完成整个拼图。

从以上的分析中,相信可以对他们要做的事情有了一定了解。接下来,我们分析一下如何作者是如何阐述这一新范式的优点的:
(1)目标函数的易处理性

First, our objective is tractable for almost all parameterizations of the score networks without the need of special constraints or architectures, and can be optimized without adversarial training, MCMC sampling, or other approximations during training.

所提出的方法不需要特殊的约束或复杂的网络架构,这意味着几乎所有的得分网络参数化形式都可以使用这种方法,而且在优化过程中不需要对抗性训练、马尔可夫链蒙特卡罗(MCMC)采样或其他复杂的近似方法。这大大简化了训练过程,提高了方法的实用性。
(2)目标函数的可比较性

The objective can also be used to quantitatively compare different models on the same dataset.

该方法的目标函数可以用来定量比较同一数据集上不同模型的性能。这是一个非常有用的特性,因为它允许研究者们直接比较不同方法的效果,而不需要依赖于主观的视觉评估。

方法

接下来,我们来分析具体的实现方法。
背景:
(1)数据
一个由独立同分布(i.i.d.)样本 x i ∈ R D \mathrm{x_i\in\mathbb{R}^D} xiRD构成的数据集,这些样本来自于一个未知的数据分布。在概率密度函数 p ( x ) p(x) p(x)上的得分定义为 ∇ x log p ( x ) ∇_x \text{log}p(x) xlogp(x)即概率密度函数在点 x x x的梯度的对数。这个得分可以告诉我们如何微调 x x x来增加 p ( x ) p(x) p(x)的值,从而使得 x x x更可能出现。
(2)得分网络 s θ s_\theta sθ
这是一个由参数 θ \theta θ参数化的神经网络,它的作用是逼近真实数据分布 p d a t a ( x ) p_{data}(x) pdata(x)的得分。简单地说,分数网络学习如何基于数据样本估计数据分布的梯度。
(3)生成模型的目标
生成模型的目标是利用训练数据集来学习一个模型,从而能够生成来自原始数据分布 p d a t a ( x ) p_{data}(x) pdata(x)的新样本。

NCSN由两部分组成:分数匹配和郎之万动力学采样。

分数匹配

分数匹配最初是为了学习非归一化的统计模型设计的,这些模型基于从未知数据分布中抽取的独立同分布(i.i.d.)样本。非归一化模型意味着模型不直接输出概率值,而是输出某种能量或概率密度的函数,这在处理复杂或多模态的数据分布时非常有用。文章采用分数匹配来重新目的化(repurpose)为分数估计。

直接训练分数网络:使用分数匹配,可以直接训练一个分数网络 s θ ( x ) s_θ (x) sθ(x)来估计 ∇ x l o g p d a t a ( x ) ∇_x logp_{data}(x) xlogpdata(x),而不需要先训练一个模型来估计 p d a t a ( x ) p_{data}(x) pdata(x)
在许多生成模型中,特别是像生成对抗网络(GANs)或某些类型的自动编码器(如变分自编码器,VAEs)中,通常需要训练一个模型来学习并估计整个数据分布。这是因为这些模型的目标是能够从学习到的分布中直接抽取样本,也就是说,它们需要能够描述整个数据的概率分布。分数匹配提供了一种不同的方法。它不是直接估计整个概率密度函数,而是估计该密度函数梯度的对数,即数据分布的“得分”。这是因为分数匹配的目标是找到一个函数(分数网络),该函数可以直接估计数据点在其分布中的局部变化方向和强度,而无需完整地描述整个分布的形状或范围。
分数匹配的优势在于其效率和直接性,它允许模型专注于学习数据分布的局部特性而不是全局特性。这样做简化了训练过程,减少了计算负担,并使模型能够有效地处理更复杂或高维的数据分布。

避免使用能量基模型的梯度:与典型的得分匹配使用方式不同,文章选择不使用能量基模型(energy-based model)的梯度作为得分网络,以避免由于高阶梯度计算带来的额外计算负担。

分数匹配的目标函数是最小化以下表达式:
1 2 E p d a t a [ ∥ s θ ( x ) − ∇ x log ⁡ p d a t a ( x ) ∥ 2 2 ] \frac12\mathbb{E}_{p_\mathrm{data}}[\left\|\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})-\nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x})\right\|_2^2] 21Epdata[sθ(x)xlogpdata(x)22]
这个目标可以展示为一个常数的等价形式,即这种最小化过程实质上是在优化一个与常数相差一个固定值的量。
E p d a t a ( x ) [ tr ⁡ ( ∇ x s θ ( x ) ) + 1 2 ∥ s θ ( x ) ∥ 2 2 ] \mathbb{E}_{p_{\mathrm{data}}(\mathbf{x})}\bigg[\operatorname{tr}(\nabla_{\mathbf{x}}\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x}))+\frac{1}{2}\left\|\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})\right\|_{2}^{2}\bigg] Epdata(x)[tr(xsθ(x))+21sθ(x)22]

E p d a t a ( x ) \mathbb{E}_{p_{\mathrm{data}}(\mathbf{x})} Epdata(x):这表示期望是在数据分布 p d a t a ( x ) p_{data} (x) pdata(x)上计算的,意味着考虑的是整个数据集上的平均效果。
tr ⁡ ( ∇ x s θ ( x ) ) \operatorname{tr}(\nabla_{\mathbf{x}}\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})) tr(xsθ(x)):得分网络 s θ ( x ) s_θ (x) sθ(x)的梯度(Jacobian矩阵)的迹(trace)。迹是Jacobian矩阵所有对角线元素(即每个维度自己对自己的偏导数)的和,这部分量度了得分网络在每个方向上响应数据变化的敏感度。
1 2 ∥ s θ ( x ) ∥ 2 2 \frac{1}{2}\left\|\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})\right\|_{2}^{2} 21sθ(x)22:表示得分网络输出的欧几里得范数的平方,乘以1/2。这衡量得分网络输出的大小,本质上反映了网络预测得分的强度。

迹的部分量度得分网络如何在每个数据点局部对输入数据的微小变化做出反应。范数平方部分提供了关于得分网络输出总体大小的信息,这在一定程度上反映了得分网络对数据分布的拟合度。

它避免了直接计算 s θ ( x ) s_θ (x) sθ(x) ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x}) xlogpdata(x)之间的差异的二范数,这在数学上和计算上可能都较为复杂。通过利用迹和范数,可以更高效地评估得分网络的性能,同时这种形式在理论上更易于处理。

然而,由于迹的计算,分数网络无法扩展到深度网络和高维数据。这一步骤在高维空间中尤其复杂,因为需要处理大量的偏导数和高维矩阵。

作者讨论了两种大规模分数匹配方法:
(1)去噪分数匹配(Denoising score matching)
它规避了迹的计算,具体做法:

  1. 扰动数据点
    去噪得分匹配首先将数据点 x \mathbf{x} x通过一个预设的噪声分布 q σ ( x ~ ∣ x ) q_\sigma(\tilde{\mathbf{x}}\mid\mathbf{x}) qσ(x~x)扰动。意味着每个原始数据点 x \mathbf{x} x被添加了噪声,生成了扰动后的数据点 x ~ \tilde{\mathbf{x}} x~
  2. 估计扰动数据分布的得分:随后,该方法使用得分匹配来估计这些扰动后的数据点的数据分 q σ ( x ~ ) q_\sigma(\tilde{\mathbf{x}}) qσ(x~)的得分。扰动数据分布 q σ ( x ~ ) q_\sigma(\tilde{\mathbf{x}}) qσ(x~)可以通过对噪声分布 q σ ( x ~ ∣ x ) q_\sigma(\tilde{\mathbf{x}}\mid\mathbf{x}) qσ(x~x)和原始数据分布 p d a t a ( x ) p_{data}(\mathbf{x}) pdata(x)进行卷积得到,即 q σ ( x ~ ) ≜ ∫ q σ ( x ~ ∣ x ) p data ( x ) d x q_\sigma(\tilde{\mathbf{x}})\triangleq\int q_\sigma(\tilde{\mathbf{x}}\mid\mathbf{x})p_\text{data}(\mathbf{x})\text{d}\mathbf{x} qσ(x~)qσ(x~x)pdata(x)dx
    此时,目标函数写为:
    1 2 E q σ ( x ~ ∣ x ) p data ( x ) [ ∥ s θ ( x ~ ) − ∇ x ~ log ⁡ q σ ( x ~ ∣ x ) ∥ 2 2 ] \frac12\mathbb{E}_{q_\sigma(\tilde{\mathbf{x}}|\mathbf{x})p_\text{data}(\mathbf{x})}[\|\mathbf{s}_{\boldsymbol{\theta}}(\tilde{\mathbf{x}})-\nabla_{\tilde{\mathbf{x}}}\log q_\sigma(\tilde{\mathbf{x}}\mid\mathbf{x})\|_2^2] 21Eqσ(x~x)pdata(x)[sθ(x~)x~logqσ(x~x)22]

在去噪分数匹配中,最优分数网络 s θ ∗ ( x ) s_\theta^*(x) sθ(x),即最小化目标方程(如上式)的分数网络,将几乎肯定地等于扰动数据分布 q σ ( x ) q_\sigma(\mathbf{x}) qσ(x)的梯度对数。这说明,在最优条件下,分数网络能够精确地捕捉到扰动数据分布的局部变化。
尽管得分网络在理论上可以精确匹配扰动分布的得分,但要让这个扰动分布的得分接近原始数据分布的得分,一个关键的前提是噪声必须足够小。这是因为只有当噪声小到足以让扰动分布接近原始分布,从扰动分布得到的得分才能有效地代表原始数据分布的得分。
想象一个简单的情况:如果我们向数据中添加的噪声非常小,那么这些数据点几乎不会偏离它们原来的位置,因此扰动后的数据分布与原始的数据分布非常相似。在这种情况下,从扰动数据得到的得分几乎可以完美地反映原始数据的得分。

(2)切片分数匹配(Sliced score matching)
通过使用随机投影来近似计算分数匹配中的Jacobian迹

  1. 随机投影
    利用随机向量来近似计算Jacobian矩阵的迹 tr ⁡ ( ∇ x s θ ( x ) ) \operatorname{tr}(\nabla_{\mathbf{x}}\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})) tr(xsθ(x))。即:通过在一定分布(如多变量标准正态分布)下抽取随机向量,然后使用这些向量来计算投影后的Jacobian。
  2. 目标函数
    切片得分匹配的目标函数是:
    E p v E p d a t a [ v T ∇ x s θ ( x ) v + 1 2 ∥ s θ ( x ) ∥ 2 2 ] \mathbb{E}_{p_{\mathbf{v}}}\mathbb{E}_{p_{\mathrm{data}}}\left[\mathbf{v}^{\mathsf{T}}\nabla_{\mathbf{x}}\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})\mathbf{v}+\frac{1}{2}\left\|\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})\right\|_{2}^{2}\right] EpvEpdata[vTxsθ(x)v+21sθ(x)22]
    这里,第一项 v T ∇ x s θ ( x ) v \mathbf{v}^{\mathsf{T}}\nabla_{\mathbf{x}}\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x})\mathbf{v} vTxsθ(x)v表示通过随机向量 v \mathbf{v} v计算得到的Jacobian投影,可以有效地通过前向模式自动微分(forward mode auto-differentiation)计算。
    然而,尽管切片得分匹配为高维数据提供了一个有效的近似方法,但它需要大约是去噪得分匹配计算量的四倍,这是因为前向模式自动微分在计算上比较昂贵。

郎之万采样

我们先来看一下原文:

Langevin dynamics can produce samples from a probability density p ( x ) p(\mathbf{x}) p(x) using only the score function ∇ x log p ( x ) \nabla_{\mathbf{x}}\text{log}p(\mathbf{x}) xlogp(x). Given a fixed step size ϵ \epsilon ϵ > 0, and an initial value x ~ 0 ∼ π ( x ) \tilde{\mathbf{x}}_0\sim\pi(\mathbf{x}) x~0π(x) with π \pi π being a prior distribution, the Langevin method recursively computes the following
x ~ t = x ~ t − 1 + ϵ 2 ∇ x log ⁡ p ( x ~ t − 1 ) + ϵ z t \tilde{\mathbf{x}}_{t}=\tilde{\mathbf{x}}_{t-1}+\frac{\epsilon}{2}\nabla_{\mathbf{x}}\log p(\tilde{\mathbf{x}}_{t-1})+\sqrt{\epsilon} \mathbf{z}_{t} x~t=x~t1+2ϵxlogp(x~t1)+ϵ zt

整个过程可以总结如下:

  1. 初始化
    从某个先验分布 π ( x ) \pi(\mathbf{x}) π(x)中抽取初始样本 x ~ 0 \tilde{x}_0 x~0。这个先验可以是简单的均匀分布或正态分布,或者是任何数据可能遵循的分布的先验。
  2. 递归更新
    使用上面的迭代公式来计算新样本,其中 z t ∼ N ( 0 , I ) \mathbf{z}_{t}\sim N(0,I) ztN(0,I)是从标准正态分布中抽取的随机噪声,用于引入随机性,确保探索整个概率密度函数的空间。 ϵ \epsilon ϵ是固定的步长参数,它决定了每一步更新的幅度。

接下来我们对郎之万动力学的理论基础进行分析:

  1. 收敛性
    当步长 ϵ \epsilon ϵ趋向于 0 且总迭代次数 T T T趋向于无穷大时,分布 x ~ T \tilde{x}_T x~T将趋向于精确的 p x p{\mathbf{x}} px。在理想情况下,郎之万动力学能够精确地从目标分布中采样。
  2. 实际应用中的近似
    ϵ \epsilon ϵ较小且 T T T较大时,尽管不是无限小或无限大,生成的样本通常足够接近目标分布 p x p{\mathbf{x}} px,因此在实践中常常忽略微小的误差。在某些情况下,可能需要使用Metropolis-Hastings更新来纠正这种近似产生的偏差,尤其是在 ϵ \epsilon ϵ较大或 T T T较小的情况下。

接下来,我们结合分数网络 s θ s_\theta sθ
在实际操作中,首先需要训练一个得分网络 s θ ( x ) s_\theta(\mathbf{x}) sθ(x),使其近似于 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x}) xlogpdata(x)(即文中所说的 s θ ( x ) ≈ ∇ x log ⁡ p d a t a ( x ) s_\theta(\mathbf{x}) \approx \nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x}) sθ(x)xlogpdata(x) )。一旦训练完成,就可以在郎之万动力学的更新公式中使用这个网络输出作为 ∇ x log ⁡ p ( x ~ t − 1 ) \nabla_{\mathbf{x}}\log p(\tilde{\mathbf{x}}_{t-1}) xlogp(x~t1)的近似值来生成样本。
这样做的好处是不需要直接知道或计算整个数据分布 p d a t a ( x ) p_{data}(\mathbf{x}) pdata(x),而只需依赖得分网络提供概率密度的局部梯度信息。

以上也是作者基于分数的生成式建模框架的关键思想。

基于分数的生成模型面临的挑战

这些挑战在前文中已经提及,作者在方法后面跟进了一个章节来阐述。
首先是流形假设(mainfold hypothesis),也就是前文提及的“得分的未定义性”。

上图展示了作者分别在未添加高斯噪声(左)和添加了高斯噪声(右)的训练。左图展示了流形假设对分数估计的负面影响,而通过高斯噪声的帮助,网络可以收敛。

其次是低数据密度区域(Low data density regions),在低密度区域的数据的稀缺性可能会导致困难的分数估计与得分匹配和MCMC采样与朗之万动力学。

The scarcity of data in low density regions can cause difficulties for both score estimation with score matching and MCMC sampling with Langevin dynamics.


如上图所示,左图为 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x}) xlogpdata(x),右图为 s θ ( x ) s_\theta(\mathbf{x}) sθ(x)。数据密度 p d a t a ( ( x ) ) p_{data}(\mathbf(x)) pdata((x))使用了橘色的热力图进行编码,深的颜色说明更高的数据密度。红色的正方形框处 s θ ( x ) ≈ ∇ x log ⁡ p d a t a ( x ) s_\theta(\mathbf{x}) \approx \nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x}) sθ(x)xlogpdata(x)

在低数据密度的区域中,由于缺乏数据样本,得分匹配可能没有足够的证据来准确地估计得分函数。如果某个区域的数据密度接近于零,那么从实际数据中采样到该区域的数据点的概率也非常小,甚至为零。
由于缺乏数据支持,分数估计在这些区域可能是不准确或不可靠的。

最后,是郎之万动力学的慢混合(Slow mixing of Langevin dynamics)。
用不同的方法从混合高斯样本中提取.(a)精确取样。(b)使用Langevin动力学进行采样并获得精确分数。(c)使用退火朗之万动力学与精确分数采样。显然,朗之万动力学错误地估计了两种模式之间的相对权重,而退火朗之万动力学恢复了相对权重。
即,在数据分布的不同模态之间存在低密度区域时,郎之万动力学可能无法在合理时间内正确恢复这些模态的相对权重,从而可能不会收敛到真实的数据分布。接下来我们详细分析一下:
考虑一个混合分布 p data ( x ) = π p 1 ( x ) + ( 1 − π ) p 2 ( x ) p_\text{data}(\mathbf{x})=\pi p_1(\mathbf{x})+(1-\pi)p_2(\mathbf{x}) pdata(x)=πp1(x)+(1π)p2(x),其中 p 1 ( x ) p_1(\mathbf{x}) p1(x) p 2 ( x ) p_2(\mathbf{x}) p2(x)是具有不相交支持的标准化分布(normalized distributions with disjoint supports), π ∈ ( 0 , 1 ) \pi\in(0,1) π(0,1)混合权重。即 p 1 ( x ) p_1(\mathbf{x}) p1(x) p 2 ( x ) p_2(\mathbf{x}) p2(x)在数学上没有重叠的区域,它们各自独占某个区域。

p 1 ( x ) p_1(\mathbf{x}) p1(x)的支持范围内, ∇ x log ⁡ p d a t a ( x ) = ∇ x ( log ⁡ π + log ⁡ p 1 ( x ) ) = ∇ x log ⁡ p 1 ( x ) \nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x})=\nabla_{\mathbf{x}}(\log\pi+\log p_1(\mathbf{x}))=\nabla_{\mathbf{x}}\log p_1(\mathbf{x}) xlogpdata(x)=x(logπ+logp1(x))=xlogp1(x),因为 π \pi π是一个常数,对梯度没有贡献。同理,在 p 2 ( x ) p_2(\mathbf{x}) p2(x)的支持范围内也有类似的结果。说明 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathbf{x}}\log p_\mathrm{data}(\mathbf{x}) xlogpdata(x)只与局部分布 p 1 ( x ) p_1(\mathbf{x}) p1(x) p 2 ( x ) p_2(\mathbf{x}) p2(x)有关,而与混合权重 π \pi π无关。
由于郎之万动力学使用这个得分函数来采样,所产生的样本将不会反映混合权重 π \pi π。意味着即使理论上郎之万动力学可以在不同模态间正确采样,由于不同模态通过低密度区域相连,实际应用时可能需要非常小的步长和极大的迭代次数才能实现有效的混合。

这部分的有点抽象,我们继续来举一个例子:
假设有一个篮子,里面装着两种颜色的球:红色和蓝色。红球非常多,蓝球则相对较少。目标是从篮子里随机抽取球,但希望抽取的球能够反映出篮子中红球和蓝球的真实比例。
现在,假设红球和蓝球之间有一个空隙,这个空隙几乎没有球。这就类似于的“低数据密度区域”。在这种设置下,如果闭上眼睛去篮子里摸球,大部分时间都只能摸到红球或蓝球,很难从一个颜色的球跨越到另一个颜色的球,因为中间几乎没有球。(这里还是很抽象,再解释一下:在中间空白区域几乎没有球的情况下,如果手正好在这个区域,会发现很难决定下一步应该往哪个方向去。因为在这里,感受不到任何方向上的球(数据点)增多,这使得基于当前位置的梯度信息来决定移动方向变得非常困难。意味着即使想要通过这个篮子去均匀地采样所有的球(整个数据分布),也很可能在尝试从一个区域(如红球区)移动到另一个区域(如蓝球区)时遇到困难,因为低密度区域没有足够的信息来引导你有效地移动。)

当使用郎之万动力学来模拟这个抽取过程时,像是在篮子里随机走动,每一步都试图根据“感觉”到的球的密度(或者说是球的“得分”)来调整方向。但是,因为中间的空隙,很难从一个球的区域“走”到另一个球的区域。因此,最终抽取到的球可能会不准确地反映出红球和蓝球的真实比例,特别是如果我们没有足够的时间和非常小的步子在篮子里走动的话。

噪声条件得分网络:学习和推理(Noise Conditional Score Networks: learning and inference)

接下来就到了学习和推理的部分了
我们首先对原文章开头的这一部分进行总结:

  1. 原始数据可能存在于低维流形上,这对于分数估计和生成模型可能是一个挑战。通过向数据中添加高斯噪声,可以使得数据分布的支撑(support)扩展到整个空间,因此避免了低维流形带来的问题,使得分数估计在整个空间内都有定义。
  2. 添加较大的高斯噪声有助于“填充”原始数据分布中的低密度区域,意味着在这些通常数据稀少的区域中引入了更多的“虚拟”数据点,从而为分数匹配提供了更多的训练信号,有助于改进分数估计。
  3. 通过使用多个噪声水平,可以生成一系列逐渐接近真实数据分布的扰动数据分布。类似于模拟退火过程,可以逐步从高噪声(数据分布更平滑、更易于模拟)向低噪声(更接近原始数据分布)过渡。
  4. 利用这些中间的扰动数据分布,可以在执行郎之万动力学时改进其在多模态分布上的混合速度。这是通过在初始阶段使用对应于大噪声水平的得分开始采样,然后逐渐减小噪声水平来实现的,有助于模型在不同模态之间更有效地转移。
  5. 提出通过训练单一的条件分数网络来同时估计所有噪声水平下的得分。这种网络设计可以在不同的噪声条件下灵活调整,更有效地学习数据在各种扰动下的特性。

Noise Conditional Score Networks

设定的噪声水平 σ i \sigma_i σi是一个正的几何序列,意味着每个噪声水平相比前一个都有固定比例的增加,这个比例大于1。通过这样的设置,噪声水平从很大( σ 1 \sigma_1 σ1) 减小到很小( σ L \sigma_L σL),目的是在初期使用大噪声来克服数据稀疏和低维流形的问题,而在后期使用小噪声来尽量减少对数据的影响。

扰动数据分布 q σ ( x ) q_\sigma(\mathbf{x}) qσ(x)通过将原始数据 p d a t a ( t ) p_{data}(t) pdata(t)与高斯噪声 N ( x ∣ t , σ 2 I ) N(\mathbf{x}|\mathbf{t},\sigma^2I) N(xt,σ2I)得到( q σ ( x ) ≜ ∫ p data ( t ) N ( x ∣ t , σ 2 I ) d t q_\sigma(\mathbf{x})\triangleq \int p_\text{data}(\mathbf{t})\mathcal{N}(\mathbf{x}\mid\mathbf{t},\sigma^2I)\mathrm{d}\mathbf{t} qσ(x)pdata(t)N(xt,σ2I)dt),有助于模型在不同的噪声水平下学习数据的特性。

NCSN的目标是联合估计所有扰动数据分布的得分,即对每个噪声水平 σ \sigma σ,都能估计得分 ∇ x log ⁡ q σ ( x ) \nabla_{\mathbf{x}}\log q_\sigma(\mathbf{x}) xlogqσ(x),从而使网络能够适应不同程度的数据扰动,从而更全面地学习数据的特性。

Learning NCSNs via score matching

通过分数匹配训练NCSN。
首先,作者选择了去噪分数匹配,而非切片分数匹配。因为去噪得分匹配在速度上略快,且更自然地适合评估噪声扰动数据分布的得分。虽然切片得分匹配也能有效训练NCSNs,但在实际应用中,去噪得分匹配更符合需求。
对于给定的噪声水平 σ \sigma σ,去噪得分匹配的目标函数为:

ℓ ( θ ; σ ) ≜ 1 2 E p data ( x ) E x ~ ∼ N ( x , σ 2 I ) [ ∥ s θ ( x ~ , σ ) + x ~ − x σ 2 ∥ 2 2 ] \ell(\boldsymbol{\theta};\sigma)\triangleq\frac12\mathbb{E}_{p_\text{data}(\mathbf{x})}\mathbb{E}_{\tilde{\mathbf{x}}\sim\mathcal{N}(\mathbf{x},\sigma^2I)}\bigg[\left\|\mathbf{s}_{\boldsymbol{\theta}}(\tilde{\mathbf{x}},\sigma)+\frac{\tilde{\mathbf{x}}-\mathbf{x}}{\sigma^2}\right\|_2^2\bigg] (θ;σ)21Epdata(x)Ex~N(x,σ2I)[ sθ(x~,σ)+σ2x~x 22]

这个函数尝试最小化预测得分和扰动数据之间的误差,其中 x ~ \tilde{\mathbf{x}} x~是从以 x \mathbf{x} x为中心、方差为 σ 2 \sigma^2 σ2的正态分布中采样得到。

整合多个噪声水平:
通过结合不同噪声水平的目标函数,形成一个统一的目标:

L ( θ ; { σ i } i = 1 L ) ≜ 1 L ∑ i = 1 L λ ( σ i ) ℓ ( θ ; σ i ) \mathcal{L}(\boldsymbol{\theta};\{\sigma_i\}_{i=1}^L)\triangleq\frac{1}{L}\sum_{i=1}^L\lambda(\sigma_i)\ell(\boldsymbol{\theta};\sigma_i) L(θ;{σi}i=1L)L1i=1Lλ(σi)(θ;σi)

其中 λ ( σ i ) > 0 \lambda(\sigma_i)>0 λ(σi)>0是一个依赖于噪声水平 σ i \sigma_i σi的系数函数,用来调整不同噪声水平下目标函数的权重。

为了确保各个噪声水平的目标函数贡献均衡,作者选择 λ ( σ ) = σ 2 \lambda(\sigma)=\sigma^2 λ(σ)=σ2。使得目标函数中的每个组成部分的量级不依赖于 σ \sigma σ,从而保证了模型在所有噪声水平上均有适当的学习和表现。

重要的是,这个目标函数不需要对抗训练、替代损失或在训练过程中从得分网络采样(如对比散度)。此外,这种方法不要求 s θ ( x , σ ) s_\theta(\mathbf{x},\sigma) sθ(x,σ)有特殊的架构,使得它在实现上更加灵活和可行。

λ ( ⋅ ) \lambda(\cdot) λ() { σ i } i = 1 L \{\sigma_i\}_{i=1}^L {σi}i=1L确定后,该目标函数还可以用来定量比较不同的NCSNs,提供一个标准化的评价方法。

这里对 λ ( ⋅ ) \lambda(\cdot) λ()的选择做一个解释:
在分数匹配中,误差项 ∥ s θ ( x ~ , σ ) + x ~ − x σ 2 ∥ 2 2 \left\|\mathbf{s}_{\boldsymbol{\theta}}(\tilde{\mathbf{x}},\sigma)+\frac{\tilde{\mathbf{x}}-\mathbf{x}}{\sigma^2}\right\|_2^2 sθ(x~,σ)+σ2x~x 22是关键, x ~ − x \tilde{\mathbf{x}}-\mathbf{x} x~x是由于噪声 σ \sigma σ引入的扰动,其量级随 σ \sigma σ变化。如果直接使用这个表达式进行优化,不同噪声水平下的误差项可能会因 σ \sigma σ的不同而有很大的差异。作者通过设置 λ ( σ ) = σ 2 \lambda(\sigma)=\sigma^2 λ(σ)=σ2,其实际上是在调整每个噪声水平下误差项的权重,以保证所有噪声水平对总体目标函数的贡献大致相等。这样做可以避免某些噪声水平对模型训练的影响过大或过小。
我们来分析原文的公式:
如果 λ ( σ ) = σ 2 \lambda(\sigma)=\sigma^2 λ(σ)=σ2,那么目标函数变为:
λ ( σ ) ℓ ( θ ; σ ) = σ 2 ℓ ( θ ; σ ) = 1 2 E [ ∥ σ s θ ( x ~ , σ ) + x ~ − x σ ∥ 2 2 ] \lambda(\sigma)\ell(\boldsymbol{\theta};\sigma)=\sigma^2\ell(\boldsymbol{\theta};\sigma)=\frac12\mathbb{E}\left[\left\|\sigma\mathbf{s}_{\boldsymbol{\theta}}(\tilde{\mathbf{x}},\sigma)+\frac{\tilde{\mathbf{x}}-\mathbf{x}}\sigma\right\|_2^2\right] λ(σ)(θ;σ)=σ2(θ;σ)=21E[ σsθ(x~,σ)+σx~x 22]
那么,因为 x ~ − x \tilde{\mathbf{x}}-\mathbf{x} x~x是由以 x \mathbf{x} x为均值, σ 2 I \sigma^2I σ2I为方差的高斯分布生生成的,因此除以 σ \sigma σ之后刚好得到标准正态分布,也就是 x ~ − x σ ∼ N ( 0 , I ) \frac{\tilde{\mathbf{x}}-\mathbf{x}}\sigma\sim\mathcal{N}(0,I) σx~xN(0,I)
然后,由于 σ s θ ( x ~ , σ ) \sigma s_\theta(\mathbf{\tilde{x}},\sigma) σsθ(x~,σ)的范数与 1 σ \frac{1}\sigma σ1成正比( ∥ σ s θ ( x , σ ) ∥ 2 ∝ 1 \left\|\sigma\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma)\right\|_2\propto1 σsθ(x,σ)21),整个误差项的范数大约维持在一个固定的水平,无论 σ \sigma σ的值如何。这是因为 σ \sigma σ的影响在两个项中相互抵消。

NCSN inference via annealed Langevin dynamics

现在要使用退火郎之万动力学进行推理了。
这种方法灵感来源于模拟退火和退火重要性抽样技术,旨在通过逐步减小噪声水平和调整步长来提高样本的质量。虽然整篇文章都没有提到扩散,但是看完这一部分,大家就会知道为什么说他也经常被看作扩散。

  1. 初始化样本
    首先从某个固定的先验分布中初始化样本,例如均匀噪声。
  2. 逐步采样
    在最大噪声水平 σ 1 \sigma_1 σ1下运行郎之万动力学,步长为 α 1 \alpha_1 α1,从扰动数据分布 q σ 1 ( x ) q_{\sigma1}(\mathbf{x}) qσ1(x)中采样。
    完成后,使用前一步的最终样本作为起点,在下一个噪声水平 σ 2 \sigma_2 σ2下继续运行郎之万动力学,步长为 α 2 \alpha_2 α2。步长在每一步都逐渐减小,以适应降低的噪声水平。
    这个过程一直重复,直到达到最低噪声水平 σ L \sigma_L σL,此时的数据分布接近原始数据分布 p d a t a ( x ) p_{data}(\mathbf{x}) pdata(x)

这一过程是不是和我们熟知的DDPM非常相似?

注意步长 α i \alpha_i αi被设定为与 σ i 2 \sigma^2_i σi2成比例( α i ∝ σ i 2 \alpha_i\propto\sigma_i^2 αiσi2),目的是固定“信噪比”
α i s θ ( x , σ i ) 2 α i   z \frac{\alpha_i\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma_i)}{2\sqrt{\alpha_i}\textbf{ z}} 2αi  zαisθ(x,σi)的量级,有助于在不同的噪声水平下保持动力学的稳定性和效率。
为什么这样子做呢,因为
E [ ∥ α i s θ ( x , σ i ) 2 α i z ∥ 2 2 ] ≈ E [ α i ∥ s θ ( x , σ i ) ∥ 2 2 4 ] ∝ 1 4 E [ ∥ σ i s θ ( x , σ i ) ∥ 2 2 ] \mathbb{E}[\|\frac{\alpha_i\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma_i)}{2\sqrt{\alpha_i} \mathbf{z}}\|_2^2] \approx \mathbb{E}[\frac{\alpha_i\|\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma_i)\|_2^2}{4}] \propto \frac{1}{4}\mathbb{E}[\|\sigma_i\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma_i)\|_2^2] E[2αi zαisθ(x,σi)22]E[4αisθ(x,σi)22]41E[σisθ(x,σi)22]

而前文提到了 ∥ s θ ( x , σ ) ∥ 2 ∝ 1 / σ \left\|\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma)\right\|_{2}\propto 1/\sigma sθ(x,σ)21/σ,那么
∥ α i s θ ( x , σ i ) 2 α i z ∥ 2 ∝ 1 4 E [ ∥ σ i s θ ( x , σ i ) ∥ 2 2 ] ∝ 1 4 \left\|\frac{\alpha_i\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma_i)}{2\sqrt{\alpha_i} \mathbf{z}}\right\|_2\propto\frac14\mathbb{E}[\left\|\sigma_i\mathbf{s}_{\boldsymbol{\theta}}(\mathbf{x},\sigma_i)\right\|_2^2]\propto\frac14 2αi zαisθ(x,σi) 241E[σisθ(x,σi)22]41
同样不依赖于 σ i \sigma_i σi

End

细细读完之后,真的不得不佩服作者的脑洞和如此严谨的推理,令人叹为观止。实验部分这里就不多赘述,感兴趣的小伙伴自行阅读作者的实验分析部分。
我写的分析可能还是比较表面,这篇文章的深度远不止于此,小伙伴在读的过程中有什么新发现,欢迎一起讨论。如果有帮到你,欢迎给个赞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值