【论文阅读】 Denoising Diffusion Probabilistic Models ( DDPM )

文章介绍了DDPM(DiffusionProbabilisticModels)中的扩散和逆向过程,使用高斯噪声进行图像生成和去噪。通过数学归纳法,展示了如何用参数化的马尔可夫链描述这个过程,以及神经网络在参数选择中的应用。
摘要由CSDN通过智能技术生成

目录

扩散现象

DDPM 思想

前向过程(扩散过程)

高斯噪声

如何理解?

回到式中

高斯分布的和

数学归纳法

参数的选择

逆向过程(去噪过程)

看回逆向过程的定义

来看算法

左边是训练模型的过程

右边是模型的推理过程


论文链接:https://arxiv.org/abs/2006.11239

扩散现象

物质将由高浓度区域向低浓度区域转移,直至均匀分布的现象。

向水中滴一滴墨水,墨水将弥散开来填满整杯水。

DDPM 思想

运用“扩散”的思想,向一张清晰的图片不断添加噪声,直至最终成为纯噪声

大胆地假设,我们将该过程反过来,试图从一张纯噪声中一步步减去噪声,恢复出清晰的图片

如果该假设可以实现,这正是生成图片 的过程!

前向过程(扩散过程)

前向过程以马尔可夫链描述 is fixed to Markov chain

该过程就是逐渐地加入高斯噪声(每一步都加,且都以权重 \sqrt{\beta _t} 加入,该权重随步数 t 变化)

高斯噪声

高斯噪声是一种常见的随机噪声,也称为正态分布噪声。它是由高斯分布(正态分布)产生的随机信号。

如何理解?

比如,假设有一个温度传感器,它每隔一秒测量一次环境温度。由于环境中存在各种随机因素,例如气象条件的变化、电磁干扰等,这些随机因素会导致测量结果的一定程度的波动和不确定性。

如果我们将这些随机波动建模为高斯噪声,那么温度传感器的测量值就会呈现出高斯分布的特性

即值的概率分布满足高斯分布。

回到式中

从标准高斯分布中 N\sim (0,I) 采样出第 t 步要加的噪声 z_{t} 

并予以权重 \sqrt{\beta _t} ,分布变为 N\sim (0,\beta _tI) 

论文中文字部分未提及的是,往图片中加噪声时,图片也要予以权重 \sqrt{1-\beta _t} 

于是新图片 x_t = \sqrt{1-\beta_t}x_{t-1}+\sqrt{\beta_t}z_{t} ,为 z_t 的分布加上了一个偏置,改变了均值

即 x_t 服从分布 N\sim (\sqrt{1-\beta_t}x_{t-1},\beta _tI) 

于是就有了文中的式子

注意到,每一次添加噪声都是往里加高斯分布,而高斯分布的和仍是高斯分布,这样一来,只要我们有步数 t ,我们便可以直接用 x_0 直接表达出 x_t

高斯分布的和

数学归纳法

这里文中用 \alpha _t=1-\beta_t 代替了 \beta_t 

推演得每一次加噪声就是在权重那里乘上新权重(连乘)

至此,无论多少步添加噪声,实际上都可以用公式一步算出最终图像 x_t 

(如上图中最后一行所示)

参数的选择

文中没有将参数 \beta _t / \alpha _t 设置为可学习的,而是设置为定值。

实施中将 \beta _t 设置为线性变大的小系数(从 10^{-4} 到 0.02 )。

逆向过程(去噪过程)

我们想要逆向地,通过 x_t 得到 x_{t-1} 的分布, q(x_{t-1}|x_t) 

前面我们做的一切都是正向的,会发现该逆向分布一时无法表达

等式右边的概率均是前向的,都可以用我们前面推导的表达式表达

也就是不同高斯分布的相乘相除

得出的分布表达式正比于(略去前面的系数)

拆开合并同类项,为 x_{t-1} 配方

x_{t-1}^2 的系数即是方差倒数 \frac{1}{\sigma^2} ,再利用该方差去看第二项 x_{t-1} 的系数 \frac{2\mu}{\sigma^2} 

可以得到均值 \mu 的表达式,再带入用 x_t 、 第 t 步加入噪声 z_t 表达的式子

这样,我们便获得了 x_{t-1} 分布的均值

该均值中的 z_t 是我们不知道的,在论文后续的说明中我们会知道

z_t 其实就是我们训练神经网络要预测的东西(通过 x_t 和 t )

看回逆向过程的定义

看上图右边的式子,下标 \theta 代表参数通过神经网络学习

我们已经有了 \mu_\theta ,对于方差 \sum _\theta 

\sum _\theta 设置为了 \sigma _t^2 I ,在实验中, \sigma _t^2 =\beta_t 、 \sigma _t^2=\frac{1-\bar{\alpha_{t-1}}}{1-\bar{\alpha_t}}\beta_t 得到的结果都是相似的。

在前向过程参数的选择中,我们知道 \beta_t 其实设定成了不拿来给神经网络学习的常数,所以该方差事实上也是常数。

来看算法

左边是训练模型的过程

在我们的数据集中抽出样本 x_0 

1 到 T 中随机选取一个整数 t (注意是随机选取,该 t 仅是这张图片的加噪步数)

随机选取的步数 t 保证了模型的鲁棒性,避免了模型学到奇怪的东西比如我只要去掉某固定步数的噪声就可以完成任务

接着在高斯分布中采样一个噪声 \epsilon ,即前文中的 \bar{z_t} 

神经网络去学习预测噪声 \epsilon _\theta(x_t, t) ,其中 x_t = \sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha_t}}\bar{z_t} 

对与 ground truth 噪声取2-范数做梯度下降直至收敛

右边是模型的推理过程

从高斯分布中随机选取出噪声作为 x_t 

对于从 T 到 1 的每一步,都从高斯分布中抽出一个 z 

在前面逆向过程的推导我们有 x_{t-1} 的均值与方差

所以便有了式子

如此重复,直到求出 x_0 ,就是我们想要的图片。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值