BLURRING DIFFUSION MODELS (Paper reading)

BLURRING DIFFUSION MODELS

Emiel Hoogeboom, Google Research, Brain Team, ICLR2023, Cited:11, Code: 无, Paper.

1. 前言

最近,提出了一种基于散热或模糊的生成建模的新型扩散过程,作为各向同性高斯扩散的替代方案。在这里,我们表明模糊可以等价地通过具有非各向同性噪声的高斯扩散过程来定义。在建立这种联系的过程中,我们弥合了逆散热和去噪扩散之间的差距,并阐明了这种建模选择导致的归纳偏差。最后,我们提出了一类广义扩散模型,它提供了标准高斯去噪扩散和逆散热的最佳效果,我们称之为模糊扩散模型。

2. 背景

2.1 扩散模型

在这里插入图片描述

扩散模型的扩散过程可以定义为: q ( z t ∣ x ) = N ( z t ∣ α t x , σ t 2 I ) q(z_{t}|x)=N(z_{t}|\alpha_{t}x,\sigma_{t}^{2}\mathbf{I}) q(ztx)=N(ztαtx,σt2I),这里 x x x表示的是数据data, z t z_{t} zt是噪声隐变量(中间变量)。其中 α t \alpha_{t} αt单调递减, σ t \sigma_{t} σt单调递增,数据的信息会被逐渐的被噪声摧毁。假设上述定义是马尔可夫的,那么转移分布可以写为 q ( z t ∣ z s ) = N ( z t ∣ α t ∣ s z s , σ t ∣ s 2 I ) q(z_{t}|z_{s})=N(z_{t}|\alpha_{t|s}z_{s},\sigma_{t|s}^{2}I) q(ztzs)=N(ztαtszs,σts2I),其中 α t ∣ s = α t / α s \alpha_{t|s}=\alpha_{t}/\alpha_{s} αts=αt/αs σ t ∣ s 2 = σ t 2 − α t ∣ s 2 σ s 2 \sigma_{t|s}^{2}=\sigma_{t}^{2}-\alpha_{t|s}^{2}\sigma_{s}^{2} σts2=σt2αts2σs2

扩散模型的逆过程(去噪过程)在给定数据 x x x的情况下可以写为去噪分布
q ( z s ∣ z t , x ) = N ( z s ∣ μ t → s , σ t → s 2 I ) σ t → s 2 = ( 1 σ s 2 + α t ∣ s 2 σ t ∣ s 2 ) − 1  and  μ t → s = σ t → s 2 ( α t ∣ s σ t ∣ s 2 z t + α s σ s 2 x ) \begin{gather*} q(z_{s}|z_{t},x)=N(z_{s}|\boldsymbol \mu_{t\to s}, \sigma_{t\to s}^{2}\mathbf{I})\\ \\ \sigma_{t \rightarrow s}^{2}=\left(\frac{1}{\sigma_{s}^{2}}+\frac{\alpha_{t \mid s}^{2}}{\sigma_{t \mid s}^{2}}\right)^{-1} \text { and } \boldsymbol{\mu}_{t \rightarrow s}=\sigma_{t \rightarrow s}^{2}\left(\frac{\alpha_{t \mid s}}{\sigma_{t \mid s}^{2}} \boldsymbol{z}_{t}+\frac{\alpha_{s}}{\sigma_{s}^{2}} \boldsymbol{x}\right) \end{gather*} q(zszt,x)=N(zsμts,σts2I)σts2=(σs21+σts2αts2)1 and μts=σts2(σts2αtszt+σs2αsx)
显然数据 x x x未知,通常利用一个神经网络来估计 x ^ ( z t ) ≈ x \hat x(z_{t}) \approx x x^(zt)x。此外,像DDPM中直接预测噪声 ϵ ^ t = f θ ( z t , t ) \hat \epsilon_{t}=f_{\theta}(z_{t},t) ϵ^t=fθ(zt,t)来估计 x x x,或直接预测均值( x t − 1 x_{t-1} xt1)都是可以的。

