首页 > 其他分享 >突然火起来的diffusion model是什么?

突然火起来的diffusion model是什么?

时间:2022-12-07 10:06:59浏览次数:71  
标签:diffusion mathbf epsilon 噪声 beta 突然 theta model 高斯分布

模型起源

2015年的时候,有几位大佬基于非平衡热力学提出了一个纯数学的生成模型 (Sohl-Dickstein et al., 2015)。不过那个时候他们没有用代码实现,所以这篇工作并没有火起来。

直到后来斯坦福大学(Song et al., 2019) 和谷歌大脑 (Ho et al., 2020) 有两篇工作延续了15年的工作。再到后来2020年谷歌大脑的几位大佬又把这个模型实现了出来(Ho et al., 2020),因为这个模型一些极其优秀的特性,所以它现在火了起来。

扩散模型可以做什么?呢它可以做一些。条件生成和非条件生成。在图像、语音、文本三个方向都已经有了一些应用,并且效果比较突出。

比较出圈的工作有我刚介绍的text to image的生成工作比如

什么是扩散模型?

Diffusion model 和 Normalizing Flows, GANs or VAEs 一样,都是将噪声从一些简单的分布转换为一个数据样本,也是神经网络学习从纯噪声开始逐渐去噪数据的过程。 包含两个步骤:

  • 一个我们选择的固定的(或者说预定义好的)前向扩散过程 $q$ ,就是逐渐给图片添加高斯噪声,直到最后获得纯噪声。
  • 一个需要学习的反向的去噪过程 $p_\theta$,训练一个神经网做图像去噪,从纯噪声开始,直到获得最终图像。

image.png

前向和反向过程都要经过时间步$t$,总步长是$T$(DDPM中$T=1000$)。

你从$t=0$开始,从数据集分布中采样一个真实图片$x_0$。比如你用cifar-10,用cifar-100,用ImageNet,总之就是从你数据集里随机采样一张图片作为$x_0$。

前向过程就是在每一个时间步$t$中都从一个高斯分布中采样一个噪声,将其添加到上一时间步的图像上。给出一个足够大的$T$,和每一时间步中添加噪声的表格,最终在$T$时间步你会获得一个isotropic Gaussian distribution

我要开始上公式了!

我们令$q(x_0)$是真实分布,也就是真实的图像的分布。

我们可以从中采样一个图片,也就是$x_0 \sim q(x_0)$ 。

我们设定前向扩散过程$q(x_t|x_{t-1})$是给每个时间步$t$添加高斯噪声,这个高斯噪声不是随机选择的,是根据我们预选设定好的方差表($0 < \beta_1 < \beta_2 < ... < \beta_T < 1$)的高斯分布中获取的。

然后我们就可以得到前向过程的公式为: $$ q({x}t | {x}{t-1}) = \mathcal{N}({x}t; \sqrt{1 - \beta_t} {x}{t-1}, \beta_t \mathbf{I}). $$

$$ \mathcal{N}({x}t; \sqrt{1 - \beta_t} {x}{t-1}, \beta_t \mathbf{I}) 就是{x}t \sim \mathcal{N}( \sqrt{1 - \beta_t} {x}{t-1}, \beta_t \mathbf{I}). $$

回想一下哦。一个高斯分布(也叫正态分布)是由两个参数决定的,均值$\mu$和方差$\sigma^2 \geq 0$。

然后我们就可以认为每个时间步$t$的图像是从一均值为${\mu}t = \sqrt{1 - \beta_t} {x}{t-1}$、方差为$\sigma^2_t = \beta_t$的条件高斯分布中画出来的。借助参数重整化(reparameterization trick)可以写成

$$ {x}t = \sqrt{1 - \beta_t}{x}{t-1} + \sqrt{\beta_t} \mathbf{\epsilon} $$

其中$\mathbf{\epsilon} \sim \mathcal{N}(\mathbf{0}, \mathbf{I})$,是从标准高斯分布中采样的噪声。

$\beta_t$在不用的时间步$t$中不是固定的,因此我们给$\beta$加了下标。对于$\beta_t$的选择我们可以设置为线性的、二次的、余弦的等(有点像学习率计划)。

比如在DDPM中$\beta_1 = 10^{-4}$,$\beta_T = 0.02$,在中间是做了一个线性插值。而在Improved DDPM中是使用余弦函数。

从$x_0$开始,我们通过$\mathbf{x}_1, ..., \mathbf{x}_t, ..., \mathbf{x}_T$,最终获得${x}_T$ ,如果我们的高斯噪声表设置的合理,那最后我们获得的应该是一个纯高斯噪声。

现在,如果我们能知道条件分布$p({x}_{t-1} | {x}_t)$,那我们就可以将这个过程倒过来:采样一个随机高斯噪声$x_t$,我们可以对其逐步去噪,最终得到一个真实分布的图片$x_0$。

