diffusion model(十七)Score视角下的生成模型(Score-Based Generative Models)

info
paperGenerative Modeling by Estimating Gradients of the Data Distribution
songyang 大佬博客https://yang-song.net/blog/2021/score/
song yang 大佬视频讲解https://www.youtube.com/watch?v=wMmqCMwuM2Q
Githubhttps://github.com/ermongroup/ncsn
个人博客主页http://myhz0606.com/article/ncsn

1 背景

生成模型想要做的是这样一件事:假设我们有一批数据 X = { x i ∈ R D } i = 1 N X=\{\mathrm{x}_i \in \mathbb{R}^D\}_{i=1}^{N} X={xiRD}i=1N是从数据分布 p d a t a ( x ) p_{data}(\mathrm{x}) pdata(x)采样得到,但我们不知道 p d a t a ( x ) p_{data}(\mathrm{x}) pdata(x)是什么。我们期望通过已知的数据 X X X来训练一个模型 p θ ( x ) p_{\theta}(\mathrm{x}) pθ(x),这个模型和真实数据分布近似 p θ ( x ) ≃ p d a t a ( x ) p_{\theta}(\mathrm{x}) \simeq p_{data}(\mathrm{x}) pθ(x)pdata(x)。这样我们就可以通过 p θ ( x ) p_{\theta}(\mathrm{x}) pθ(x)源源不断采样得到新的样本。

过去我们做图像生成任务主要有两类方法:

methodmain idearepresentative method优点缺点
likelihood-based model以最大化对数似然为训练目标,直接对数据分布 p d a t a ( x ) p_{data}(x) pdata(x)进行拟合(模型输出的就是满足数据分布的图片)1. 自回归模型(autoregressive models) 2. 流模型(normalizing flow models)3. 能量模型(energy-based models, EBMs)4. 变分自编码器(variational auto-encoders , VAEs))收敛速度快。1. 对网络结构限制多2. 生成效果一般
implicit generative models没有对数据分布 p d a t a ( x ) p_{data}(x) pdata(x)进行直接优化,而是通过判别器间接优化生成对抗模型生成质量相对高训练不稳定

上述两类方法都有各自的局限。本文提出了一个新的生成模型,通过score matching的方法估计数据分布对数的梯度(论文称该梯度为score),随后通过朗之万动力学(Langevin dynamic)的方法进行采样生成。下面来看具体是怎么做的吧!

2 Score-based Generative Model

基于score-based的生成模型不拟合原始数据分布 p d a t a ( x ) p_{data}(\mathrm{x}) pdata(x),而是拟合数据分布对数的梯度 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathrm{x}} \log p_{data}(\mathrm{x}) xlogpdata(x) 。作者将数据分布对数的梯度称为score。下面我们从score-based model的motivation出发,探究score-based model是如何工作的。

2.1 Motivation of Score-Based Model

前文提到生成模型的目标是: 通过采样数据 { x 1 , x 2 , ⋯   , x N } ∼ i . i . d . p d a t a ( x ) \{\mathrm{x}_1, \mathrm{x}_2, \cdots, \mathrm{x}_N \} \stackrel {\mathrm{i.i.d.}} \sim p_{data}(\mathrm{x}) {x1,x2,,xN}i.i.d.pdata(x)来训练一个模型 p θ p_{\theta} pθ ( θ ∈ Θ \theta \in \Theta θΘ Θ \Theta Θ是模型的参数空间),使得 p θ ( x ) ≃ p d a t a ( x ) p_{\theta}(\mathrm{x}) \simeq p_{data}(\mathrm{x}) pθ(x)pdata(x)

为了保证neural netowrk的输出符合标准数据分布的特征:

1) 非负

2)概率分布的积分为1

我们可以将 p θ ( x ) p_{\theta}(\mathrm{x}) pθ(x)定义为

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

式中: Z θ Z_{\theta} Zθ是一个归一化常数,使概率分布满足 ∫ p θ ( x ) d x = 1 \int p_{\theta}(\mathrm{x})d\mathrm{x}=1 pθ(x)dx=1 ,不难得出 Z θ = ∫ e − f θ ( x ) d x Z_{\theta} = \int e ^{-f_{\theta}(\mathrm{x})}d\mathrm{x} Zθ=efθ(x)dx f θ ( x ) f_{\theta}(\mathrm{x}) fθ(x)称为非归一化概率模型(unnormalized probabilistic model)或能量模型(energy-based model)。

为了求解式(1)的概率分布,我们需要求解 Z θ Z_{\theta} Zθ,即使将 x \mathrm{x} x视作是离散变量,将积分用求和近似, Z θ Z_{\theta} Zθ的求解依然非常困难。

过去解决归一化常数 Z θ Z_{\theta} Zθ难求解的优化思路主要有3个

核心思路代表方法缺点
近似求解 Z θ Z_{\theta} Zθenergy-based model [5]概率密度估计不准确
通过限制网络结构来让 Z θ Z_{\theta} Zθ便于求解Normalizing flow model [6]VAE [7]对网络结构的约束限制了模型的表达能力
只建模数据生成过程,不对概率密度函数建模GAN[3]模型收敛难,无法提供准确的概率估计

通过以上分析,一个更好的生成模型架构应当具备以下几个特征:

1)不给模型架构添加过多先验,使模型的表达能力受限。

2)能够准确的估计概率密度。

  1. 生成质量高,生成过程可控。

2.2 Why Score-Based Model

为了绕过非归一化常数 Z θ Z_{\theta} Zθ计算麻烦的问题,score-based model 网络拟合的目标并非数据分布 p d a t a ( x ) p_{\mathrm{data}}{(\mathrm{x})} pdata(x)而是数据分布的梯度 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathrm{x}} \log p_{\mathrm{data}}{(\mathrm{x})} xlogpdata(x)。下面来看为什么要这么做。

2.2.1 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathrm{x}} \log p_{\mathrm{data}}{(\mathrm{x})} xlogpdata(x)是什么

为了方便理解,不妨假设原始数据分布 p d a t a ( x ) p_{\mathrm{data}}{(\mathrm{x})} pdata(x)由两个高斯分布组成,颜色越深的位置说明该位置的样本点的概率值越大。

image cropped from song yang’s tutorial[8]

假设样本点 x 0 ∼ p d a t a ( x ) , x 0 ∈ R d \mathrm{x}_0 \sim p_{\mathrm{data}}(\mathrm{x}), \mathrm{x}_0 \in \mathbb{R} ^{d} x0pdata(x),x0Rd ∇ x log ⁡ p d a t a ( x 0 ) \nabla_{\mathrm{x}} \log p_{\mathrm{data}}{(\mathrm{x}_0)} xlogpdata(x0)是概率密度函数在 x 0 \mathrm{x}_0 x0处对数的梯度(实质上是一个向量场 ∇ x log ⁡ p d a t a ( x 0 ) ∈ R d \nabla_{\mathrm{x}} \log p_{\mathrm{data}}{(\mathrm{x}_0)}\in \mathbb{R}^{d} xlogpdata(x0)Rd )。

物理意义:当样本点 x 0 \mathrm{x}_0 x0沿着 ∇ x log ⁡ p d a t a ( x 0 ) \nabla_{\mathrm{x}} \log p_{\mathrm{data}}{(\mathrm{x}_0)} xlogpdata(x0)的方向变化时,能够使得概率增长最快。

