Diffusion Model概念、数学原理

一、什么是Diffusion

1.前向公式介绍

首先定义一个前向过程,给定一张原始图片,通过t次加入噪音,得到一张杂乱无章的照片,那么是否有一个反向的过程,从噪声中恢复出原图:

比如在t-1步我们加入一个分布为高斯分布的噪声:

对于反向过程来说,就是训练一个神经网络,可以预测一个噪声,但后把Xt减去预测的噪声就得到Xt-1,我们把这个过程称为去噪的过程:

在加入噪声的时候会定义两个系数:

而添加噪声后的图像会满足高斯分布,核心公式就是:

前半部分表示保留上一部分的数据信息,后半部分表示加入的随机噪声,此时条件分布P(X_{t}|X_{t-1})服从高斯分布此时Xt-1不再是 “随机变量”,而是一个确定的常数。结合正向扩散公式,由于 “常数+ 高斯随机变量” 的结果仍为高斯随机变量,因此无论Xt-1本身是否服从高斯分布,只要固定 (Xt-1,Xt) 的条件分布就一定是高斯分布

当我们把公式展开:

就得到最后这么一个式子,所以之前的加噪过程就可以变成下图所示的跳跃式加噪:

整个过程遵循马尔可夫链。

2.反向公式介绍

在扩散模型的反向扩散过程中,核心目标是从第 t 步的带噪声数据Xt出发,逐步恢复出第 t-1步的带噪声数据 Xt-1,最终迭代到原始数据 X0。

正向过程中我们有前面的公式,但是在反向过程中由于我们不知道Xt-1和原始噪声,我们需要训练一个模型比如Unet预测出原始噪声,从而通过正向公式的逆运算,推导出原始数据。

最大似然估计

我们要使用神经网络去拟合一个我们观察到的数据的分布,我们希望能找到一个参数,使我们生成的图像的真实概率是比较高的,对应的就是求一个最大似然估计,那我们要求这个的话就等价于求一个最小的下面这个值:

后面的代表KL散度,通过推导我们可以得到下面的这个东西:ELBO


二、数学原理

先看Training部分:第二行意思就是我们先要sample一张图片也就是X0,通常把X0当作干净的图,第三行就是从1到T之间sample一个数字出来,第四行就是sample一个噪音,大小和图像一样,然后第五行就是比较复杂的:在本文的一部分的前向公式中提到的,先看括号里,前面的式子,是对X0和噪音做加权求和,前面的参数就是事先定好的weight;右边这个\epsilon _{\Theta }就是Noise predictor network,目的就是得到左边的那个\epsilon就是Target Noise也就是当初sample出来的Noise,这就是这个算法真正做的东西。

接下来是产生图的过程:

一开始sample一个全部都是noise的图,叫为X_{T},接下来跑T次操作:第三行是sample一个noise放到第四行的公式后面,目的是为了增加干扰,第四行中的X_{t}就是上一个步骤产生的图,在最开始的时候就是X_{T}

整个过程图示如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

何仙鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值