目录
- 核心总结
- 符号定义
- 第一套,快速简单讲清采样方法
- 继续分析,待定系数法求解
- 图示理解
- 关于参数sigma
本文是观看以下视频的笔记,强烈推荐观看最后的图示理解:
https://www.bilibili.com/video/BV13P411J7dm/?spm_id_from=333.788
论文:Denoising Diffusion Implicit Models
链接:https://arxiv.org/abs/2010.02502
核心总结
-
DDIM只是一个采样的算法,其训练和DDPM是一样的。
-
DDIM在推导采样公式时,没有用DDPM中q(xt|xt-1)的条件;
-
同时把一个高斯噪声可以换成随机高斯噪声和预测的噪声的加权和,其中 σ k \sigma_k σk是一个超参数,控制二者的权重
-
采样公式如下:从任意步数k推出步数s:
x s = α ˉ s x ^ 0 ∣ k + 1 − α ‾ s − σ k 2 ϵ θ + σ k ϵ \mathbf{x}_{s}=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+ \sqrt{1-\overline{\alpha}_{s}-\sigma_{k}^{2}} \boldsymbol{\epsilon} _{\theta}+{\sigma_{k} \boldsymbol{\epsilon} } xs=αˉsx^0∣k+1−αs−σk2ϵθ+σkϵ
其中:
x ^ 0 ∣ k = 1 α ˉ k ( x k − 1 − α ˉ k z ~ ) \hat {\mathbf{x}}_{0\mid k}=\frac{1}{\sqrt{\bar\alpha_{k}}}(\mathbf{x}_{k}-\sqrt{1-\bar\alpha_{k}}\tilde{\mathbf{z}}) x^0∣k=αˉk1(xk−1−αˉkz~)
符号定义
- xT: 符合高斯分布的噪声
- x0: 一个符合GT的图像,无噪声的,clean image
- T: 时间步
- xt: 第t步的图像,要从他推出t-1的图像。(一直推下去的话可以推出x0)
- β t \beta_t βt:noise rate,关于t的固定序列,含义是每一步t要加的噪声的比例。
- α t \alpha_t αt:signal rate,关于t的固定序列, α t \alpha_t αt= 1- β t \beta_t βt,含义是每一步t保留的上一步图像比例。通常会被设置为 lim t → T α t = 0 \lim _{t \rightarrow T} \alpha_t=0 limt→Tαt=0。具体定义是: x t = α t x t − 1 + 1 − α t ϵ t \mathbf{x}_t=\sqrt{\alpha_t} \mathbf{x}_{t-1}+\sqrt{1-\alpha_t} \boldsymbol{\epsilon}_{t} xt=αtxt−1+1−αtϵt
- q:正向扩散:加噪声
- p:逆向扩散:去噪声
- ϵ t \boldsymbol{\epsilon}_t ϵt 或 z t \mathbf{z}_t zt: xt相比xt-1加的噪声,服从标准正态分布。本文中z和epsilon混用
- ϵ \boldsymbol{\epsilon} ϵ:不是t这一步的噪声,而是前面的噪声叠加后的结果,还是以服从标准正态分布
- z波浪:网络预测的噪声,希望他尽可能接近真实的z
- x ^ 0 ∣ k \hat {\mathbf{x}}_{0\mid k} x^0∣k:从k这一步估算的x0,定义为: x ^ 0 ∣ k = 1 α ˉ k ( x k − 1 − α ˉ k z ~ ) \hat {\mathbf{x}}_{0\mid k}=\frac{1}{\sqrt{\bar\alpha_{k}}}(\mathbf{x}_{k}-\sqrt{1-\bar\alpha_{k}}\tilde{\mathbf{z}}) x^0∣k=αˉk1(xk−1−αˉkz~)
第一套,快速简单讲清采样方法
上次在DDPM中,我们是这样开头的:
略。我们考虑了t和t-1之间的关系,所以只能一步一步走。
现在我们这样想:
下式恒成立:
q
(
x
s
∣
x
0
)
=
α
ˉ
s
x
0
+
1
−
α
ˉ
s
ϵ
q(\mathbf{x}_{s}|\mathbf{x}_{0}) =\sqrt{\bar\alpha_s} \mathbf{x}_0+\sqrt{1-\bar\alpha_s} \boldsymbol{\epsilon}
q(xs∣x0)=αˉsx0+1−αˉsϵ
而,其中的x0可以由任何一步k的xk来估出来:
x
0
≈
x
^
0
∣
k
=
1
α
ˉ
k
(
x
k
−
1
−
α
ˉ
k
z
~
)
\mathbf{x}_{0} \approx \hat {\mathbf{x}}_{0\mid k}=\frac{1}{\sqrt{\bar\alpha_{k}}}(\mathbf{x}_{k}-\sqrt{1-\bar\alpha_{k}}\tilde{\mathbf{z}})
x0≈x^0∣k=αˉk1(xk−1−αˉkz~)
带进来,同时他这个噪声
ϵ
\boldsymbol{\epsilon}
ϵ只是一个满足高斯分布的噪声就行,那我估出来的噪声
ϵ
θ
\boldsymbol{\epsilon} _{\theta}
ϵθ也满足高斯分布呀。因此可以把这个噪声换成他和我们的加权和,只要保证他们的方差之和等于原来的方差,就还是原来的分布不变:(引入了一个控制权重的参数
σ
k
\sigma_k
σk)
q
(
x
s
∣
x
k
,
x
0
)
=
α
ˉ
s
x
^
0
∣
k
+
1
−
α
ˉ
s
ϵ
=
α
ˉ
s
x
^
0
∣
k
+
1
−
α
‾
s
−
σ
k
2
ϵ
θ
+
σ
k
ϵ
\begin{aligned} &q(\mathbf{x}_{s}|\mathbf{x}_{k},\mathbf{x}_{0})\\ &=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+\sqrt{1-\bar\alpha_s} \boldsymbol{\epsilon} \\ &=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+ \sqrt{1-\overline{\alpha}_{s}-\sigma_{k}^{2}} \boldsymbol{\epsilon} _{\theta}+{\sigma_{k} \boldsymbol{\epsilon} } \end{aligned}
q(xs∣xk,x0)=αˉsx^0∣k+1−αˉsϵ=αˉsx^0∣k+1−αs−σk2ϵθ+σkϵ
这得到了DDIM的采样公式:
x
s
=
α
ˉ
s
x
^
0
∣
k
+
1
−
α
‾
s
−
σ
k
2
ϵ
θ
+
σ
k
ϵ
\mathbf{x}_{s}=\sqrt{\bar\alpha_s} \hat {\mathbf{x}}_{0\mid k}+ \sqrt{1-\overline{\alpha}_{s}-\sigma_{k}^{2}} \boldsymbol{\epsilon} _{\theta}+{\sigma_{k} \boldsymbol{\epsilon} }
xs=αˉsx^0∣k+1−αs−σk2ϵθ+σkϵ
也就是说,采样的时候不一定要一步一步,可以从任意k采样s。
继续分析,待定系数法求解
- 在DDPM,我们得出xt-1可以写成xt和x0和随机噪声的线性组合的形式;
- 因此,我们这里可以用待定系数法求解他们的系数,但是不使用q(xt|xt-1)这个条件。
- 结果就发现,xt 和 x0的系数还是可以求出来;只是求不出后面那个随机噪声的系数epsilon1了
- 当随机噪声的系数epsilon1等于DDPM时,DDIM就变为了DDPM
可以看到和我们之前直接写的是一样的。
图示理解
顺序是红黄绿蓝靛紫。
我们一步步看,等号后面这三项分别是,
- 红色:先走一大步,得到估计的x0。具体来说是在xt基础上减去估计的噪声
- 黄色:然后原路返回一点儿,也即再加上某比例的估计的噪声
- 绿色:然后加上一点点随机扰动
- 这样就完成了一步,下面继续循环即可。注意这一步不一定非得取当前步-1
- σt越大,则绿色和紫色的越长,黄色和深蓝色的越短
关于参数sigma
咱们控制predicted 噪声和随机噪声权重的参数σt(越大,随机噪声越多),在DDIM的论文中有结果图.
- 其中 σ ^ \hat\sigma σ^就是DDPM,
- dim(τ)是steps of sampling trajectory
- 可以看到DDPM在步数少的时候会差很多
- 另外,比较1到1的σ值,emm,不太明确,大概sigma越小就越确定一些?吧。