image cropped from song yang’s tutorial[8]

2.2.2 为什么估计 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathrm{x}} \log p_{\mathrm{data}}{(\mathrm{x})} xlogpdata(x)能绕开归一化常数 Z θ Z_{\theta} Zθ的计算

根据式1的定义: p θ ( x ) = e − f θ ( x ) Z θ p_\theta(\mathrm{x}) = \frac{e^{-f_{\theta}(\mathrm{x})}}{Z_{\theta}} pθ(x)=Zθefθ(x) ,对其两边取对数得到

log ⁡ p θ ( x ) = log ⁡ e − f θ ( x ) − log ⁡ Z θ = − f θ ( x ) − log ⁡ Z θ (2) \begin{aligned} \log{p_\theta}(\mathrm{x}) &= \log{e^{-f_{\theta}(\mathrm{x})}} - \log{Z_{\theta}} \\ &= -f_{\theta}(\mathrm{x}) - \log{Z_{\theta}} \end{aligned} \tag{2} logpθ(x)=logefθ(x)logZθ=fθ(x)logZθ(2)

两边对 x \mathrm{x} x求导

∇ x log ⁡ p θ ( x ) = − ∇ x f θ ( x ) − ∇ x log ⁡ Z θ ⏟ = 0 = − ∇ x f θ ( x ) (3) \begin{aligned} \nabla_{\mathrm{x}}\log{p_\theta}(\mathrm{x}) &= -\nabla_{\mathrm{x}}f_{\theta}(\mathrm{x}) - \underbrace{\nabla_{\mathrm{x}}\log{Z_{\theta}}}_{= 0} \\ &= -\nabla_{\mathrm{x}}f_{\theta}(\mathrm{x}) \end{aligned} \tag{3} xlogpθ(x)=xfθ(x)=0 xlogZθ=xfθ(x)(3)

作者将 ∇ x log ⁡ p θ ( x ) \nabla_{\mathrm{x}}\log{p_\theta}(\mathrm{x}) xlogpθ(x)定义为score function,记为 s θ ( x ) s_{\theta}(\mathrm{x}) sθ(x),将以score function为建模目标的模型称为score-based model。score function与归一化常数 Z θ Z_{\theta} Zθ无关。

2.3 How to Train Score-Based Model

2.3.1 Score Matching

我们可以最小化fisher diverence来训练score based model,即估计的score和实际的score均方误差最小:

min ⁡ θ 1 2 E p data [ ∥ ∇ x log ⁡ p data  ( x ) − ∇ x log ⁡ p θ ( x ) ∥ 2 2 ] (4) \min_{\theta} \frac{1}{2} \mathbb{E}_{p_{\text {data}}}\left[\left\| \nabla_{\mathrm{x}} \log p_{\text {data }}(\mathrm{x})-\nabla_{\mathrm{x}} \log p_\theta(\mathrm{x})\right\|_2^2\right]\tag{4} θmin21Epdata[xlogpdata (x)xlogpθ(x)22](4)

上式还有一个问题,虽然 ∇ x log ⁡ p θ ( x ) \nabla_{\mathrm{x}} \log p_\theta(\mathrm{x}) xlogpθ(x)可以通过自动微分工具很方便的计算(如torch),但数据分布 p data ( x ) p_{\text {data}}(x) pdata(x)是未知的,这导致 ∇ x log ⁡ p data  ( x ) \nabla_{x} \log p_{\text {data }}(x) xlogpdata (x)无法求得,因此需要对上式进行变形。这个方法称之为score matching [1]。

最终score matching的优化目标如下(忽略常数项)(附录A给出了详细推导步骤):

min ⁡ θ 1 2 E p data [ 2 t r ( ∇ x 2 log ⁡ p θ ( x ) ⏟ ∇ x s θ ( x ) ) + ∥ ∇ x log ⁡ p θ ( x ) ⏟ s θ ( x ) ∥ 2 2 ] = min ⁡ θ 1 2 E p data [ 2 T r ( ∇ x s θ ( x ) ) + ∥ s θ ( x ) ∥ ] \begin{align*} &\min_{\theta} \frac{1}{2}\mathbb{E}_{p_{\text{data}}} \big[2 \mathrm{tr} \big(\underbrace{ \nabla_{\mathrm{x}}^{\textcolor{red}{2}} \log p_\theta(\mathrm{x})}_{\nabla_{\mathrm{x}} s_{\theta}(\mathrm{x})} \big) + \| \underbrace{\nabla_{\mathrm{x}} \log p_\theta(\mathrm{x})}_{s_{\theta}(x)}\|_{2}^2 \big] \tag{5} \\ & = \min_{\theta} \frac{1}{2}\mathbb{E}_{p_{\text{data}}}[2 \mathrm{Tr} (\nabla_{\mathrm{x}} s_{\theta}(\mathrm{x})) + \| s_\theta({\mathrm{x}})\|] \tag{6} \end{align*} θmin21Epdata[2tr(xsθ(x) x2logpθ(x))+sθ(x) xlogpθ(x)22]=θmin21Epdata[2Tr(xsθ(x))+sθ(x)](5)(6)

通过score matching,我们推导出式6,无需知道 ∇ x log ⁡ p data  ( x ) \nabla_{\mathrm{x}} \log p_{\text {data }}(\mathrm{x}) xlogpdata (x)也能优化 s θ ( x ) s_{\theta}(\mathrm{x}) sθ(x)。只需计算 s θ ( x ) s_{\theta}(\mathrm{x}) sθ(x) ∇ x s θ ( x ) \nabla_{\mathrm{x}} s_{\theta}(\mathrm{x}) xsθ(x)即可。 s θ ( x ) s_{\theta}(\mathrm{x}) sθ(x)的计算很简单,只是一个前向计算,而 ∇ x s θ ( x ) \nabla_{\mathrm{x}} s_{\theta}(\mathrm{x}) xsθ(x)的计算复杂度就高了,我们知道 s θ ( x ) s_{\theta}(\mathrm{x}) sθ(x) x \mathrm{x} x都是向量 s θ , x ∈ R d s_{\theta},\mathrm{x} \in \mathbb{R}^{d} sθ,xRd,因此 ∇ x s θ ( x ) \nabla_{\mathrm{x}} s_{\theta}(\mathrm{x}) xsθ(x)是向量对向量求导,相较标量对向量求导,计算量扩大了 d d d倍,即需要 d d d次反向传播才能得到 ∇ x s θ ( x ) \nabla_{\mathrm{x}} s_{\theta}(\mathrm{x}) xsθ(x)。那么有没有办法能够对这个计算量进行优化呢?答案是肯定的