最优化:模型对数似然的连续时间变分下界由以下对平方重构误差的期望给出,经验可得权重项为1效果不错。:
L = E t ∼ U ( 0 , 1 ) E ϵ t ∼ N ( 0 , I ) [ w ( t ) ∥ f θ ( z t , t ) − ϵ t ∥ 2 ] , \mathcal{L}=\mathbb{E}_{t \sim \mathcal{U}(0,1)} \mathbb{E}_{\boldsymbol{\epsilon}_{t} \sim \mathcal{N}(0, \mathbf{I})}\left[w(t)\left\|f_{\theta}\left(\boldsymbol{z}_{t}, t\right)-\boldsymbol{\epsilon}_{t}\right\|^{2}\right], L=EtU(0,1)EϵtN(0,I)[w(t)fθ(zt,t)ϵt2],

2.2 Inverse Heat Dissipation(反向散热)

在这里插入图片描述

通俗的讲,散热算法,如上图,可以理解为沸水的冷却,分子剧烈运动趋于平淡,或是人慢慢冷静的过程。上图可以看到的是图片中的高频成分都被平滑了,也就是模糊的过程。

逆散热模型(IHDM)使用散热来破坏信息,而不是增加越来越多的高斯噪声。他们观察到用于散热的拉普拉斯偏微分方程
∂ ∂ t z ( i , j , t ) = △ z ( i , j , t ) \frac{\partial}{\partial t}z(i,j,t)=\bigtriangleup z(i,j,t) tz(i,j,t)=z(i,j,t)
可以用余弦变换频域的对角矩阵求解。让 z t z_{t} zt表示在时间步 t t t的Laplace方程的解:
z t = A t z 0 = V D t V T z 0 z_{t} = \mathbf{A}_{t}z_{0}=\mathbf{V}\mathbf{D}_{t}\mathbf{V}^{T}z_{0} zt=Atz0=VDtVTz0
其中 V T \mathbf{V}^{T} VT表示离散余弦变换(DCT), V \mathbf{V} V表示逆DCT。 z 0 , z t z_{0},z_{t} z0,zt应该考虑在空间维度上向量化,以允许矩阵乘法。对角线矩阵 D t \mathbf{D}_{t} Dt是频率 Λ \mathbf{\Lambda} Λ和时间 t t t的加权矩阵的指数,因此 D t = e x p ( − Λ t ) \mathbf{D}_{t}=exp(-\mathbf{\Lambda} t) Dt=exp(Λt)。这里是个结论,直接用就可以。因此可以定义扩散过程的边缘分布:
q ( z t ∣ x ) = N ( z t ∣ A t x , σ 2 I ) q(z_{t}|x)=N(z_{t}|\mathbf{A}_{t}x,\sigma^{2}\mathbf{I}) q(ztx)=N(ztAtx,σ2I)
中间扩散状态 z t z_{t} zt是通过对data逐步添加模糊和固定的噪声而构建的。对于生成过程,用一个可学习的生成模型近似地反转的散热过程:
p ( z t − 1 ∣ z t ) = N ( z t − 1 ∣ f θ ( z t ) , σ 2 I ) p(z_{t−1}|z_{t}) = N (z_{t−1}|f_{θ}(z_{t}), \sigma^{2}\mathbf{I}) p(zt1zt)=N(zt1fθ(zt),σ2I)
z t − 1 z_{t−1} zt1的均值是通过神经网络 f θ f_{\theta} fθ直接学习的,并且具有固定的标量方差。类似于DDPMs,IHDM模型是通过采样随机时间步长 t t t的前向过程 z t ∼ q ( z t ∣ x ) z_{t}∼q(z_{t}|x) ztq(ztx),然后最小化模型之间的平方重建误差 f θ ( z t ) f_{θ}(zt) fθ(zt)和真实目标 E ( z t − 1 ∣ x ) = A t − 1 x \mathbb{E}(z_{t−1}|x)= \mathbf{A}_{t-1}x E(zt1x)=At1x,产生以下训练损失:
L = E t ∼ μ ( 1 , . . . , T ) E z t ∼ q ( z t ∣ x ) [ ∣ ∣ A t − 1 x − f θ ( z t , t ) ∣ ∣ 2 ] \mathcal{L}=\mathbb{E}_{t \sim \mu(1,...,T)}\mathbb{E}_{z_{t} \sim q(z_{t}|x)}[||\mathbf{A}_{t-1}x-f_{θ}(z_{t},t)||^{2}] L=Etμ(1,...,T)Eztq(ztx)[∣∣At1xfθ(zt,t)2]
有些问题仍然存在: (1)散热过程是否是马尔可夫的,如果是,什么是 q ( z t ∣ z s ) q(z_{t}|z_{s}) q(ztzs)?(2)真正的逆加热过程是否也是各向同性的,如生成过程?(3)最后,除了预测中前一个时间步长的均值之外,是否还有其他的方法呢?在下面的章节中,我们会发现: (1)是的,这个过程可以是马尔可夫的。(2)不,生成过程不是各向同性的,虽然它在频域上是对角性的。(3)是的,像散热这样的过程可以被参数化,类似于标准扩散模型中的环境参数化。

