Diffusion扩散模型 学习笔记

(看视频时顺便记的笔记,但忘了是哪个视频了,笔记中的图片也是来自这个视频的)

Diffusion模型目前最常用的领域为图像生成,即生成和数据库中图像类似的图像,目前也有根据文字生成图像等应用,其本质是个概率论模型。

在此之前,一般用GAN(生成对抗型神经网络)来做图像生成。但使用GAN有如下几个缺陷:

1.需要分别训练两个网络(生成器和判别器),难度大。

2.难以判断是否收敛(因为生成器和判别器都在同时更新)。

3.训练目标不明确,由于生成器只需要骗过判别器,所以可能会使训练结果和理想结果相差甚远。

4.难以泛化,生成结果的多样性较差。

扩散和复原是Diffusion模型中最重要的两个概念。首先明确一点,神经网络对于某一类图像的学习和生成实质上是在学习图像中像素值的分布,并生成相似的分布的过程。扩散的过程实质上是在数据中不断加入满足高斯分布的随机噪音,直到图像变为纯噪音。而将这一过程翻转,就是从纯噪音中还原出所需图像的过程,而这一过程正是神经网络所需要学习的。

扩散过程:在图像中不断加入噪声,并记录每一时刻加噪声后的结果。

首先,要定义一个β,它代表了每一时刻加上噪声的程度。β会随着加噪次数的增多而变大,即某一时刻的加噪程度都是大于前面所有程度的。这是为了加快后面还原的过程。

(个人觉得可以结合反向还原的过程考虑:还原就和画画一样,先描出一个大体轮廓和上色,然后慢慢修改细节,随着时间的增加修改的细节也越来越细,而还原的过程也应如此。对应的扩散过程就是扩散幅度越来越大)

xt由前一时刻的状态xt-1和这一时刻添加的噪声z(z相当于一个符合高斯分布的噪声)决定。而α(也就是1-β)相当于一个权重,随着时刻增加,噪声所占的权重越大,而前一时刻的图像所占权重越少,这也代表着加噪程度随着时刻的增加而逐渐增大。(实质上和概率论有关,概率论也能解释权重需要开根号的原因,但是视频这里没细讲)

xT便是由x0通过不断迭代上述过程获得。但是这种迭代太慢,且不好用于训练(这种迭代做梯度下降非常麻烦)。因此原作者想出了直接从x0到xT的计算方式(如下截图)。通过代入能发现xa到xb之间的推导关系,从而能推导出x0到xt的推导公式(上边标横杠表示累乘,这里有个大前提,即每一步的噪音都需要满足标准正态分布)这表示,任意时刻的分布实际上可以由x0直接算出。(zt没有累乘,这地方是写错了)

Diffusion模型的目的是如何拟合加噪的逆向过程,即去噪过程。反向直接还原到原始图像,即XT直接还原到X0,目前是不可能的。但是可以模拟从当前时刻到前一时刻的过程,即XT到XT-1的过程。这个问题抽象成概率论里的数学问题,就是知道XT-1条件下XT的图像概率分布,求XT条件下XT-1的图像概率分布,即知道P(XT|XT-1),求P(XT-1|XT)。二这一问题可以用贝叶斯公式来解决。

基于贝叶斯公式的推导过程1:反向推导过程中所需要的三项实质上前面都能获得,而这三项实质上都是某个均值和方差下的正态分布。

基于贝叶斯公式的推导过程2:由于三者均满足正态分布,因此三者的乘除过程如下:

基于贝叶斯的推导过程3:通过推导,可以推导出Xt与Xt-1的关系。通过拆分化简,可以得知Xt-1满足一个正态分布,而分布的均值和方差可以由Xt和X0计算得出。但这里面有一个问题,就是X0是最终求得的目标,是未知的。因此作者根据X0和Xt之间的关系用Xt代替了X0。最终,Xt-1分布的均值和方差只跟Xt有关。

基于贝叶斯的推导过程4:这个推导过程还有个问题,那就是zt是未知的,即从第0步到第t步所加的噪声量是未知的。这也就是扩散模型的核心:用神经网络预测zt的近似解。

总结一下:通过贝叶斯公式,我们可以得出结论:只要能预测出由原始图像到纯噪声之间不断添加噪声的参数zt,我们就能够反向从纯噪声还原出原始的图像。

损失函数:损失函数的核心是zt,即真实的每步添加的噪声值。而这个噪声值获得的过程,就是通过人为地将图像变成纯噪声过程中每一步设置的参数。即,我们通过将图像一步步“扩散”,获得每一步的真实噪声值,而在将噪声还原为图像的过程中,神经网络在每一步预测的噪声值都会与扩散过程中的真实噪声值比较,以计算损失,调整神经网络。

神经网络模型的输入参数有两个:当前所处的时刻T和该时刻符合高斯分布的一个噪声图Mat。其中T用一种类似于Transformer中的位置编码来表示。而预测的过程所用到的神经网络为一个UNet。

在训练阶段中,每次加噪声过程中总共的迭代次数T是不固定的。

个人的理解:原始图像到噪声的过程中,虽然说最后噪声图的分布特征会无限逼近正态分布,但始终有原始图像的元素在内。而反向传播的过程中,输入的噪声图和每次削减噪声的过程都是严格遵守正态分布的。所以,与其说是降噪,感觉更像是通过扩散的过程,学习一种如何用多个正态噪声分布的组合来生成一个类似图像的过程。模型学习的实质上是如何组合出一个分布。

最后,这个模型有个缺陷,那就是对显存要求非常大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值