x = [ x 1 , x 2 , ⋯   , x d ] T , s θ ( x ) = [ s 1 ( x ; θ ) , s 2 ( x ; θ ) , ⋯   , s d ( x ; θ ) ] T ∇ x s θ ( x ) = [ ∂ ∂ x 1 s 1 ( x ; θ ) ∂ ∂ x 2 s 1 ( x ; θ ) ⋯ ∂ x d s 1 ( x ; θ ) ∂ ∂ x 1 s 2 ( x ; θ ) ∂ ∂ x 2 s 2 ( x ; θ ) ⋯ ∂ ∂ x d s 2 ( x ; θ ) ⋮ ⋮ ⋱ ⋮ ∂ ∂ x 1 s d ( x ; θ ) ∂ ∂ x 2 s d ( x ; θ ) ⋯ ∂ ∂ x d s d ( x ; θ ) ] T r ( ∇ x s θ ( x ) ) = ∑ i = 1 d ∂ s i ( x ; θ ) ∂ x i (7) \begin{aligned} &\boldsymbol {\mathrm{x}} = [x_1, x_2, \cdots, x_d]^T, \\ & s_{\theta}(\boldsymbol {\mathrm{x}}) = [s_1(\mathrm{x; \theta}), s_2(\mathrm{x; \theta}), \cdots, s_d(\mathrm{x; \theta})]^T \\ &\nabla_{\mathrm{x}} s_{\theta}(\boldsymbol {\mathrm{x}}) = \begin{bmatrix}&\frac{\partial }{\partial x_1}s_1(\mathrm{x; \theta}) &\frac{ \partial }{\partial x_2}s_1(\mathrm{x; \theta}) & \cdots & \frac{ \partial }{x_d}s_1(\mathrm{x; \theta}) \\&\frac{\partial }{\partial x_1}s_2(\mathrm{x; \theta}) &\frac{ \partial }{\partial x_2}s_2(\mathrm{x; \theta}) & \cdots & \frac{ \partial }{\partial x_d}s_2(\mathrm{x; \theta}) \\&\vdots & \vdots &\ddots &\vdots \\ &\frac{\partial }{\partial x_1}s_d(\mathrm{x; \theta}) &\frac{ \partial }{\partial x_2}s_d(\mathrm{x; \theta}) & \cdots & \frac{ \partial }{\partial x_d}s_d(\mathrm{x; \theta}) \end{bmatrix} \\ &\mathrm{Tr}(\nabla_{\mathrm{x}} s_{\theta}(\boldsymbol {\mathrm{x}})) = \sum^{d}_{i=1} \frac{\partial s_i(\mathrm{x; \theta})}{\partial x_i} \end{aligned} \tag{7} x=[x1,x2,,xd]T,sθ(x)=[s1(x;θ),s2(x;θ),,sd(x;θ)]Txsθ(x)= x1s1(x;θ)x1s2(x;θ)x1sd(x;θ)x2s1(x;θ)x2s2(x;θ)x2sd(x;θ)xds1(x;θ)xds2(x;θ)xdsd(x;θ) Tr(xsθ(x))=i=1dxisi(x;θ)(7)

2.3.2 Sliced Score Matching (SSM)

sliced score matching是加速计算score matching的一个方法。我们知道score matching计算量大主要是由于向量对向量求导,需要计算雅可比矩阵(Jacobian matrix)导致,向量维度越高计算量越大。sliced score matching的思路很简单,如果我们将输出向量映射为一个标量,此时计算量不就显著降低了。最简单的方法,我们可以引入一个投影矩阵 v , v ∈ R d × 1 \mathrm{v}, \mathrm{v} \in \mathbb{R}^{d \times 1} v,vRd×1。投影矩阵 v \mathrm{v} v服从某一分布 p v p_{\mathrm{v}} pv(可以为高斯分布或其它分布),即 v ∼ p v \mathrm{v} \sim p_{\mathrm{v}} vpv, sliced score matching的fisher divergence为

min ⁡ θ 1 2 E p v E p data [ ∥ v T ∇ x log ⁡ p data  ( x ) − v T s θ ( x ) ∥ 2 2 ] (8) \min_{\theta} \frac{1}{2} \mathbb{E}_{p_{\mathrm{v}}}\mathbb{E}_{p_{\text {data}}} \left[\left\| \mathrm{v} ^ {\mathrm{T}} \nabla_{\mathrm{x}} \log p_{\text {data }}(\mathrm{x})-\mathrm{v} ^ {\mathrm{T}} s_{\theta}{(x)}\right\|_2^2\right]\tag{8} θmin21EpvEpdata[ vTxlogpdata (x)vTsθ(x) 22](8)

同样类似score matching方法对上式转为期望定义形式,利用分部积分消除未知数据分布 p d a t a p_{data} pdata的依赖,得到slice score matching的优化目标。(推导细节参考文献[9])

min ⁡ θ E p v E p data [ v T ∇ x ( v T s θ ( x ) ) + 1 2 ( v T s θ ( x ) ) 2 ] (9) \min_{\theta} \mathbb{E}_{p_{\mathrm{v}}}\mathbb{E}_{p_{\text {data}}} \left[ \mathrm{v}^{\mathrm{T}}\nabla_{\mathrm{x}}(\mathrm{v}^{\mathrm{T}}s_{\theta}(\mathrm{x})) + \frac{1}{2}(\mathrm{v}^{\mathrm{T}}s_{\theta}(\mathrm{x}))^2 \right] \tag{9} θminEpvEpdata[vTx(vTsθ(x))+21(vTsθ(x))2](9)

上式中 v T s θ ( x ) \mathrm{v}^{\mathrm{T}}s_{\theta}(\mathrm{x}) vTsθ(x)的结果是一个标量,只需一次反向传播即可,相比原生score matching计算量大大降低。

2.3.3 denoising score matching DSM

denoising score matching是解决原生score matching计算量大的另一个思路。 x \mathrm{x} x是从数据分布 p d a t a ( x ) p_{data}(\mathrm{x}) pdata(x)采样的样本点,我们定义一个噪声分布 q σ ( x ~ ∣ x ) = N ( x , σ 2 I ) q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) = \mathcal{N}(\mathrm{x}, \sigma^2 \mathrm{I}) qσ(x~x)=N(x,σ2I)

x ~ = x + σ z (10) \tilde{\mathrm{x}} = \mathrm{x} + \sigma z \tag{10} x~=x+σz(10)

其中: z ∼ N ( 0 , I ) z\sim \mathcal{N}(\mathbf{0}, \mathbf{I}) zN(0,I),我们得到加噪的 x \mathrm{x} x

注意,这里我们并不能知道 x ~ \tilde{\mathrm{x}} x~是什么分布,不妨将 x ~ \tilde{\mathrm{x}} x~的分布记为 q σ ( x ~ ) q_{\sigma}({\tilde{\mathrm{x}}}) qσ(x~)
q σ ( x ~ ) = ∫ q σ ( x ~ ∣ x ) p d a t a ( x ) d x q_{\sigma}({\tilde{\mathrm{x}}}) = \int q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) p_{data}(\mathrm{x})d\mathrm{x} qσ(x~)=qσ(x~x)pdata(x)dx

我们在扰动后的数据 x ~ \tilde{\mathrm{x}} x~上估计score,类似式(4),我们可以写出下式的优化目标

min ⁡ θ 1 2 E q σ ( x ~ ) [ ∥ ∇ x ~ log ⁡ q σ ( x ~ ) − s θ ( x ~ ) ∥ 2 2 ] (11) \min_{\theta} \frac{1}{2} \mathbb{E}_{q_{\sigma}({\tilde{\mathrm{x}}})}\left[\left\| \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma}({\tilde{\mathrm{x}}}) -s_{\theta}(\tilde{\mathrm{x}})\right\|_2^2\right]\tag{11} θmin21Eqσ(x~)[x~logqσ(x~)sθ(x~)22](11)

同样,由于 q σ ( x ~ ) q_{\sigma}({\tilde{\mathrm{x}}}) qσ(x~)未知,我们需要对其进行转化,最后得到denoising score matching的优化目标,详细推导过程见文献[10],或附录B。