2.3 散热形式为高斯扩散

在这里插入图片描述

我们将散热过程重新解释为一种高斯扩散的形式,类似于DDPM所使用的形式;Score-based Models等。本文将两个向量之间的乘法和除法定义为元素化的。我们从边际分布定义开始:
q ( z t ∣ x ) = N ( z t ∣ A t x , σ 2 I ) q(z_{t}|x)=N(z_{t}|\mathbf{A}_{t}x,\sigma^{2}\mathbf{I}) q(ztx)=N(ztAtx,σ2I)
在本节中,我们让 V T \mathbf{V}^{T} VT表示正交的DCT,这是DCT的一个特定的归一化设置。把变量 u = V T z t u=\mathbf{V}^{T}z_{t} u=VTzt写成这种形式,我们可以写出频率空间的扩散过程:
q ( u t ∣ u x ) = N ( u t ∣ d t ⋅ u x , σ 2 I ) q(\boldsymbol u_{t}|\boldsymbol u_{x})=N(\boldsymbol u_{t}|\boldsymbol d_{t} \cdot \boldsymbol u_{x}, \sigma^{2}\mathbf{I}) q(utux)=N(utdtux,σ2I)
其中 u x = V T x u_{x}=\mathbf{V}^{T}x ux=VTx x x x的频率相应, d t = e x p ( − λ τ t ) d_{t}=exp(-\boldsymbol \lambda \tau_{t} ) dt=exp(λτt)是对角线。这里 τ t \tau_{t} τt表示关于时间步的噪声策略:线性或余弦等。上式表明,在每个维度 i i i上,频率 u t u_{t} ut的边缘分布在其标量元素 u t ( i ) u_{t}^{(i)} ut(i)上被完全分解。同样,逆向散热模型 p θ ( u s ∣ u t ) p_{\theta}(\boldsymbol u_{s}|\boldsymbol u_{t}) pθ(usut)也被完全分解。我们可以等价地用每个维 i i i的标量形式来描述散热过程(及其逆过程):
q ( u t ( i ) ∣ u 0 ( i ) ) = N ( u t ( i ) ∣ d t ( i ) u 0 ( i ) , σ 2 ) ⇔ u t ( i ) = d t ( i ) u 0 ( i ) + σ ϵ t , with  ϵ t ∼ N ( 0 , 1 ) q\left(u_{t}^{(i)} \mid u_{0}^{(i)}\right)=\mathcal{N}\left(u_{t}^{(i)} \mid d_{t}^{(i)} u_{0}^{(i)}, \sigma^{2}\right) \quad \Leftrightarrow \quad u_{t}^{(i)}=d_{t}^{(i)} u_{0}^{(i)}+\sigma \epsilon_{t} \text {, with } \epsilon_{t} \sim \mathcal{N}(0,1) q(ut(i)u0(i))=N(ut(i)dt(i)u0(i),σ2)ut(i)=dt(i)u0(i)+σϵt, with ϵtN(0,1)
这个方程可以看作是2.1节中介绍的标准高斯扩散过程的一个特殊情况。让 s t s_{t} st表示为频域空间中的标准高斯扩散过程,那么 s t = α t u 0 ( i ) + σ t ϵ t s_{t}=\alpha_{t} u_{0}^{(i)}+\sigma_{t} \epsilon_{t} st=αtu0(i)+σtϵt。从概率论的角度来看,这里只有 α t / σ t \alpha _{t}/\sigma_{t} αt/σt的比率很重要,而不是个体 α t \alpha_{t} αt σ t \sigma_{t} σt的特殊选择。这是正确的,因为所有的值都可以简单地重新缩放,而无需以一种有意义的方式改变分布。这意味着,与其进行模糊处理和添加固定噪声,散热过程可以等效地定义为一个相对标准的高斯扩散过程,尽管是在频率空间。