但是我们实际上没办法知道$p({x}{t-1} | {x}t)$。因为它需要知道所有可能图像的分布来计算这个条件概率。因此,我们需要借助神经网络来近似(学习)这个条件概率分布。 也就是$p\theta ({x}{t-1} | {x}_t)$,其中, $\theta$是神经网络的参数,需要使用梯度下降更新。

所以现在我们需要一个神经网络来表示逆向过程的(条件)概率分布。如果我们假设这个反向过程也是高斯分布,那么回想一下,任何高斯分布都是由两个参数定义的:

  • 一个均值$\mu_\theta$;
  • 一个方差$\Sigma_\theta$。

所以我们可以把这个过程参数化为

$$ p_\theta (\mathbf{x}{t-1} | \mathbf{x}t) = \mathcal{N}(\mathbf{x}{t-1}; \mu\theta(\mathbf{x}{t},t), \Sigma\theta (\mathbf{x}_{t},t)) $$

其中均值和方差也取决于噪声水平$t$。

从上边我们可以知道,逆向过程我们需要一个神经网络来学习(表示)高斯分布的均值和方差。

带DDPM中作者固定方差,只让神经网络学习条件概率分布的均值。

First, we set $\Sigma_\theta ( \mathbf{x}_t, t) = \sigma^2_t \mathbf{I}$ to untrained time dependent constants. Experimentally, both $\sigma^2_t = \beta_t$ and $\sigma^2_t = \tilde{\beta}_t$ (see paper) had similar results.

之后再Improved diffusion models这篇文章中进行了改进,神经网络既需要学习均值也要学习方差。

通过重新参数化平均值定义目标函数

为了推导出一个目标函数来学习逆向过程的均值,作者观察到$q$和$p_\theta$可以看做是一个VAE模型 (Kingma et al., 2013).

因此,变分下界(ELBO)可以用来最小化关于ground truth$x_0$的负对数似然。

这个过程的ELBO是每个时间步$t$的损失总,$L=L_0+L_1+…+L_

标签:diffusion,mathbf,epsilon,噪声,beta,突然,theta,model,高斯分布
From: https://blog.51cto.com/Lolitann/5913300

相关文章

  • 域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap
    环境搭建:改系列文章开始有介绍。这部分代码所在磁盘位置:F:\workspace\SpringMVC代码\springMVC-demo4设置:request.setAttribute("testRequestScope","Hello,ServletAPI"......
  • v-model双向绑定原理
    父组件代码如下:<template> <div>  我是父组件:<inputtype="text"v-model="msg">  <son-boxv-model="msg"/> </div></template><script>//导入子......
  • vue3 v-model 双向更新
    原文地址:https://juejin.cn/post/7124602963058196516constprops=defineProps({//v-modelmodelValue:{type:String,default:''},})constemit=......
  • IBM SPSS Modeler分类决策树C5.0模型分析空气污染物数据
    全文链接:http://tecdat.cn/?p=30752原文出处:拓端数据部落公众号如何通过方法有效的分析海量数据,并从其中找到有利的资讯已经成为一种趋势。而决策树算法是目前在进行数据......
  • vue select组件封装后用v-model
    封装好的组件<styletype="text/css"scoped>.ipt-select-title{color:#6D89AF;flex-shrink:0;font-weight:500;}.ipt-holder{display:flex;f......
  • 是什么让人工智能突然开始画画了?
    封面图就是用扩散模型画的。这是最近两个大火的模型,直接冲到抱抱脸的首页。最先火起来的是图二。因为DALLE-2出来了,由于DALLE-2只对部分大佬开放,因此它的替代品DALLE-mini......
  • idea中已存在包突然无法找不到
    在idea中,本来已经用过很多次的包,突然就显示找不到了,使用clean、重新设置maven仓库、重启idea都没有效果。。。解决方法:就是在Setting-maven-runner中勾选上Deleg......
  • 在本地PC运行 Stable Diffusion 2.0
    StableDiffusion2.0在前几天已经发布了,新版本在上一个版本的基础上进行了许多改进。OpenCLIP中新的深度检测和更好的文本到图像模型是主要的改进之一。有很多的文章介绍......
  • 关于mac电脑突然搜不到家里wifi但手机却能连上的问题解决
    今天用mac电脑时,突然遇到一个奇怪的问题,家里wifi用的好好的,突然就连不上了,在看电脑能搜索到的wifi,居然家里的wifi都没有搜索到,但自己的手机却是正常的,然后我再看看我另外......
  • 基于Antlr的Modelica3.5语言解析
    背景Modelica语言是一种统一面向对象的系统建模语言官方文档中明确写明了语法规范在附录的第一章词法,第二章语法都完整的罗列的语言规范,对于Antlr适配特别好只需要把[......