min ⁡ θ 1 2 E x ∼ p data ( x ) , x ~ ∼ q σ ( x ~ ∣ x ) [ ∥ s θ ( x ~ ) − ∇ x ~ log ⁡ q σ ( x ~ ∣ x ) ∥ 2 2 ] (12) \min_{\theta} \frac{1}{2} \mathbb{E}_{\mathrm{x} \sim p_{\text {data}}(\mathrm{x}), \tilde{\mathrm{x}}\sim q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x})}\left[\left\| s_{\theta}(\tilde{\mathrm{x}})-\nabla_{\tilde{\mathrm{x}}} \log q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x})\right\|_2^2\right]\tag{12} θmin21Expdata(x),x~qσ(x~x)[sθ(x~)x~logqσ(x~x)22](12)

其中 ∇ x ~ log ⁡ q σ ( x ~ ∣ x ) \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) x~logqσ(x~x) 可以很方便的计算

q σ ( x ~ ∣ x ) = 1 2 π σ exp ⁡ ( − ( x ~ − x ) 2 2 σ 2 ) log ⁡ q σ ( x ~ ∣ x ) = log ⁡ 1 2 π σ + log ⁡ exp ⁡ ( − ( x ~ − x ) 2 2 σ 2 ) log ⁡ q σ ( x ~ ∣ x ) = log ⁡ 1 2 π σ − ( x ~ − x ) 2 2 σ 2 ∇ x ~ log ⁡ q σ ( x ~ ∣ x ) = ∇ x ~ log ⁡ 1 2 π σ − ∇ x ~ ( x ~ − x ) 2 2 σ 2 ∇ x ~ log ⁡ q σ ( x ~ ∣ x ) = − x ~ − x σ 2 (13) \begin{aligned}q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) &= \frac{1}{\sqrt{2\pi} \sigma } \exp \left ({- \frac{(\tilde{\mathrm{x}} - \mathrm{x})^2}{2\sigma^2}} \right) \\ \log q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) &= \log {\frac{1}{\sqrt{2\pi} \sigma }} + \log \exp \left ({- \frac{(\tilde{\mathrm{x}} - \mathrm{x})^2}{2\sigma^2}} \right) \\ \log q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) &= \log {\frac{1}{\sqrt{2\pi} \sigma }} - { \frac{(\tilde{\mathrm{x}} - \mathrm{x})^2}{2\sigma^2}} \\ \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) &= \nabla_{\tilde{\mathrm{x}}}\log {\frac{1}{\sqrt{2\pi} \sigma }} - \nabla_{\tilde{\mathrm{x}}}{ \frac{(\tilde{\mathrm{x}} - \mathrm{x})^2}{2\sigma^2}} \\ \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) &= -{ \frac{\tilde{\mathrm{x}} - \mathrm{x}}{\sigma^2}} \end{aligned} \tag{13} qσ(x~x)logqσ(x~x)logqσ(x~x)x~logqσ(x~x)x~logqσ(x~x)=2π σ1exp(2σ2(x~x)2)=log2π σ1+logexp(2σ2(x~x)2)=log2π σ12σ2(x~x)2=x~log2π σ1x~2σ2(x~x)2=σ2x~x(13)

带入式12,得

min ⁡ θ 1 2 E x ∼ p data ( x ) , x ~ ∼ q σ ( x ~ ∣ x ) [ ∥ s θ ( x ~ ) + x ~ − x σ 2 ∥ 2 2 ] (14) \min_{\theta} \frac{1}{2} \mathbb{E}_{\mathrm{x} \sim p_{\text {data}}(\mathrm{x}), \tilde{\mathrm{x}}\sim q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x})}\big[\| s_{\theta}(\tilde{\mathrm{x}})+{ \frac{\tilde{\mathrm{x}} - \mathrm{x}}{\sigma^2}} \|_2^2\big]\tag{14} θmin21Expdata(x),x~qσ(x~x)[sθ(x~)+σ2x~x22](14)

从式14可见,denoising score matching同样解决了原生score matching高维Jacobian matrix计算复杂度高的问题。但Denoising score matching还有个问题,通过式14的优化目标我们训练的是 x ~ \tilde{\mathrm{x}} x~的score based model, x ~ \tilde{\mathrm{x}} x~是有噪声的,用包含噪声的score来近似无噪声的score对生成的质量肯定会有影响。虽然我们可以降低所添加噪声的强度来让 x ~ ≃ x \tilde{\mathrm{x}} \simeq \mathrm{x} x~x,当 σ → 0 \sigma \rightarrow 0 σ0 x ~ → x \tilde{\mathrm{x}} \rightarrow \mathrm{x} x~x。但是当 σ → 0 \sigma \rightarrow 0 σ0时, ∇ x ~ log ⁡ q σ ( x ~ ∣ x ) → ∞ ∈ R d \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma}(\tilde{\mathrm{x}}|\mathrm{x}) \rightarrow \infin \in \mathbb{R}^d x~logqσ(x~x)Rd此时会出现梯度爆炸。实际中需要tradeoff生成质量和训练稳定性来决定 σ \sigma σ选取的大小。

2.3.4 score matching, slice score matching, denoising score matching效果对比

从slice score matching paper[9]中我们可以得出一下结论:

  • 出当数据的维度增加时,score matching的Jacobian matrix 的计算开销增加,此时SSM和DSM的训练效率明显优于原生score matching。

在这里插入图片描述

  • 从performance的角度看,原生score matching的效果是最好的,slice score matching次之,denoising score matching最弱。

在这里插入图片描述

通过SSMDSM ****两个方法我们均可以相对高效的训练score based model。那么,如何利用训练好的score based model进行图片生成呢?答案就是朗之万动力学(langevin dynamics)。

2.4 How to Sample from trained Score-Based Model

通过前面的训练,我们得到训练好的score- based model s θ ⋆ ( x ) , θ ⋆ ∈ Θ s_{\theta ^{\star}}(\mathrm{x}), \theta ^{\star} \in \Theta sθ(x),θΘ 是模型的参数( Θ \Theta Θ是模型的参数空间)。通过 s θ ⋆ ( x ) s_{\theta ^{\star}}(\mathrm{x}) sθ(x)我们可以得到当前数据在概率密度增长最快的方向 。即: p d a t a ( x ) < p d a t a ( x + λ s θ ⋆ ( x ) ) p_{data}{(\mathrm{x})} < p_{data}{(\mathrm{x} + \lambda s_{\theta ^ {\star}}(\mathrm{x}) )} pdata(x)<pdata(x+λsθ(x)) λ \lambda λ可以考虑为更新的步长。

这样我们可以得出最naive的采样方法(本质上就是梯度迭代算法):

x ⏟ = x 0 → x 0 + λ 0 s θ ⋆ ( x 0 ) ⏟ = x 1 → x 1 + λ 1 s θ ⋆ ( x 1 ) ⏟ = x 2 → ⋯ → x T − 1 + λ T − 1 s θ ⋆ ( x T − 1 ) ⏟ = x T (15) \underbrace{\mathrm{x}}_{=\mathrm{x}^0} \rightarrow \underbrace{ \mathrm{x^{0}} + \lambda^{0} s_{\theta ^ {\star}}(\mathrm{x^{0}}) }_{=\mathrm{x}^{1}}\rightarrow \underbrace{ \mathrm{x^{1}} + \lambda^{1} s_{\theta ^ {\star}}(\mathrm{x^{1}})}_{=\mathrm{x}^{2}} \rightarrow \cdots \rightarrow \underbrace{ \mathrm{x^{T-1}} + \lambda^{T-1} s_{\theta ^ {\star}}(\mathrm{x^{T-1}})}_{=\mathrm{x}^{T}} \tag{15} =x0 x=x1 x0+λ0sθ(x0)=x2 x1+λ1sθ(x1)=xT xT1+λT1sθ(xT1)(15)