马尔可夫转移分布:上述分析说明了与高斯扩散的等下性,因此散热模型同样也存在马尔可夫过程:
q ( u t ∣ u s ) = N ( u t ∣ α t ∣ s u s , σ t ∣ s 2 I ) q(\boldsymbol u_{t}|\boldsymbol u_{s})=N(\boldsymbol u_{t}|\boldsymbol \alpha_{t|s}\boldsymbol u_{s}, \boldsymbol \sigma_{t|s}^{2}\mathbf{I}) q(utus)=N(utαtsus,σts2I)
这与2.1中定义的是一样的,只是其中 α t ∣ s = d t / d s \boldsymbol \alpha_{t|s}=\boldsymbol d_{t}/\boldsymbol d_{s} αts=dt/ds σ t ∣ s 2 = ( 1 − ( d t / d s ) 2 ) σ 2 \boldsymbol \sigma_{t|s}^{2}=(1-(\boldsymbol d_{t}/\boldsymbol d_{s})^{2})\sigma^{2} σts2=(1(dt/ds)2)σ2

去噪过程(逆过程)
q ( u s ∣ u t , x ) = N ( u s ∣ μ t → s , σ t → s 2 ) q(\boldsymbol u_{s}|\boldsymbol u_{t},x)=N(\boldsymbol u_{s}|\boldsymbol \mu_{t\to s},\boldsymbol \sigma_{t\to s}^{2})\\ q(usut,x)=N(usμts,σts2)
其中:
σ t → s 2 = ( 1 σ s 2 + α t ∣ s 2 σ t ∣ s 2 ) − 1  and  μ t → s = σ t → s 2 ( α t ∣ s σ t ∣ s 2 u t + α s σ s 2 u x ) (19) \boldsymbol \sigma_{t \rightarrow s}^{2}=\left(\frac{1}{\boldsymbol \sigma_{s}^{2}}+\frac{\boldsymbol \alpha_{t \mid s}^{2}}{\boldsymbol \sigma_{t \mid s}^{2}}\right)^{-1} \text { and } \boldsymbol{\boldsymbol \mu}_{t \rightarrow s}=\boldsymbol \sigma_{t \rightarrow s}^{2}\left(\frac{\boldsymbol \alpha_{t \mid s}}{\boldsymbol \sigma_{t \mid s}^{2}} \boldsymbol{u}_{t}+\frac{\boldsymbol \alpha_{s}}{\boldsymbol \sigma_{s}^{2}} \boldsymbol{u}_{x}\right) \tag{19} σts2=(σs21+σts2αts2)1 and μts=σts2(σts2αtsut+σs2αsux)(19)

3. Blurring Diffusion Models (模糊扩散模型)

在这里插入图片描述

