本文正在参与「金石方案 . 分割6万现金大奖」


碎碎念

Cold Diffusion:高斯噪声,我一定非你不可吗?

Cold Diffusion:高斯噪声,我一定非你不可吗?

不知道是哪个懒鬼,八月份的文章现在才开始看。

论文地址:arxiv.org/abs/2208.09…

代码地址:GitHub – arpitbansal297/Cold-Diffusion-Models: Official implementation of Cold-Diffusion for different transformations in pytorch.

之前我写过诸多分散模型相关的文章,比如

  • 使用:【翻译】最近兴起的分散模型
  • 代码:Pytorch中怎么运用分散模型? 机器学习分散模型简介
  • ……

为了防止让人觉得我给自己的其他文章强行引流,所以你们想了解的自己翻翻看哦。我就假定你们都知道分散模型是什么玩意儿啦。

论文简介

从DDPM开始呢,咱们都以为分散模型便是:一张图片给它一步一步加高斯噪声,当步骤足够多的时分,图片会趋近于纯高斯噪声。咱们就能够学习一个模型,给他逐渐降噪,直到康复原图。

Cold Diffusion:高斯噪声,我一定非你不可吗?

Cold Diffusion:高斯噪声,我一定非你不可吗?

之后的诸多文章都是围绕这一点不断进行改进,好像咱们都以为分散模型就得配高斯噪声。但是今日这个文章便是告诉你,脱离高斯噪声,分散模型照样能够工作的。今日的主题是“没有谁离不开谁,分散模型和高斯噪声也不是绝配”。

看一下下图,便是论文的作者发现,分散模型的图画退化进程并不是激烈地依赖于其退化办法。

之前咱们用的退化办法:增加高斯噪声。

作者团队试了一下:增加增加模糊、动物化、遮盖、像素退化、增加雪花噪点……咱们将其称之为确定性退化。

通过这些尝试之后,作者团队发现,如果咱们把这些退化都用起来,咱们乃至能够构建整个生成模型家族了……

Cold Diffusion:高斯噪声,我一定非你不可吗?

尽管咱们将不确定性的噪声转化成了确定性退化,但是这些办法很简单就能够使用到分散模型中。这一发现让研究人员开始对基于郎之万运动和变分推理的原始分散模型(狭义分散模型)提出质疑,也为广义分散模型的发展奠定了根底。

算法描绘

假定咱们有一个来自于数据集的图画x0x_0,现在,咱们设定退化进程为DD,咱们训练的模型将数据重建的进程为RR

那么关于恣意一个数据应该有:

D(x0,0)=x0D(x_0,0) = x_0
R(xt,t)≈x0R(x_t,t) \approx x_0

大白话讲便是,一个图x0x_0退化0步的时分仍是x0x_0,一个xox_o退化t步得到xtx_t,如果咱们 去重建它t步,那就会得到一个接近于x0x_0的图画。

这里咱们将DD称为退化算子,将RR称为康复算子。

在实践使用中,咱们只需要通过参数为的神经网络实现以下优化方针:

min⁡Ex∼X∥R(D(x,t),t)−x∥\min _\theta \mathbb{E}_{x \sim \mathcal{X}}\left\|R_\theta(D(x, t), t)-x\right\|
  • xx表明从散布X\mathcal X中采样的随机图画
  • ‖‖表明一个范数,在这个工作里用的是L1范数

因为RR_\theta只是通过一个简单的凸损失训练,因此当执行退化运算的次数t很大的时分,生成的成果会很差,所以作者团队对其采样算法进行了改进。

Cold Diffusion:高斯噪声,我一定非你不可吗?

算法一便是一般的采样进程,咱们能够在for循环那里看到,重建进程step是从t到1的,第s次重建取得x0\hat{x_0}x0x_0退化s-1次取得xs−1x_{s-1}

Cold Diffusion:高斯噪声,我一定非你不可吗?

算法二是cold diffusion改进的采样算法,咱们仍是只看for循环部分,前边的都相同,到了最终一步那里变了。

本来是我重建好的图画x0\hat x_0退化s-1步之后取得xs−1x_{s-1}现在变成了咱们采样的中间成果,减去重建成果x0\hat x_0退化s步之后的成果,再加上重建成果x0\hat x_0退化s-1步之后的成果。能够将其理解为,图片实在退化进程相当于上一步成果减去退化算子DD在对应方位的一次操作。