理想情况下: p d a t a ( x 0 ) < p d a t a ( x 1 ) < ⋯ < p d a t a ( x T ) p_{data}(\mathrm{x}^{0}) < p_{data}(\mathrm{x}^{1}) < \cdots < p_{data}(\mathrm{x}^{T}) pdata(x0)<pdata(x1)<<pdata(xT)

x T \mathrm{x}^{T} xT就是我们采样生成的数据。初始数据 x 0 \mathrm{x}^{0} x0可以从某一个已知分布 x 0 ∼ π ( x ) \mathrm{x}^{0} \sim \pi (\mathrm{x}) x0π(x)进行采样。

2.4.1 Langevin Dynamics Sampling

此处不介绍Langevin Dynamics Sampling 的提出背景。朗之万采样的算法流程为:

Initialize x 0 ∼ π ( x ) Repeat for  t ← 1 , 2 , ⋯   , T z t ∼ N ( 0 , I ) x t = x t + ϵ 2 ∇ x log ⁡ p d a t a ( x t − 1 ) ⏟ ≃ s θ ⋆ ( x t − 1 ) + ϵ z t If  ϵ → 0  and  T → ∞ , we are guaranteed to have  x T ∼ p d a t a ( x ) \begin{aligned} \hline &\text{Initialize} \quad \mathrm{x}^{0} \sim \pi (\mathrm{x}) \\ & \text{Repeat for } t \leftarrow 1, 2, \cdots, T \\ & \quad \quad z^{t} \sim \mathcal{N} (\mathbf{0}, \mathbf{I}) \\ & \quad \quad \mathrm{x^t} = \mathrm{x^t} + \frac{\epsilon}{2} \underbrace{ \nabla _{\mathrm{x}} \log p_{data}(\mathrm{x}^{t-1}) } _{\simeq s_{\theta ^ {\star}} (\mathrm{x^{t-1}}) } + \sqrt{\epsilon}z^{t} \\ & \text{If }\epsilon \rightarrow 0 \text{ and } T \rightarrow \infin \text{, we are guaranteed to have }\mathrm{x}^{T} \sim p_{data}(\mathrm{x}) \\ \hline \end{aligned} Initializex0π(x)Repeat for t1,2,,TztN(0,I)xt=xt+2ϵsθ(xt1) xlogpdata(xt1)+ϵ ztIf ϵ0 and T, we are guaranteed to have xTpdata(x)

Langevin Dynamics Sampling和naive的梯度迭代法很相似,只是每一次采样中引入了一个随机项。

2.5 Challenges of score-based generative modeling

通过score-matching + Langevin dynamics sampling我们已经完成了用score-based model做生成的完整理论推导。但将其进行实际应用时,效果并不理想。下图为作者在CIFAR-10数据上的实验效果。作者认为这主要是由于score估计不准确导致,有以下两个因素导致我们无法估计出准确的score

image from song yang’s tutorial

2.5.1 The manifold hypothesis(流形假设)

根据流形假设的观点,我们观察到的数据实际上是由一个低维流形映射到高维空间(ambient space)。从流形假设的观点看,score based generative model面临两个挑战:

1) s θ ⋆ ( x ) s_{\theta^\star}(\mathrm{x}) sθ(x)估计的是高维空间的梯度,当 x \mathrm{x} x被限制在低维流形上时,在高维空间(ambient space)中 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathrm{x}} \log p_{data}(\mathrm{x}) xlogpdata(x)有很多方向对 x \mathrm{x} x是没有意义的。(直白来说就是 x \mathrm{x} x有很多冗余的维度,在冗余维度上估计的score是不准确的。

2)只有当数据分布 p d a t a ( x ) p_{data}(\mathrm{x}) pdata(x)能够支撑整个高位空间时,根据式4的优化才能提供一个一致的估计量。这意味着,如果数据仅分布在低维流形上,而不是充满整个高维空间,那么用分数匹配目标来估计分数将会有偏差,导致估计不准确。

在训练过程的训练loss波动大也从一个侧面表现了流形假设引起的score估计不准确。

image from paper[4], slice score matching训练过程中的loss变化趋势

2.5.2 Low data density regions (数据低密度区域)

假定原始数据分布 p d a t a ( x ) p_{data}({\mathrm{x}}) pdata(x)由两个高斯分布组成。若直接以 x ∼ p d a t a ( x ) \mathrm{x} \sim p_{data}({\mathrm{x}}) xpdata(x)进行采样,低密度区域样本很难被采样到,这导致 s θ ⋆ ( x ) s_{\theta ^ \star}({\mathrm{x}}) sθ(x)没有充分拟合低密度区域的数据,难以估计出此区域数据准确的score。

image from paper[4]

2.5.3 如何估计准确的score

回顾一下,作者发现score based generate model效果不好主要由两个原因造成:

1)根据流形假设,原始数据是高维空间的低维流形,无效维度的score会导致训练不稳定。

2)根据数据分布的特点,低密度区域的数据没有得到充分训练,导致无法估计出准确的score。

作者发现,只需给原始数据添加随机扰动的高斯噪声 x ~ = x + σ z \tilde{\mathrm{x}} = \mathrm{x}+\sigma z x~=x+σz,就能很好的缓解上述两个问题。针对第一个问题,由于高斯分布的噪声能够充满整个高维空间(是满秩的),因此当原始数据添加了高斯噪声后形成的样本空间也是满秩的,从而解决原始数据低维流形的限制。

其次,由于原始数据被高斯噪声扰动,使其在样本空间的分布更加均匀,低密度区域变小,从而让低密度区域的数据得到更多的采样,带来更多的训练信号。

细心的同学发现了,加噪的做法和2.3.3节Denoising score matchingDSM) 的核心思路很像。对于DSM来说我们需要保证训练稳定的情形下,尽可能的降低添加噪声的强度,以此来保证 s θ ( x ~ ) ≃ ∇ x log ⁡ p d a t a ( x ) s_{\theta}(\mathrm{\tilde{x}}) \simeq \nabla _{\mathrm{x}} \log p_{data}(\mathrm{x}) sθ(x~)xlogpdata(x) 。但是,添加的噪声强度低了,流形假设和低密度数据分布的问题依旧无法很好被解决,这导致 ∇ x log ⁡ p d a t a ( x ) \nabla _{\mathrm{x}} \log p_{data}(\mathrm{x}) xlogpdata(x) 无法被很好的估计。对问题再次概括:

我们需要添加较大噪声,确保score model在低密度区域也能估计出正确的score,但是这估计的score 是 x ~ \tilde{\mathrm{x}} x~的,噪声较大我们无法保证 s θ ( x ~ ) ≃ ∇ x log ⁡ p d a t a ( x ) s_{\theta}(\mathrm{\tilde{x}}) \simeq \nabla _{\mathrm{x}} \log p_{data}(\mathrm{x}) sθ(x~)xlogpdata(x) 。如何解决这个问题呢?