利用第2.3节的分析,我们可以将该模型在频率空间中定义为一个高斯扩散模型,具有不同的维度schedules。如何参数化模型以及参数化 α t \alpha_{t} αt σ t \sigma_{t} σt的具体schedules是很重要的。与传统模型不同,扩散过程是在频率空间中定义的:
q ( u t ∣ u x ) = N ( u t ∣ α t u , σ t 2 I ) q(\boldsymbol u_{t}|\boldsymbol u_{x})=N(\boldsymbol u_{t}|\boldsymbol \alpha_{t}\boldsymbol u, \boldsymbol \sigma_{t}^{2}\mathbf{I}) q(utux)=N(utαtu,σt2I)
不同的频率可能以不同的速率扩散,这是由向量 α t \boldsymbol \alpha_{t} αt σ t \boldsymbol \sigma_{t} σt中的值控制的。直接估计 μ t → s \boldsymbol \mu_{t\to s} μts对于神经网络来说是困难的。类似与DDPM中,学习 x x x的近似并带入去噪分布,通过参数化间接进行:
u t = α t u x + σ t u ϵ , t where u x = V T x   a n d   u ϵ , t = V T ϵ t (c) \boldsymbol u_{t}=\boldsymbol \alpha_{t}\boldsymbol u_{x}+\boldsymbol \sigma_{t}\boldsymbol u_{\epsilon,t} \quad \text{where} \quad \boldsymbol u_{x}=\mathbf{V}^{T}x \ and \ \boldsymbol u_{\epsilon,t}=\mathbf{V}^{T}\boldsymbol \epsilon_{t} \tag{c} ut=αtux+σtuϵ,twhereux=VTx and uϵ,t=VTϵt(c)
估计的 u ^ x = 1 α t ( u t − σ t u ^ ϵ , t ) \hat{\boldsymbol u}_{x} = \frac{1}{\boldsymbol \alpha_{t}}(\boldsymbol u_{t}-\boldsymbol \sigma_{t}\hat{\boldsymbol u}_{\epsilon,t}) u^x=αt1(utσtu^ϵ,t)。尽管在频率空间中表达扩散和去噪过程很方便,但神经网络往往在标准像素空间上运行良好。正是由于这个原因,神经网络 f θ f_{\theta} fθ z t = V u t z_{t}=\mathbf{V}u_{t} zt=Vut作为输入,并预测 ϵ ^ t \hat \epsilon_{t} ϵ^t。通过DCT矩阵就可以获得 u ^ ϵ , t = V T ϵ ^ t \hat u_{\epsilon,t}=\mathbf{V}^{T}\hat \epsilon_{t} u^ϵ,t=VTϵ^t。将估计的 u ^ x \hat u_{x} u^x带入到去噪分布的均值中可以得到:
μ ^ t → s = σ t → s 2 ( α t ∣ s σ t ∣ s 2 u t + 1 α t ∣ s σ s 2 ( u t − σ t u ^ ϵ , t ) ) (24) \boldsymbol{\hat\mu}_{t \rightarrow s}=\boldsymbol \sigma_{t \rightarrow s}^{2}\left(\frac{\boldsymbol \alpha_{t \mid s}}{\boldsymbol \sigma_{t \mid s}^{2}} \boldsymbol{u}_{t}+\frac{1}{\boldsymbol \alpha_{t|s}\boldsymbol \sigma_{s}^{2}}(\boldsymbol u_{t}-\boldsymbol \sigma_{t}\hat{ \boldsymbol u}_{\epsilon,t})\right) \tag{24} μ^ts=σts2(σts2αtsut+αtsσs21(utσtu^ϵ,t))(24)
在像素空间无权重的目标函数可写为:
L = E t ∼ u ( 0 , 1 ) E ϵ t ∼ N ( 0 ∣ I ) [ ∣ ∣ ϵ t − f θ ( z t , t ) ∣ ∣ 2 ] , where  z t = V ( α t V T x t + σ t V T ϵ t ) (d) \mathcal{L}=\mathbb{E}_{t \sim u(0,1)}\mathbb{E}_{\epsilon_{t} \sim N(0|I)}[||\epsilon_{t}-f_{θ}(z_{t},t)||^{2}], \quad \text{where}\ z_{t}=\mathbf{V}(\boldsymbol \alpha_{t}\mathbf{V}^{T}\boldsymbol x_{t}+\boldsymbol \sigma_{t}\mathbf{V}^{T}\boldsymbol \epsilon_{t}) \tag{d} L=Etu(0,1)EϵtN(0∣I)[∣∣ϵtfθ(zt,t)2],where zt=V(αtVTxt+σtVTϵt)(d)
在这里插入图片描述

3.1 噪声和模糊Schedules

为了精确地指定模糊过程,需要为 t ∈ [ 0 , 1 ] t\in[0,1] t[0,1]定义 α t \boldsymbol \alpha_{t} αt σ t \boldsymbol \sigma_{t} σt的schedules。对于 σ t \boldsymbol \sigma_{t} σt,我们为所有频率选择相同的值,因此给标量值 σ t \boldsymbol \sigma_{t} σt一个schedule就足够了。这些shcedules是通过结合一个典型的高斯噪声扩散schedule(由标量在 α t \alpha_{t} αt σ t \sigma_{t} σt处指定)和一个模糊schedule(由向量 d t \boldsymbol d_{t} dt指定)来构造的。

噪声schedule:选择Variance Preserving Cosine Schedule,既 σ t 2 = 1 − α t 2 , where  α t = c o s ( t π / 2 )  for  t ∈ [ 0 , 1 ] \sigma_{t}^{2}=1-\alpha_{t}^{2},\text{where}\ \alpha_{t}=cos(t\pi/2) \ \text{for} \ t\in[0,1] σt2=1αt2,where αt=cos(tπ/2) for t[0,1]。为了避免在 t → 0 t→0 t0 t → 1 t→1 t1时的不稳定,对数信噪比 ( l o g α t 2 / σ t 2 ) (log \alpha_{t}^{2}/\sigma_{t}^{2}) (logαt2/σt2) t = 0 t = 0 t=0时的最大值为 + 10 +10 +10,在 t = 1 t = 1 t=1时至少为 − 10 −10 10

