浅析扩散模型与图像生成【理论篇】(二)——NCSN

2. NCSN

  NCSN提出一种基于分数的生成模型(Score-based Generative Model),正如前文所述,其本质上与扩散模型是等价的,也是从一个随机噪声中,利用朗之万动力学模型,根据对数概率密度函数的梯度(即分数),逐步还原得到一个图像样本。下面我们将具体介绍下该过程。
  所谓的生成式模型,都是希望根据大量的数据样本估计得到一个样本的分布模型 p d a t a ( x ) p_{data}(x) pdata(x),进而可以从 p d a t a ( x ) p_{data}(x) pdata(x)中随机采样得到任意的样本。但在实际中,估计一个准确的分布模型 p d a t a ( x ) p_{data}(x) pdata(x)是非常困难的。因此,作者转变思路,不去预测 p d a t a ( x ) p_{data}(x) pdata(x)而是去预测对数概率密度函数的梯度 ∇ x log ⁡ p ( x ) \nabla_x\log{p(x)} xlogp(x),也就是我们所谓的分数(score)。然后,利用朗之万动力学模型,可以从随机分布 π ( x ) \pi(x) π(x)中采样得到的初始样本 x ~ 0 ∽ π ( x ) \tilde{x}_0\backsim \pi(x) x~0π(x),沿着对数概率密度的梯度方向逐步移动
x ~ t = x ~ t − 1 + ϵ 2 ∇ x log ⁡ p ( x ~ t − 1 ) + ϵ z t (2-1) \tilde{x}_t=\tilde{x}_{t-1}+\frac{\epsilon}{2}\nabla_x\log{p(\tilde{x}_{t-1})}+\sqrt{\epsilon}z_t\tag{2-1} x~t=x~t1+2ϵxlogp(x~t1)+ϵ zt(2-1)其中 z t ∽ N ( 0 , I ) z_t\backsim\mathcal{N}(0,I) ztN(0,I) ϵ \epsilon ϵ表示每次移动的步长。当 ϵ → 0 , T → ∞ \epsilon\rightarrow0,T\rightarrow\infty ϵ0,T时, x ~ T \tilde{x}_T x~T就近似为目标分布 p ( x ) p(x) p(x)中的一个样本。可以看出来这个过程与DDPM中的采样过程非常类似,只是将估计噪声改成估计分数 ∇ x log ⁡ p ( x ~ t − 1 ) \nabla_x\log{p(\tilde{x}_{t-1})} xlogp(x~t1)了。那么现在需要解决的问题就是,如何准确的估计分数 ∇ x log ⁡ p ( x ~ t − 1 ) \nabla_x\log{p(\tilde{x}_{t-1})} xlogp(x~t1),这个过程叫做分数匹配(Score-matching)。
  原始的分数匹配方法其目标是训练一个模型 s θ ( x ) s_{\theta}(x) sθ(x),使其与目标分布的对数概率密度梯度之间的L2距离最小化,即
E p d a t a ( x ) [ ∥ s θ ( x ) − ∇ x log ⁡ p d a t a ( x ) ∥ 2 2 ] (2-2) \mathbb{E}_{p_{data}(x)}\left [\left \|s_{\theta}(x)-\nabla_x\log{p_{data}(x)}\right \| _2^2\right]\tag{2-2} Epdata(x)[sθ(x)xlogpdata(x)22](2-2)直接求解上式对于高维数据分布而言是十分困难的,现有的求解方法有两种:去噪分数匹配和切片分数匹配。其中切片分数匹配方法得到的结果更加接近原始数据分布的分数,但计算时间较长。而且在分数估计过程中存在一个问题,就是在概率密度较高的位置估计的准确性较高,而在概率密度较低的区域,分数估计的准确性很难保证。如下图所示,图中黑色的小箭头就表示对数密度函数的梯度,只有绿色区域内的估计结果才可靠,而在占据数据分布的绝大部分区域(红色区域)则是不可靠的,这将导致随机采样的初始样本很难移动到目标分布中。(图源:宋飏博士的博客)
在这里插入图片描述

  去噪分数匹配法通过对原始数据分布增加随机噪声,增加整个分布中的概率密度,使其能够计算得到更加准确的分数。如下图所示,经过扰乱后的数据分布,在整个分布上都能很好的估计分数。但这同时也带来一个新的问题,就是如果增加的噪声太强,将会破坏原始的目标数据分布。因此,需要制定一个更加合理的噪声添加策略,使其既能够保证分数计算的准确性,又能够不干扰最终的目标分布。