2.6 Noise-conditional Score Network(NCSN)——Training and Sampling

通过之前的讨论我们知道,当 σ 1 > σ 2 > ⋯ > σ L ≃ 0 \sigma_{1} > \sigma_{2} > \cdots > \sigma_{L} \simeq 0 σ1>σ2>>σL0

σ \sigma σ越大score估计的越准确(意味着误差越小)

E x ~ ∼ q σ L ( x ~ ) , x ∼ p d a t a ( x ) ∥ s θ L ( x , σ L ) − ∇ x ~ log ⁡ q σ L ( x ~ ) ∥ 2 2 > E x ~ ∼ q σ L − 1 ( x ~ ) , x ∼ p d a t a ( x ) ∥ s θ L − 1 ( x , σ L − 1 ) − ∇ x ~ log ⁡ q σ L − 1 ( x ~ ) ∥ 2 2 > > ⋯ > E x ~ ∼ q σ 1 ( x ~ ) , x ∼ p d a t a ( x ) ∥ s θ 1 ( x , σ 1 ) − ∇ x ~ log ⁡ q σ 1 ( x ~ ) ∥ 2 2 (16) \begin{aligned} &\mathbb{E}_{\tilde{\mathrm{x} } \sim q_{\sigma_{L}}(\mathrm{\tilde{x}}), \mathrm{x}\sim p_{data}(\mathrm{x})}\| s_{\theta_L}(\mathrm{x}, \sigma_L) - \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma_{L}}(\mathrm{\tilde{x}})\|_{2}^{2} > \\ &\mathbb{E}_{\tilde{\mathrm{x} } \sim q_{\sigma_{L-1}}(\mathrm{\tilde{x}}), \mathrm{x}\sim p_{data}(\mathrm{x})}\| s_{\theta_{L-1}}(\mathrm{x}, \sigma_{L-1}) - \nabla_{\tilde{\mathrm{x}}}\log q_{\sigma_{L-1}}(\mathrm{\tilde{x}})\|_{2}^{2} > \\ &>\cdots> \\ &\mathbb{E}_{\tilde{\mathrm{x} } \sim q_{\sigma_{1}}(\mathrm{\tilde{x}}), \mathrm{x}\sim p_{data}(\mathrm{x})}\| s_{\theta_1}(\mathrm{x}, \sigma_1) - \nabla_{\tilde{\mathrm{x}}}\log q_{\sigma_{1}}(\mathrm{\tilde{x}})\|_{2}^{2} \end{aligned} \tag{16} Ex~qσL(x~),xpdata(x)sθL(x,σL)x~logqσL(x~)22>Ex~qσL1(x~),xpdata(x)sθL1(x,σL1)x~logqσL1(x~)22>>>Ex~qσ1(x~),xpdata(x)sθ1(x,σ1)x~logqσ1(x~)22(16)

σ \sigma σ越大,noise score离真实数据的score越远

E x ~ ∼ q σ L ( x ~ ) , x ∼ p d a t a ( x ) ∥ ∇ x ~ log ⁡ q σ L ( x ~ ) ⏟ ≃ s θ L ( x , σ L ) − ∇ x log ⁡ p d a t a ( x ) ∥ 2 2 < E x ~ ∼ q σ L − 1 ( x ~ ) , x ∼ p d a t a ( x ) ∥ ∇ x ~ log ⁡ q σ L − 1 ( x ~ ) ⏟ ≃ s θ L − 1 ( x , σ L − 1 ) − ∇ x log ⁡ p d a t a ( x ) ∥ 2 2 < < ⋯ < E x ~ ∼ q σ 1 ( x ~ ) , x ∼ p d a t a ( x ) ∥ ∇ x ~ log ⁡ q σ 1 ( x ~ ) ⏟ ≃ s θ 1 ( x , σ 1 ) − ∇ x log ⁡ p d a t a ( x ) ∥ 2 2 (17) \begin{aligned} &\mathbb{E}_{\tilde{\mathrm{x} } \sim q_{\sigma_{L}}(\mathrm{\tilde{x}}), \mathrm{x}\sim p_{data}(\mathrm{x})}\| \underbrace{\nabla_{\mathrm{\tilde{x}}}\log q_{\sigma{L}}(\mathrm{\tilde{x}})}_{\simeq s_{\theta_{L}(\mathrm{x}, \sigma_{L}})} - \nabla_{\mathrm{x}}\log p_{data}(\mathrm{x})\|_{2}^{2} < \\ &\mathbb{E}_{\tilde{\mathrm{x} } \sim q_{\sigma_{L-1}}(\mathrm{\tilde{x}}), \mathrm{x}\sim p_{data}(\mathrm{x})}\| \underbrace{\nabla_{\mathrm{\tilde{x}}}\log q_{\sigma{L-1}}(\mathrm{\tilde{x}})}_{\simeq s_{\theta_{L-1}(\mathrm{x}, \sigma_{L-1}})} - \nabla_{\mathrm{x}}\log p_{data}(\mathrm{x})\|_{2}^{2} < \\ &< \cdots < \\ &\mathbb{E}_{\tilde{\mathrm{x} } \sim q_{\sigma_{1}}(\mathrm{\tilde{x}}), \mathrm{x}\sim p_{data}(\mathrm{x})}\| \underbrace{\nabla_{\mathrm{\tilde{x}}}\log q_{\sigma{1}}(\mathrm{\tilde{x}})}_{\simeq s_{\theta_{1}(\mathrm{x}, \sigma_{1}})} - \nabla_{\mathrm{x}}\log p_{data}(\mathrm{x})\|_{2}^{2} \end{aligned} \tag{17} Ex~qσL(x~),xpdata(x)sθL(x,σL) x~logqσL(x~)xlogpdata(x)22<Ex~qσL1(x~),xpdata(x)sθL1(x,σL1) x~logqσL1(x~)xlogpdata(x)22<<<Ex~qσ1(x~),xpdata(x)sθ1(x,σ1) x~logqσ1(x~)xlogpdata(x)22(17)

既然用一种噪声强度我们无法tradeoff准确的score和生成质量,那么为什么不用多组噪声强度渐进式的估计真实数据的score呢。先通过强噪声训练的score-based model来引导大方向,走向高密度区域,随后逐级用更小强度的score-based model进行微调方向,最终逼近真实数据分布的score。

为了完成上述过程,首先需要训练不同强度下的score-based model。