模糊schedule: 没有理由使模型的概念时间步长 t t t与耗散时间完美匹配。因此, D t = e x p ( − Λ τ t ) \mathbf{D}_{t}=exp(−\Lambda \tau_{t}) Dt=exp(Λτt)被重新定义,其中 τ t \tau_{t} τt t t t单调增加。变量 τ t \tau_{t} τt在噪声扩散方面与 α t \alpha_{t} αt σ t \sigma_{t} σt具有非常相似的函数:它允许相对于模型的概念时间步长 t t t的任意耗散调度。

尺度为 σ B \sigma_{B} σB的高斯模糊对应于随时间 τ = σ B 2 / 2 \tau = \sigma_{B}^{2}/2 τ=σB2/2的耗散。根据经验,下面的策略work well:
σ B , t = σ B , m a x s i n ( t π / 2 ) 2 \sigma_{B,t} = \sigma_{B,max}sin(t\pi / 2)^{2} σB,t=σB,maxsin(tπ/2)2
其中, σ B , m a x \sigma_{B,max} σB,max是可调的超参数,对应于图像最大模糊的程度。因此这个模糊schedule可以定义为 τ t = σ B , t 2 / 2 \tau_{t}= \sigma_{B,t}^{2}/2 τt=σB,t2/2。如果仅仅使用 d t = e x p ( − λ τ t ) d_{t}=exp(−\lambda \tau_{t}) dt=exp(λτt)用于 α t \alpha_{t} αt,并同样用于步骤 s s s,那么 d t / d s d_{t}/d_{s} dt/ds可能包含非常小的高频值。因此,一个不希望出现的副作用是,小的误差可能会被去噪过程中的许多步骤放大。因此,我们稍微修改了这个过程,让:
d t = ( 1 − d m i n ) ⋅ e x p ( − λ τ t ) + d m i n (b) \boldsymbol {d}_{t}=(1-d_{min}) \cdot exp(-\boldsymbol \lambda \tau_{t})+d_{min} \tag{b} dt=(1dmin)exp(λτt)+dmin(b)
这里令 d m i n = 0.001 d_{min}=0.001 dmin=0.001。这种模糊变换将频率抑制到一个小的值dmin,同时去噪过程放大高频的侵略性较低。至此,结合高斯噪声schedule和模糊schedule,可以得到:
α t = α t ⋅ d t and  σ t = 1 σ t (a) \boldsymbol \alpha_{t}= \alpha_{t} \cdot \boldsymbol d_{t} \quad \text{and} \ \boldsymbol \sigma_{t}=\boldsymbol 1\sigma_{t} \tag{a} αt=αtdtand σt=1σt(a)
其中 1 \boldsymbol 1 1是值都为1的向量。

3.4 伪代码

# 计算alpha_t和sigma_t,见公式(a)
def get_alpha_sigma(t):
	dt = get_dt(t)
	a, sigma_t= get_noise_scaling_cosine(t)
	alpha_t = a * dt.
return alpha_t, sigma_t
# 计算d_t,见公式(b)
def get_dt(t, min_d=0.001):
	sigma_blur = sigma_blur_max * sin(t * pi / 2)^2
	dissipation_t = sigma_blur^2 / 2
	freq = pi * linsapce(0, img_dim-1, img_dim) / img_dim
	labda = freqs[None, :, None, None]^2 + freqs[None, None, :, None]^2
	dt = (1-min_d) * exp(-labda * dissipation_t) + min_d
	return dt
# t~[0,1], 见3.1噪声Schedule部分
def get_noise_schaling_cosine(t, logsnr_min=-10, logsnr_max=10):
	limit_max = arctan(exp(-0.5 * logsnr_max))
	limit_min = arctan(exp(-0.5 * logsnr_min)) - limit_max
	logsnr = -2 * log(tan(limit_min * t + limit_max))
	# Transform logsnr to a, sigma .
	return sqrt(sigmoid(logsnr)), sqrt(sigmoid(-logsnr))