在这里插入图片描述
  作者提出了一种噪声条件分数网络(Noise Conditional Score Networks,NCSN),通过由强到弱给原始分布添加不同程度的噪声 σ \sigma σ,并训练一个网络根据输入噪声 σ \sigma σ和干扰后的数据 x ~ \tilde{x} x~,预测分数 s θ ( x ~ , σ ) s_{\theta}(\tilde{x},\sigma) sθ(x~,σ),使其逼近干扰后分布的对数概率密度梯度 ∇ x ~ log ⁡ p σ ( x ~ ∣ x ) \nabla_{\tilde{x}}\log{p_{\sigma}(\tilde{x}|x)} x~logpσ(x~x)。首先,定义一组随机噪声 { σ i } i = 1 L \{\sigma_i\}_{i=1}^L {σi}i=1L σ i > 0 \sigma_i>0 σi>0且随 i i i增长成几何倍数下降,直至 σ L → 0 \sigma_L\rightarrow0 σL0。使用这组随机噪声扰乱原始数据分布,得到 q σ ( x ) : = ∫ p d a t a ( t ) N ( x ∣ t , σ 2 I ) d t q_{\sigma}(x):=\int p_{data}(t)\mathcal{N}(x|t,\sigma^2I)dt qσ(x):=pdata(t)N(xt,σ2I)dt。然后,设计一个噪声条件分数网络 s θ ( x , σ ) s_{\theta}(x,\sigma) sθ(x,σ),其采用带有注意力机制的UNet结构,并将噪声 σ \sigma σ通过条件实例规范化(conditional instance normalization)引入到网络中。给定一个噪声 σ \sigma σ,可以得到一个干扰后的分布 q σ ( x ~ ∣ x ) = N ( x ~ ∣ x , σ 2 I ) q_{\sigma}(\tilde{x}|x)=\mathcal{N}(\tilde{x}|x,\sigma^2I) qσ(x~x)=N(x~x,σ2I),其对数梯度为 ∇ x ~ log ⁡ p σ ( x ~ ∣ x ) = − x ~ − x σ 2 \nabla_{\tilde{x}}\log{p_{\sigma}(\tilde{x}|x)}=-\frac{\tilde{x}-x}{\sigma^2} x~logpσ(x~x)=σ2x~x,将其代入目标函数(2-2)中可得
l ( θ ; σ ) : = 1 2 E p d a t a ( x ) E x ~ ∽ N ( x ~ ∣ x , σ 2 I ) [ ∥ s θ ( x ~ , σ ) + x ~ − x σ 2 ∥ 2 2 ] (2-3) \mathscr{l}(\theta;\sigma):=\frac{1}{2}\mathbb{E}_{p_{data}(x)}\mathbb{E}_{\tilde{x}\backsim\mathcal{N}(\tilde{x}|x,\sigma^2I)}\left [\left \|s_{\theta}(\tilde{x},\sigma)+\frac{\tilde{x}-x}{\sigma^2 }\right \|^2_2\right]\tag{2-3} l(θ;σ):=21Epdata(x)Ex~N(x~x,σ2I)[ sθ(x~,σ)+σ2x~x 22](2-3)对于所有的噪声 σ ∈ { σ i } i = 1 L \sigma\in\{\sigma_i\}_{i=1}^L σ{σi}i=1L可以得到一个统一的目标函数
L ( θ ; { σ i } i = 1 L ) : = 1 L ∑ i = 1 L λ ( σ i ) l ( θ ; σ i ) (2-4) \mathcal{L}(\theta;\{\sigma_i\}_{i=1}^L):=\frac{1}{L}\sum^{L}_{i=1}\lambda(\sigma_i)\mathscr{l}(\theta;\sigma_i)\tag{2-4} L(θ;{σi}i=1L):=L1i=1Lλ(σi)l(θ;σi)(2-4)其中 λ ( σ i ) = σ i 2 \lambda(\sigma_i)=\sigma_i^2 λ(σi)=σi2。完成NCSN模型的训练后,作者提出一种退火朗之万动力学模型来生成样本,与原始的朗之万动力学模型相比,作者将固定的步长 ϵ \epsilon ϵ改为了随着移动步数逐渐减小的可变步长 α i \alpha_i αi,且用NCSN模型估计的分数取代了对数概率密度梯度,如下式所示
x ~ t = x ~ t − 1 + α i 2 s θ ( x ~ t − 1 , σ i ) + α i z t (2-5) \tilde{x}_t=\tilde{x}_{t-1}+\frac{\alpha_i}{2}s_{\theta}(\tilde{x}_{t-1},\sigma_i)+\sqrt{\alpha_i}z_t\tag{2-5} x~t=x~t1+2αisθ(x~t1,σi)+αi zt(2-5)其中 α i = ϵ ⋅ σ i 2 / σ L 2 \alpha_i=\epsilon\cdot{\sigma_i^2}/{\sigma_L^2} αi=ϵσi2/σL2,由于 σ L ≈ 0 \sigma_L\approx 0 σL0,所以在开始阶段步长 α i \alpha_i αi较大,而且此时的噪声 σ i \sigma_i σi也比较大,因此可以较为准确的估计分数,快速地从随机分布区域移动到目标分布区域内。随着步数的增加,噪声也越来越小,以减少对目标分布的干扰,且每次移动的步长也越来越小,最终得到一个目标分布内的样本 x ~ T \tilde{x}_T x~T。具体的算法流程如下图所示
在这里插入图片描述
  可以看到算法中有两个循环嵌套,这是表示一共有 L L L个噪声级别,对应 L L L个步长,在每个步长条件下会移动 T T T步。回顾整个过程我们可以感受到,他与DDPM有非常多的相似之处(NCSN是更早发表的,只不过没有使用扩散模型来描述)。使用不同级别的噪声对原始分布进行干扰对应了DDPM中的扩散过程,训练一个NCSN模型来估计分数对应了DDPM中的噪声估计网络,使用退火朗之万动力学模型来生成目标分布内的样本对应了DDPM的采样过程。在下一篇文章中,我们将证明二者是等价的,而且可以用统一的形式来表示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深视

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值