2.6.1 Noise-conditional Score Network(NCSN

定义:

{ σ i } i = 1 L \{\sigma_i\}_{i=1}^{L} {σi}i=1L为正几何序列,满足 σ 1 σ 2 = σ 2 σ 3 = ⋯ σ L − 1 σ L = k > 1 \frac{\sigma_{1}}{\sigma_{2}} = \frac{\sigma_{2}}{\sigma_{3}} = \cdots \frac{\sigma_{L-1}} {\sigma_{L}} = k > 1 σ2σ1=σ3σ2=σLσL1=k>1 σ L ≃ 0 \sigma_{L} \simeq 0 σL0. 不难得出

σ i = k L − i σ L (18) \sigma_i = k^{L - i} \sigma_L \tag{18} σi=kLiσL(18)

q σ i ( x ~ ) = ∫ q σ i ( x ~ ∣ x ) p d a t a ( x ) d x = ∫ N ( 0 , σ i 2 I ) p d a t a ( x ) d x q_{\sigma_i}({\tilde{\mathrm{x}}}) = \int q_{\sigma_i}(\tilde{\mathrm{x}}|\mathrm{x}) p_{data}(\mathrm{x})d\mathrm{x} = \int \mathcal{N}(\mathbf{0}, \sigma_{i}^2\mathbf{I}) p_{data}(\mathrm{x})d\mathrm{x} qσi(x~)=qσi(x~x)pdata(x)dx=N(0,σi2I)pdata(x)dx

参考2.3.3的式11,我们很容易写出噪声强度为 σ i \sigma_{i} σi时的score matching优化目标

l ( θ ; σ i ) = 1 2 E x ~ ∼ q σ i ( x ~ ) , x ∼ p d a t a ( x ) [ ∥ ∇ x log ⁡ q σ i ( x ~ ) − s θ ( x , σ i ) ∥ 2 2 ] (19) \mathcal{l}(\theta; \sigma_i) = \frac{1}{2} \mathbb{E}_{\tilde{\mathrm{x}}\sim q_{\sigma_i}({\tilde{\mathrm{x}}}), \mathrm{x}\sim p_{data}({\mathrm{x})}} \left[\left\| \nabla_{\mathrm{x}} \log q_{\sigma_i}({\tilde{\mathrm{x}}}) -s_{\theta}(\mathrm{x}, \sigma_{i})\right\|_2^2\right]\tag{19} l(θ;σi)=21Ex~qσi(x~),xpdata(x)[xlogqσi(x~)sθ(x,σi)22](19)

对于所有的 σ ∈ { σ i } i = 1 L \sigma \in \{\sigma_i\}_{i=1}^{L} σ{σi}i=1L我们可以得到联合优化目标

L ( θ ; { σ i } i = 1 L ) = ∑ i = 1 L λ ( σ i ) l ( θ ; σ i ) = 1 2 ∑ i = 1 L λ ( σ i ) E x ~ ∼ q σ i ( x ~ ) , x ∼ p d a t a ( x ) [ ∥ ∇ x ~ log ⁡ q σ i ( x ~ ) − s θ ( x , σ i ) ∥ 2 2 ] (20) \begin{aligned} \mathcal{L}(\theta; \{\sigma_i\}_{i=1}^{L}) &= \sum_{i=1}^{L} \lambda (\sigma_{i}) \mathcal{l}(\theta; \sigma_i) \\ & = \frac{1}{2} \sum_{i=1}^{L} \lambda (\sigma_{i}) \mathbb{E}_{\tilde{\mathrm{x}}\sim q_{\sigma_i}({\tilde{\mathrm{x}}}), \mathrm{x}\sim p_{data}({\mathrm{x})}} \left[\left\| \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma_i}({\tilde{\mathrm{x}}}) -s_{\theta}(\mathrm{x}, \sigma_{i})\right\|_2^2\right] \end{aligned} \tag{20} L(θ;{σi}i=1L)=i=1Lλ(σi)l(θ;σi)=21i=1Lλ(σi)Ex~qσi(x~),xpdata(x)[x~logqσi(x~)sθ(x,σi)22](20)

λ ( σ i ) > 0 \lambda (\sigma_{i}) > 0 λ(σi)>0是一个超参数,表示我们可以对不同的 σ i \sigma_i σi设置不同的权重。作者实验发现 ∥ s θ ( x , σ ) ∥ 2 ∝ 1 σ \|s_{\theta}(\mathrm{x}, \sigma)\|_{2} \propto \frac{1}{\sigma} sθ(x,σ)2σ1 ,为了均衡不同噪声强度下模型参数更新的梯度 ,作者设置 λ ( σ i ) = σ i 2 \lambda (\sigma_{i}) = \sigma_i^2 λ(σi)=σi2,此时

L ( θ ; { σ i } i = 1 L ) = 1 2 ∑ i = 1 L σ i 2 E x ~ ∼ q σ i ( x ~ ) , x ∼ p d a t a ( x ) [ ∥ ∇ x ~ log ⁡ q σ i ( x ~ ) − s θ ( x , σ i ) ∥ 2 2 ] (21) \begin{aligned} \mathcal{L}(\theta; \{\sigma_i\}_{i=1}^{L}) & = \frac{1}{2} \sum_{i=1}^{L} \sigma_{i}^2 \mathbb{E}_{\tilde{\mathrm{x}}\sim q_{\sigma_i}({\tilde{\mathrm{x}}}), \mathrm{x}\sim p_{data}({\mathrm{x})}} \left[\left\| \nabla_{\tilde{\mathrm{x}}} \log q_{\sigma_i}({\tilde{\mathrm{x}}}) -s_{\theta}(\mathrm{x}, \sigma_{i})\right\|_2^2\right] \end{aligned} \tag{21} L(θ;{σi}i=1L)=21i=1Lσi2Ex~qσi(x~),xpdata(x)[x~logqσi(x~)sθ(x,σi)22](21)

作者表明,我们可以用slice score matching或denoising score matching的方法来优化上述目标,兼顾训练速度和精度。

2.6.2 Annealed Langevin dynamics

参考模拟退火[11](simulated annealing)和退火重要性抽样(annealed importance sampling)[12]的算法思路。作者提出的退火朗之万采样算法流程如下:

Initialize x ~ 1 0 ∼ π ( x ) for  i ← 1 , 2 , ⋯   , L  do α i ← ϵ ( σ i σ L ) 2 for  t ← 1 , 2 , ⋯   , T  do z t ∼ N ( 0 , I ) x ~ i t ← x ~ i t − 1 + α i 2 s θ ⋆ ( x ~ i t − 1 , σ i ) ⏟ signal item + α i z t ⏟ noise item end for  x ~ i + 1 0 ← x ~ i T end for Return  x L T \begin{aligned} \hline &\text{Initialize} \quad \mathrm{\tilde{x}}_{1}^{0} \sim \pi (\mathrm{x}) \\ & \text{for } i \leftarrow 1, 2, \cdots, L \text{ do} \\ & \quad \quad \alpha_{i} \leftarrow \epsilon \left(\frac{\sigma_i}{\sigma_L}\right)^2 \\ & \quad \quad \text{for } t \leftarrow 1, 2, \cdots, T \text{ do}\\ & \quad \quad \quad \quad z^{t} \sim \mathcal{N} (\mathbf{0}, \mathbf{I}) \\ & \quad \quad \quad \quad \mathrm{\tilde{x}}_{i}^t \leftarrow \mathrm{\tilde{x}}_{i}^{t-1} + \underbrace{\frac{\alpha_i}{2} s_{\theta ^ {\star}} (\mathrm{\tilde{x}}_{i}^{t-1}, \sigma_i) }_{\text{signal item}} + \underbrace{\sqrt{\alpha_i}z^{t}}_{\text{noise item}} \\ & \quad \quad \text{end for } \\ & \quad \quad \mathrm{\tilde{x}}_{i+1}^{0} \leftarrow\mathrm{\tilde{x}}_{i}^{T} \\ & \text{end for} \\ & \text{Return }x_{L}^{T} \\ \hline \end{aligned} Initializex~10π(x)for i1,2,,L doαiϵ(σLσi)2for t1,2,,T doztN(0,I)x~itx~it1+signal item 2αisθ(x~it1,σi)+noise item αi ztend for x~i+10x~iTend forReturn xLT

