【Diffusion Model】Learning notes

来自 扩散模型 Diffusion Model 1-1 概述


扩散模型是什么?

本质是生成模型,拟合目标分布,然后生成很多数据符合这个分布
【Diffusion Model】Learning notes_第1张图片


训练测试阶段?
【Diffusion Model】Learning notes_第2张图片
【Diffusion Model】Learning notes_第3张图片


和 GAN 相比优势是什么?

【Diffusion Model】Learning notes_第4张图片
generator 和 discriminator 两者都得训练的比较均衡才能得到好的结果(稳定性),两者对抗,loss 并不能直观的反应训练过程

  • 训练难度
  • 训练稳定性
  • loss 的复杂性

DDPM 的话,reverse 只是一个去噪模型,目标比较明确,易于训练


扩散阶段

Z t Z_t Zt 服从标准正态分布

β t \beta_t βt 加权系数,越来越大

【Diffusion Model】Learning notes_第5张图片
上图是从 X t X_t Xt X t − 1 X_{t-1} Xt1 的公式

每张图加噪 T 次太慢了

我们能否直接从 X 0 X_0 X0 直接推导到 X t X_t Xt 呢?

【Diffusion Model】Learning notes_第6张图片

α t \alpha_t αt

【Diffusion Model】Learning notes_第7张图片
X T ≈ Z X_T \approx Z XTZ 近似高斯噪声

【Diffusion Model】Learning notes_第8张图片
reverse 的过程这里简单的进行了表示


看看多 batch 的时候是怎么训练的

【Diffusion Model】Learning notes_第9张图片

扩散过程

Z ~ = U N e t ( X t , t ) \widetilde{Z} = UNet(X_t, t) Z =UNet(Xt,t)


reverse 的形式是什么样子的呢?
【Diffusion Model】Learning notes_第10张图片

也是一步步反推回来的


具体看看 reverse 的公式推导
【Diffusion Model】Learning notes_第11张图片
也即,求条件概率 p ( X t − 1 ∣ X t ) p(X_{t-1}| X_t) p(Xt1Xt)

【Diffusion Model】Learning notes_第12张图片

注意上公式2中 p ( X t ) p(X_t) p(Xt) 表示 p ( X t ∣ X 0 ) p(X_t | X_0) p(XtX0), 公式3中 p ( X t − 1 ) p(X_{t-1}) p(Xt1) 表示 p ( X t − 1 ∣ X 0 ) p(X_{t-1} | X_0) p(Xt1X0)

正太分布这里忽略了 1 2 π ⋅ σ \frac{1}{ \sqrt{2 \pi} \cdot \sigma} 2π σ1

把公式1/2/3代入公式4得到公式5

公式4的目的是求出 p ( X t − 1 ∣ X t ) p(X_{t-1} | X_t) p(Xt1Xt) X t − 1 X_{t-1} Xt1 为变量,把公式5按二次式展开

【Diffusion Model】Learning notes_第13张图片

已知: α t + β t = 1 \alpha_t + \beta_t = 1 αt+βt=1 α t ⋅ α t − 1 ‾ = α t ‾ \alpha_t \cdot \overline{\alpha_{t-1}} = \overline{\alpha_t} αtαt1=αt

方差
【Diffusion Model】Learning notes_第14张图片
均值
【Diffusion Model】Learning notes_第15张图片
【Diffusion Model】Learning notes_第16张图片

得到了关于 X t X_t Xt X 0 X_0 X0 的表达形式

我们要求的是条件概率 p ( X t − 1 ∣ X t ) p(X_{t-1}| X_t) p(Xt1Xt) X 0 X_0 X0 不知道的,所以要替换掉上式中的 X 0 X_0 X0
【Diffusion Model】Learning notes_第17张图片
得到最终的均值结果,与 X t X_t Xt z ~ \widetilde{z} z 有关

汇总一下:
【Diffusion Model】Learning notes_第18张图片
这里 X t − t X_{t-t} Xtt 的公式有误,应该为
【Diffusion Model】Learning notes_第19张图片
z z z 服从标准的正态分布

X t − t X_{t-t} Xtt 公式模拟分子的布朗运动, X t − 1 X_{t-1} Xt1 中加式1 z ~ \widetilde{z} z 是确定项,加式2 z z z 是随机的正态分布

【Diffusion Model】Learning notes_第20张图片

布朗运动和扩散现象的区别

【Diffusion Model】Learning notes_第21张图片
【Diffusion Model】Learning notes_第22张图片

注意红色字迹的三个基础公式

对应到论文中的公式

扩散阶段
【Diffusion Model】Learning notes_第23张图片

reverse 阶段
【Diffusion Model】Learning notes_第24张图片

注意到这里的 if t>1,最后一步,不需要加扰动噪声了

【Diffusion Model】Learning notes_第25张图片

σ t \sigma_t σt 表示了扰动的系数,非确定性项

有可能 z z z 采样出来的全为0,这样 reverse 的过程变成了一个确定的过程


代码实现

【Diffusion Model】Learning notes_第26张图片
【Diffusion Model】Learning notes_第27张图片

α \alpha α β \beta β 的获取

【Diffusion Model】Learning notes_第28张图片
t t t 为 index

【Diffusion Model】Learning notes_第29张图片
【Diffusion Model】Learning notes_第30张图片
【Diffusion Model】Learning notes_第31张图片
time embedding 操作,不同时间点做不同的去噪操作

【Diffusion Model】Learning notes_第32张图片
【Diffusion Model】Learning notes_第33张图片
Residual block
【Diffusion Model】Learning notes_第34张图片
time embedding,类似于 transformer 的位置编码

【Diffusion Model】Learning notes_第35张图片
【Diffusion Model】Learning notes_第36张图片

你可能感兴趣的:(CNN,机器学习,人工智能,深度学习)