# 前向过程, 见公式(c)
def diffuse(x, t):
	x_freq=DCT(x)
	alpha, sigma = get_alpha_sigma(t)
	eps = random_normal_like(x)
	z_t = IDCT(alpha * x_freq) + sigma * eps
return z_t , eps
# 损失函数,见公式(d)
def loss(x):
	t = random_uniform(0, 1)
	z_t, eps = diffuse(x, t)
	error = (eps - neural_net(z_t, t))^2
	return mean(error)
# 采样过程,t=T,T-1,...,1/T, 见公式(24)(19)
def denoise(z_t, t, delta =1e-8):
	alpha_s, sigma_s = get_alpha_sigma(t-1 / T)
	alpha_t, sigma_t = get_alpha_sigma (t)
	# Compute helpful coefficients .
	alpha_ts = alpha_t / alpha_s
	alpha_st = 1 / alpha_ts
	sigma2_ts = ( sigma ^2 - alpha_ts ^2 * sigma_s ^2)
	# Denoising variance .
	sigma2_denoise = 1 / clip (
	1 / clip ( sigma_s ^2 , min= delta ) +
	1 / clip ( sigma_t ^2 / alpha_ts ^2 - sigma_s ^2 , min= delta ) ,
	min = delta )
	# The coefficients for u_t and u_eps .
	coeff_term1 = alpha_ts * sigma2_denoise / ( sigma2_ts + delta ) # eq.24
	coeff_term2 = alpha_st * sigma2_denoise / clip(sigma_s ^2, min= delta)
	# Get neural net prediction .
	hat_eps = neural_net(z_t, t)
	# Compute terms .
	u_t = DCT(z_t)
	term1 = IDCT(coeff_term1 * u_t)
	term2 = IDCT(coeff_term2 * (u_t - sigma_t * DCT(hat_eps)))
	mu_denoise = term1 + term2
	# Sample from the denoising distribution .
	eps = random_normal_like(mu_denoise)
return mu_denoise + IDCT (sqrt(sigma2_denoise) * eps)

4. 实验

在这里插入图片描述
CIFAR10 and LSUN Churches: 为了测量生成样本的视觉质量,在经过200万步训练后,从模型中采样的50000个样本计算FID评分。从这些分数中可以看出(表1),模糊的扩散模型能够生成比ihdm的质量更高的图像,以及文献中其他类似的方法。我们的模糊扩散模型也优于标准的去噪扩散模型,尽管在这种情况下,性能上的差异不那么明显。

4.1 在不同的噪音水平和Schedules之间的比较

在这里插入图片描述
在本节中,我们分析了在最大模糊 σ B , m a x \sigma_{B,max} σB,max和两种不同的噪声schedule( s i n 2 sin^{2} sin2 s i n sin sin)方面有不同的设置。其中 σ B , m a x = 0 \sigma_{B,max}=0 σB,max=0等价于一个标准的去噪扩散模型。对于CIFAR10,性能最好的模型使用的模糊值为 σ B , m a x = 20 \sigma_{B,max}=20 σB,max=20,其FID为3.17,优于没有应用模糊时的FID3.60,如表3所示。对于LSUN,表现最好的模型使用了更少的模糊 σ B , m a x = 10 \sigma_{B,max}=10 σB,max=10,性能再次相对接近于 σ B , m a x = 20 \sigma_{B,max}=20 σB,max=20的模型。当将 s i n 2 sin^{2} sin2 s i n sin sin Schedule进行比较时,对于更高的最大模糊, s i n 2 sin^{2} sin2表现得更好。我们的假设是, s i n sin sin 模糊过于激进,而 s i n 2 sin^{2} sin2的图在 t = 0 t = 0 t=0附近的扩散过程开始时逐渐增加模糊。

在这里插入图片描述
有趣的是,具有较高最大模糊的模型收敛较慢,但当训练时间足够长时,比具有较少模糊的模型表现更好。比较最大模糊1和20的设定时,只有当20的设定训练超过一定步数才会比1的设定要好。似乎更高的模糊需要更多的时间来训练,但可以学会更好地匹配数据。

结论

模糊扩散模型的一个局限性是,模糊的使用具有正则化效果:当使用模糊时,将生成模型训练到收敛需要更长的时间。例如,正则化效应通常是有益的,并可以导致样本质量的提高。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值