从某一先验分布(高斯分布、均匀分布等)采样得到初始值 x ~ 1 0 \mathrm{\tilde{x}}^{0}_{1} x~10。进入两层循环,第一层循环给定由大到小的噪声强度序列,第二层循环为原生的朗之万采样。噪声强度大时,低密度区域的score估计准确,并且此时离目标位置较远,采用相对较大的更新步长( α i / 2 \alpha_i / 2 αi/2),通过逐级降噪和朗之万采样让初始点 x ~ 1 0 \tilde{\mathrm{x}}^{0}_{1} x~10逐步向高密度区域靠近,直至完成最后的生成。

x ~ 1 0 → 朗之万采样 x ~ 1 T = x ~ 2 0 → 朗之万采样 x ~ 2 T = x ~ 3 0 → ⋯ → x ~ L T (22) \tilde{\mathrm{x}}^{0}_{1}\stackrel{朗之万采样}\rightarrow \tilde{\mathrm{x}}^{T}_{1} = \tilde{\mathrm{x}}^{0}_{2}\stackrel{朗之万采样}\rightarrow \tilde{\mathrm{x}}^{T}_{2}=\tilde{\mathrm{x}}^{0}_{3} \rightarrow \cdots \rightarrow \tilde{\mathrm{x}}^{T}_{L} \tag{22} x~10朗之万采样x~1T=x~20朗之万采样x~2T=x~30x~LT(22)

更新步长 α i \alpha_{i} αi的选取是一个超参数。本文中,作者让 α i ∝ σ i 2 \alpha_i \propto \sigma_i^2 αiσi2,核心动机时为了让不同噪声强度,朗之万采样的信噪比(signal-to-noise ratio, SNR)强度维持一致。(有点困惑为什么要这样做,论文中并未给出详细说明,是否有相关的理论依据呢,希望有懂的大佬解惑)

S N R = signal noise = α i 2 s θ ⋆ ( x ~ i t − 1 , σ i ) α i z t (23) \mathrm{SNR} = \frac{\text{signal}}{\text{noise}} = \frac{\frac{\alpha_i}{2} s_{\theta ^ {\star}} (\mathrm{\tilde{x}}_{i}^{t-1}, \sigma_i) }{\sqrt{\alpha_i}z^{t}} \tag{23} SNR=noisesignal=αi zt2αisθ(x~it1,σi)(23)

噪声强度为 σ i \sigma_i σi时,朗之万采样信噪比强度的期望

E ∥ α i 2 s θ ⋆ ( x ~ i , σ i ) α i z ∥ 2 2 = E ∥ α i s θ ⋆ ( x ~ i , σ i ) 4 z ∥ 2 2 ≃ ∥ z ∥ 2 2 = 1 1 4 E ∥ α i s θ ⋆ ( x ~ i , σ i ) ∥ 2 2 (24) \mathbb{E}\| \frac{\frac{\alpha_i}{2} s_{\theta ^ {\star}} (\mathrm{\tilde{x}}_{i}, \sigma_i) }{\sqrt{\alpha_i}z}\|_{2}^{2} = \mathbb{E}\| \frac{\alpha_i s_{\theta ^ {\star}} (\mathrm{\tilde{x}}_{i}, \sigma_i) }{4z}\|_{2}^{2} \stackrel{\| z\|_{2}^{2} =1} \simeq \frac{1}{4}\mathbb{E}\| \alpha_i s_{\theta ^ {\star}} (\mathrm{\tilde{x}}_{i}, \sigma_i) \|_{2}^{2}\tag{24} Eαi z2αisθ(x~i,σi)22=E4zαisθ(x~i,σi)22z22=141Eαisθ(x~i,σi)22(24)

根据之前的实验结论,我们知道 ∥ s θ ( x , σ ) ∥ 2 ∝ 1 σ \|s_{\theta}(\mathrm{x}, \sigma)\|_{2} \propto \frac{1}{\sigma} sθ(x,σ)2σ1 ,因此当 α i ∝ σ i 2 \alpha_i \propto \sigma_i^2 αiσi2时,上式为常数与 σ i \sigma_i σi无关,从而满足不同噪声强度下的朗之万采样的信噪比的强度相同。

以上就是score-based generative model的全部内容了。

通过训练好score-based model结合退火朗之万采样,在生成任务上Inception score首次打败了GAN。

在这里插入图片描述

3 conditional-based generate

在第二节中,通过训练好的score-based generative model 我们可以在任何先验分布进行采样,通过退火的朗之万采样算法生成符合原始数据分布的样本,即

x 1 0 ∼ π p r i o r ( x ) → S B G M x L T ∼ p d a t a ( x ) (25) \mathrm{x}_{1}^{0} \sim \pi_{prior}(\mathrm{x}) \stackrel{\mathrm{SBGM}} \rightarrow \mathrm{x}^{T}_{L} \sim p_{data}(\mathrm{x}) \tag{25} x10πprior(x)SBGMxLTpdata(x)(25)

但我们实际中,其实更想要 p d a t a ( x ∣ y ) p_{data}(\mathrm{x|y}) pdata(x∣y)而不是 p d a t a ( x ) p_{data}(\mathrm{x}) pdata(x)。下面来看如何用condition y y y对生成过程进行控制。

conditional control有两种形式:

  • 一类是classifier-guided generate,此类方法无需重新训练score network,只需在原有数据分布上训练一个分类器(此时的condition就是类别),即可引导生成特定类别的图片。
  • 另一类是classifier-free generate,此类方法需要额外训练一个conditional score network。

3.1 classifier-guided generate

详细内容可见我之前的文档:

http://myhz0606.com/article/guided

3.2 classifier-free generate

详细内容可见我之前的文档:

http://myhz0606.com/article/classifier_free

4 小结

score based model将对概率分布的估计转为对 ∇ x log ⁡ p d a t a ( x ) \nabla_{\mathrm{x}} \log p_{data}(\mathrm{x}) xlogpdata(x) (称之为score)的估计规避对归一化参数 Z θ Z_{\theta} Zθ的计算,以此摆脱网络架构的限制

但是,由于**原始数据分布 p d a t a ( x ) p_{data}(\mathrm{x}) pdata(x)不可知,无法直接用fisher divergence(式4)**训练score based model模型,需要转为score matching 的优化形式(式6)。

对于图片而言,数据维度过大,原生score matching需要计算**Jacobian matrix**,计算开销非常大,需要结合slice score matching(SSM)或denoising score matching(DSM)的方法减少计算开销。

虽然通过以上手段我们可以相对高效的训练score-based model 。但由于流形假设和数据低密度区域的影响,导致模型估计的score 不准确。作者通过对原始数据加噪的方式缓解上述两个问题,并提出退火的朗之万采样算法完成高质量的样本生成。

参考文献

[1] Estimation of non-normalized statistical models by score matching

[2] https://yang-song.net/blog/2021/score/

[3] Generative adversarial nets

[4] How to Train Your Energy-Based Models.

[5] A tutorial on energy-based learning

[6] NICE: Non-linear independent components estimation

[7] variational auto-encoders

[8] https://www.youtube.com/watch?v=wMmqCMwuM2Q

[9] sliced score matching

[10] denoising score matching

[11] Optimization by simulated annealing.

[12] Annealed importance sampling.

附录

文档字数过多发不出去,拆分到另一篇博客
https://blog.csdn.net/weixin_40779727/article/details/139332940?spm=1001.2014.3001.5502

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值