论文笔记(六十三)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θ1e−fθ(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θ=∫e−fθ(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θ1e−fθ(x))=∇xlogZθ1+∇xloge−fθ(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+1←xi+c∇logp(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θ1e−fθ(x). 这里:
- Z θ = ∫ e − f θ ( x ) d x Z_\theta = \int e^{-f_\theta(x)} dx Zθ=∫e−fθ(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 ∫e−fθ(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θ1e−fθ(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+1←xi+c∇xlogp(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) c∇xlogp(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ϵ 的引入是为了:
- 避免采样陷入某个模式,保证生成样本的多样性。
- 在分布中探索不同的高密度区域。
6. 示例:从二维高斯混合分布采样
- 假设数据分布是一个二维高斯混合分布,有两个主要模式。
- 初始点 x 0 x_0 x0 从均匀分布中随机采样。
- 使用 Langevin 动力学公式迭代:
- 计算得分函数 ∇ x log p ( x i ) \nabla_x \log p(x_i) ∇xlogp(xi),指示向高密度区域移动的方向。
- 加入噪声项 2 c ϵ \sqrt{2c} \epsilon 2cϵ,避免收敛到固定点。
- 最终,生成的样本分布将匹配数据的高斯混合分布。
总结
- 得分函数:描述如何在数据空间中移动以增加概率密度。
- 神经网络学习得分函数:避免直接计算归一化常数。
- Langevin 动力学:通过得分函数采样,从随机点生成符合数据分布的样本。
- 噪声的作用:增加多样性,避免收敛到单一模式。
请注意,公式(157)中的目标依赖于真实的评分函数,而对于建模自然图像等复杂分布,我们无法获得该函数。幸运的是,已经衍生出一些被称为评分匹配的替代技术(如文献[14, 15, 16, 17]),它们无需知道真实评分即可最小化Fisher散度,并能够通过随机梯度下降进行优化。
总体而言,将分布表示为评分函数并通过马尔可夫链蒙特卡洛技术(例如Langevin动力学)使用它来生成样本的过程被称为基于评分的生成建模(Score-based Generative Modeling)[9, 10, 11]。
- 公式 (157) 的目标和问题
- 评分匹配(Score Matching)的定义和动机
- 评分匹配方法如何解决 Fisher 散度问题
- 基于评分的生成建模(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)T∇logp(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)T∇logp(x)] 是核心,需要通过积分技巧消除对 ∇ log p ( x ) \nabla \log p(x) ∇logp(x) 的显式依赖。
2.3 无需真实评分的技术
在文献 [14, 15, 16, 17] 中,研究者提出了以下两种方法来优化 Fisher 散度:
直接评分匹配 将目标函数通过积分分部法(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)T∇logp(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)].逐步加噪评分匹配 为数据添加逐步递增的高斯噪声,并训练得分函数 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=1∑Tλ(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+c∇logp(xi)+2cϵ,
- c c c:步长。
- ϵ ∼ N ( 0 , I ) \epsilon \sim \mathcal{N}(0, I) ϵ∼N(0,I):随机噪声。
3.3 逐步退火 Langevin 动力学 为了解决原始评分匹配的低效问题,引入逐步加噪的退火 Langevin 动力学:
- 初始化:从一个简单的先验分布(如高斯分布)采样初始点 x 0 x_0 x0。
- 逐步采样:依次降低噪声水平 σ t \sigma_t σt,并在每一步运行 Langevin 动力学。
- 最终样本收敛到真实分布 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) 的期望平方,可以优化得分函数。
总结
- 公式 (157) 的问题:依赖于真实得分函数 ∇ log p ( x ) \nabla \log p(x) ∇logp(x),但真实分布未知。
- 评分匹配方法:通过积分技巧和逐步加噪,绕过了对真实得分函数的显式依赖。
- 基于评分的生成建模:利用学习到的得分函数进行采样,生成符合数据分布的样本。
- 与扩散模型的联系:两者在训练目标和采样过程中密切相关。
然而,正如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=1∑Tλ(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,T−1,…,2,1运行Langevin动力学来生成样本。初始化选择某个固定的先验分布(如均匀分布),而每个后续的采样步骤都从前一次模拟的最终样本开始。由于噪声水平随着时间步 t t t逐渐减小,同时步长也随时间减少,样本最终会收敛到一个真实的模式。这与变分扩散模型的马尔科夫HVAE解释中所执行的采样过程直接类似,在该过程中,一个随机初始化的数据向量通过降低噪声水平被逐步优化。
因此,我们已经在训练目标和采样程序中明确建立了变分扩散模型与基于分数的生成模型之间的联系。
一个问题是如何将扩散模型自然地推广到无限数量的时间步。在马尔科夫HVAE视角下,这可以被解释为将层级数量扩展到无穷,即 T → ∞ T \to \infty T→∞。从等价的基于分数的生成模型的视角来看,这一点更加清晰;在无限数量的噪声尺度下,图像在连续时间上的扰动可以表示为一个随机过程,因此可以用随机微分方程(SDE)(什么是随机微分方程(SDE))来描述。采样则通过逆向SDE进行,这自然需要估计每个连续值噪声水平下的分数函数[10]。SDE的不同参数化本质上描述了不同的时间扰动方案,从而能够灵活地对加噪过程进行建模[6]。
相关文章:

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(五)
Understanding Diffusion Models: A Unified Perspective(五) 文章概括基于得分的生成模型(Score-based Generative Models) 文章概括 引用: article{luo2022understanding,title{Understanding diffusion models: A…...

C++并发:C++内存模型和原子操作
C11引入了新的线程感知内存模型。内存模型精确定义了基础构建单元应当如何被运转。 1 内存模型基础 内存模型牵涉两个方面:基本结构和并发。 基本结构关系到整个程序在内存中的布局。 1.1 对象和内存区域 C的数据包括: 内建基本类型:int&…...

JavaScript函数中this的指向
总结:谁调用我,我就指向谁(es6箭头函数不算) 一、ES6之前 每一个函数内部都有一个关键字是 this ,可以直接使用 重点: 函数内部的 this 只和函数的调用方式有关系,和函数的定义方式没有关系 …...
【java学习笔记】@Autowired注解 使用方法和作用 | 配合@Component注解使用 | IOC控制反转
原本在类中,要用什么对象,就直接new一个对象。这种原始的方式 是由应用本身去控制实例的。 用了Autowired注解后,就相当于把实例(对象)的控制权 交给外部容器来统一管理(降低耦合)。(…...
数论问题76一一容斥原理
容斥原理是一种计数方法,用于计算多个集合的并集中元素的个数,以避免重复计算。以下是其基本内容及相关公式: 两个集合的容斥原理 若有集合A和集合B,那么A与B的并集中元素的个数等于A集合元素个数加上B集合元素个数,再…...

python-leetcode-从中序与后序遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right r…...

【Oracle篇】使用Hint对优化器的执行计划进行干预(含单表、多表、查询块、声明四大类Hint干预)
💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…...

设置jmeter外观颜色
设置jmeter外观颜色 方法: 步骤一、点击顶部选项 ->外观,这里提供了不同的主题,可选自己喜欢的风格。 步骤二、选择后,弹框提示点击Yes。...

计算机网络 IP 网络层 2 (重置版)
IP的简介: IP 地址是互联网协议地址(Internet Protocol Address)的简称,是分配给连接到互联网的设备的唯一标识符,用于在网络中定位和通信。 IP编制的历史阶段: 1,分类的IP地址: …...

神经网络和深度学习
应用 类型 为什么近几年飞速发展 数据增长,算力增长,算法革新 逻辑回归 向量化 浅层神经网络(Shallow neural network) 单条训练数据前向传播计算表达式 batch训练数据前向传播计算表达式 反向传播计算表达式 参数随机初始化 不能全部设为0 原因是同一…...
MySQL 基础学习(3):排序查询和条件查询
MySQL 查询与条件操作:详解与技巧 在本文中,我们将探讨 MySQL 中的查询操作及其相关功能,包括别名、去重、排序查询和条件查询等,并总结一些最佳实践和注意事项。 一、使用别名(AS) 在查询中,…...

webAPI -DOM 相关知识点总结(非常细)
title: WebAPI语法 date: 2025-01-28 12:00:00 tags:- 前端 categories:- 前端WEB API 了解DOM的结构并掌握其基本的操作,体验 DOM 在开发中的作用 API简介 就是使用js来操作html和浏览器 什么是DOM? 就是一个文档对象模型,是用来呈现预计于任意htm…...
web集群
项目名称 基于keepalivednginx构建一个高可用、高性能的web集群 项目架构图 项目描述 构建一个基于nginx的7层负载均衡的web集群项目,模拟企业的业务环境达到构建一个高并发、高可用的web集群。通过压力测试来检验整个集群的性能,找出瓶颈࿰…...

Elasticsearch——Elasticsearch性能优化实战
摘要 本文主要介绍了 Elasticsearch 性能优化的实战方法,从硬件配置优化、索引优化设置、查询方面优化、数据结构优化以及集群架构设计等五个方面进行了详细阐述,旨在帮助读者提升 Elasticsearch 的性能表现。 1. 硬件配置优化 升级硬件设备配置一直都…...

不背单词快捷键(不背单词键盘快捷键)
文章目录 不背单词快捷键 不背单词快捷键 ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ ᅟᅠ …...
kafka-保姆级配置说明(consumer)
bootstrap.servers #deserializer应该与producer保持对应 #key.deserializer #value.deserializer ##fetch请求返回时,至少获取的字节数,默认值为1 ##当数据量不足时,客户端请求将会阻塞 ##此值越大,客户端请求阻塞的时间越长&…...

1.五子棋对弈python解法——2024年省赛蓝桥杯真题
问题描述 原题传送门:1.五子棋对弈 - 蓝桥云课 "在五子棋的对弈中,友谊的小船说翻就翻?" 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着"友谊第…...

python3+TensorFlow 2.x(三)手写数字识别
目录 代码实现 模型解析: 1、加载 MNIST 数据集: 2、数据预处理: 3、构建神经网络模型: 4、编译模型: 5、训练模型: 6、评估模型: 7、预测和可视化结果: 输出结果ÿ…...
杨辉三角(蓝桥杯2021年H)
输入一个数字,看杨辉三角压缩矩阵第几个数与之相等。 #include<iostream> using namespace std; /* typedef struct Node {int* data;int size;Node* next; }Node,*Linklist; */ int C(int a,int b) {//求解组合数int c 1,div 1;if (b 0) {c 1;}else {fo…...

【蓝桥杯嵌入式入门与进阶】2.与开发板之间破冰:初始开发板和原理图2
个人主页:Icomi 专栏地址:蓝桥杯嵌入式组入门与进阶 大家好,我是一颗米,本篇专栏旨在帮助大家从0开始入门蓝桥杯并且进阶,若对本系列文章感兴趣,欢迎订阅我的专栏,我将持续更新,祝你…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...