首页 > 其他分享 >扩散模型 - 简介、DDPM

扩散模型 - 简介、DDPM

时间:2023-06-01 11:36:24浏览次数:55  
标签:Diffusion Models 简介 模型 噪音 DDPM 扩散 过程

扩散模型

1 扩散模型(DM)

扩散模型(Diffusion Model)起源于非均衡热动力学(non-equilibrium thermodynamics),是一类基于概率似然(likelihood)的生成模型。

当前对扩散模型的研究主要围绕种主流的实现:

  1. 去噪扩散概率模型(Denoising Diffusion Probabilistic Models / DDPMs
  2. 基于分数的生成模型(Score-based Generative Models / SGMs
  3. 随机微分方程(Stochastic Differential Equations / Score SDEs

当前最流行的扩散模型包括:

模型 文章 是否开源 开发
DALL-E 2 Hierarchical Text-Conditional Image Generation with CLIP Latents - arXiv 2022 OpenAI
Imagen Imagen: Text-to-Image Diffusion Model with Conditional Priors - arXiv 2022 Google Research, Brain Team
Stable Diffusion High-Resolution Image Synthesis with Latent Diffusion Models - CVPR 2022 Stability AI

1.1 生成模型之间的差异和关联

1.1.1 差异

模型 文章 优势 劣势
生成对抗网络 (Generative Adversarial Networks / GAN Generative Adversarial Networks - NIPS 2014 - 高质量图像生成 - 无监督训练 - 相对较快的训练和推断 - 训练过程不稳定 - 生成样本的多样性相对弱
变分自编码器 (Variational Autoencoders / VAE Auto-Encoding Variational Bayes - ICLR 2014 - 准确捕获数据分布 - 计算过程可追踪 - 生成质量不如 GAN - 表示能力有限
自回归模型 (Autoaggressive Model / AG Language Models are Unsupervised Multitask Learners - NeurlPS 2019 - 长距离依赖 - 准确的概率估计 - 训练和计算速度相对较慢 - 难以获取高维数据的全局依赖
流模型 (Flow-based Model) Density Estimation Using Real NVP - ICLR 2017 - 准确捕获数据分布 - 生成高质量细节的图像 - 训练和计算速度相对较慢 - 架构设计比较困难
扩散模型 (Diffusion Model) Denoising Diffusion Probabilistic Models - NeurlPS 2020 - 高质量图像生成 - 准确捕获数据分布 - 训练过程固定 - 训练和计算速度慢

其中,GANs 有着较好的图像质量--多样性的权衡(trade-off),导致生成高质量的图像的代价是牺牲一部分数据分布(多样性)。VAE、AG 和 Flow 在数据分布的学习能力方面优于 GAN,但是在图像质量上难以与之相比。此外,VAE 依赖与 surrogate loss、Flow 模型必须使用独特的架构来构建反向变换。

1.1.2 关联

GAN 与扩散模型的关联

​ GAN 训练过程不稳定的主要原因是生成数据和输入数据之间不重叠的数据分布。其中一种解决方法是通过给辨别器的输入注入噪音来进一步帮助生成器和辨别器的分布,这种方法由扩散模型所启发。另一方面,扩散模型的抽样速度要慢于 GAN,主要原因是去噪步骤中的高斯假设,该假设使得去噪的步长(step)较小。有工作通过使用 conditional GAN 来对每一步去噪过程建模,增大了去噪的步长。

VAE 与扩散模型的关联

DDPM 可被视为是固定编码器的层级式马尔可夫 VAE。具体来说,DDPM 的前向过程作为编码器,该过程可以用线性高斯模型描述。DDPM 的反向过程对应于解码器,在多个解码过程中共享。解码器中的潜变量和样本数据有着同样大小的尺寸。

​ 有工作指出:在连续时间设定下,分数匹配目标函数可近似于深层 VAE 的证据下界(ELBO)。因此,扩散模型的优化过程可被视为训练一个无限层深的 VAE。

​ 基于分数的潜生成模型(LSGM)进一步表示:在潜空间情境下,ELBO 可以作为特殊的分数匹配目标函数。

2 去噪扩散概率模型 (DDPM)

2.1 DDPM 总览

​ 常规的深度学习模型通常用图表来表示网络结构,而扩散模型用数学公式来表述。

与常规的机器学习 Pipeline 做类比,扩散模型可以这样理解:

  • 扩散模型的输入是原始图像或者文本 prompt,输出是类似原始图像的生成图像
  • 扩散模型的训练包括两个过程:前向过程也叫扩散过程,反向过程也叫抽样过程。这两个过程都采用马尔科夫链
  • 马尔科夫链包括一系列的状态和一系列的变化概率,这里的状态指的是含有不同的噪音等级的图片,变化概率指的是从当前状态变化到下一状态的概率,使用变化矩阵来实现
  • 扩散模型的超参数包括:噪音的策略,学习率,迭代的次数等
  • 扩散模型的损失函数优化的是负对数似然(negative log likelihood)

DDPM("Denoising Diffusion Probabilistic Models") 一文中给出的算法流程:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.001.jpeg

  1. 算法 1 描述的是训练过程(对噪音辨别器的训练)(前向过程、扩散过程)
    1. 重复如下步骤,直到收敛
      1. 从训练集的数据分布中抽取一个样本(图片)X0
      2. 在有限时间序列从 1 - T 的某个时刻 t
      3. 从高斯分布的噪音等级中选取某个等级的噪音 ε
      4. 对图片添加噪音
      5. 根据 loss 函数,开始梯度下降更新模型参数
  2. 算法 2 描述的是是反向过程(去噪过程、抽样过程)
    1. 从高斯分布中抽取某个图片 XT
    2. 对时间序列从 T 开始到 1,执行下述步骤:
      1. 如果 t > 1,从高斯分布中选取 z,否则 z = 0 (z 是使用重参数化reparameterization 技巧产生的表示法)
      2. 使用重参数化技巧计算 Xt-1
      3. 得到生成图片 X0 返回

2.2 前向过程

​ 简单来说,前向过程的输入是原始图片,该图片服从一定的分布,输出是噪音图片,该图片服从高斯分布。

在前向过程中,对于一个输入图片,在某一个特定的时间 t 下,添加某种程度的噪音,得到噪音样本。前向过程不断重复该步骤,结果是一个时间序列和一系列噪音增大的图片。

​ 具体来说,从数据分布 q(x) 中选取图片 x0,在时间序列 {0, T} 内的某个时间 t,选取某个等级的噪音 nt,把噪音添加到输入图片,得到噪音样本 xt。在 T 个步长后得到样本序列:{X0, Xt}。步长由超参数方差机制 βt(0 - 1) 来控制。

​ 前向过程的数学表示:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.002.jpeg

通过重参数化(reparameterization)技巧得到 αt = 1 - βt,因此上述过程可以化简为:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.003.jpeg

这样的好处是可以从任意一个时刻 t 以解析解(closed form)来抽样 xt。(把依赖于前一个时间的条件概率 q(xt|xt-1) 转化为依赖于初值的条件概率 q(xt|x0))

​ 前向过程是固定的,也就是没有需要学习的参数。

2.3 反向过程

简单来说,反向过程的输入是添加了噪音的图片,该图片服从高斯分布。输出是去噪之后的图片,该图片服从一定的分布(如果网络训练完毕,那么该图片的分布应该接近模型的输入图片的分布)。

在反向过程中,对于一个带噪音的输入图片,在某一特定时间 t 下,消除一部分的噪音,得到噪音少了一些的图片。反向过程不断重复该步骤,结果是一个时间序列和一系列的噪音越来越少的图片,最终噪音完全消失,只剩下类似于原始图片的生成图片。

具体来说。如果可以逆转前向过程,那么只需要从最终的结果中抽样就可以得到清晰的图片。但是我们不能直接估计条件概率 q(xt-1|xt),因为这需要对整个数据集来执行前向过程。所以需要构建 pθ 来近似上述条件概率来运行反向过程。

反向过程的数学表示:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.004.jpeg

当条件为 X0 时,反向过程的条件概率是可以追踪的。

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.005.jpeg

决定高斯分布的主要参数是:均值和方差

在 DDPM("Denoising Diffusion Probabilistic Models") 一文中,作者固定了方差的大小,所以均值是反向过程中唯一需要学习的参数。(虽然后续 OpenAI 的工作表明,使方差变为学习参数能够提升 DDPM 的性能)。

使用贝叶斯公式和参数化技巧,可以把均值表示为:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.006.jpeg

2.4 Loss 函数

​ 由于扩散模型的学习过程非常类似于 VAE,所以我们可以用 VAE 中的变分下界(variational lower bound)或证据下界(evidence lower bound)来优化负对数似然)。

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.007.jpeg

​ 经过一系列推导可得:

Aspose.Words.6814f570-13ec-4448-b348-dd134ab150e5.008.jpeg

​ Lvlb 由三项损失组成:

  1. LT 是常数,因为 q 过程(前向过程)没有要学习的参数,而 pθ 过程(逆向过程)的 XT 就是该过程的输入或者前向过程的输出或者完全是噪音的图片,服从高斯分布。因此该项在计算时可以忽略
  2. Lt 用 KL 散度度量的生成数据和输入数据之间的分布差异
  3. L0 就是反向过程的分布

2.5 参数

2.5.1 超参数 βt

前向过程对噪音机制的方差 βt 设置为线性机制。变化范围从 β1 = 1e-4 到 βT = 0.02。实验结果表明:线性机制虽然能够生成高质量的图像,但是对数似然指标不如其他生成模型。

2.5.2 参数 Σθ

​ 在 DDPM("Denoising Diffusion Probabilistic Models") 一文中,作者固定了 βt 作为常数,并设置 Σθ(xt, t) = σ^2I,其中 σ 是不可学习的,设置为 βt 或者 βt-hat。因为作者发现学习方差 Σθ 会导致训练过程不稳定并生成低质量图像。

参考

标签:Diffusion,Models,简介,模型,噪音,DDPM,扩散,过程
From: https://www.cnblogs.com/risejl/p/17448442.html

相关文章

  • 1.1. Java简介与安装
    Java简介Java是一种广泛使用的计算机编程语言,由JamesGosling和他的团队在SunMicrosystems公司开发,于1995年首次发布。Java的设计理念是“一次编写,到处运行”,这意味着Java应用程序可以在任何支持Java运行时环境(JRE)的设备上运行,而无需重新编译。Java的主要特点包括:面向对象:Jav......
  • 掌握嵌入式Linux编程0简介
    简介多年来,Linux一直是嵌入式计算的主流。然而,涵盖这一主题的书籍却少之又少:本书旨在填补这一空白。术语"嵌入式Linux"没有很好的定义,可以应用于从恒温器到Wi-Fi路由器到工业控制单元等各种设备内部的操作系统。然而,它们都是建立在相同的基本开源软件上。这些就是我在本书中描......
  • 软件在环(SIL)测试简介(上)
    这是孙工自动驾驶的第17篇原创。“本文先通过与实车测试的对比引出软件在环测试的内容,然后分别介绍软件在环测试的不同模块,最后介绍通过集成开发搭建完整测试环境的思路。可能有疏漏,供大家批评。”注:《MIL、SIL、PIL和HIL是个啥》中描述了各种XIL手段,但是本文采用相对粗糙的分类......
  • 基于数据驱动 U-Net 模型的大气污染物扩散快速预测,提升计算速度近6000倍
    项目背景当前,常见的大气污染预测模型大多是基于物理机理构建的,比如空气质量预测模型Calpuff、AERMOD、CMAQ等。然而,这些模型运算较为复杂,对于输入数据的要求非常高,运算耗时也比较长,适合用于常规固定区域的预报。当遇到突发污染事件时,就无法有效发挥作用。针对以上问题,本项目以某......
  • CHNS 中国健康与营养调查 简介
    CHNS数据库网站于2018年6月12日更新了数据集内容,包括生物标记物检测数据、营养、农业、城镇化、教育等共22个数据集及51个变量字典文件,项目数据集压缩文件解压后可通过SAS软件格式打开并使用,变量字典为PDF格式(图13)。更新后的数据集涵盖1989年~2015年共10次调研数据的纵向整合数据,这......
  • NoSQL数据库简介
    利用nginx做反向代理分布式集群存在session如何存储的问题?1、存储到客户端cookie,不安全,网络负担效率低2、存在文件服务器或者数据库里,大量的IO效率问题2、session复制,session数据冗余,节点越多浪费越大3、NoSQL数据库,缓存数据库,完全存在内存中,速度快,数据结构简单NoSQL作为缓存......
  • Abstract Factory Pattern 抽象工厂模式简介与 C# 示例【创建型】【设计模式来了】
    〇、简介1、什么是抽象工厂模式?一句话解释:  通过对抽象类和抽象工厂的一组实现,独立出一系列新的操作,客户端无需了解其逻辑直接访问。抽象工厂模式(AbstractFactoryPattern)是一种创建型模式。它用于创建一组相关对象的家族。强调的是一组对象之间的协作关系,而不是单个对象之......
  • Chirpstack服务器简介和搭建教程
    LoRaWAN网络主要优势体现在低成本、广域连接和低功耗,同时具有较多的开源平台可供使用。使用Chirpstack服务器可以快速搭建本地LoRaWAN网络。本文重点介绍一下Chirpstack服务器是做什么的和Chirpstack服务器的安装教程:Chirpstack是一款多组件的、部署简单的开源服务器,同时也是使用最......
  • Chirpstack服务器简介和搭建教程
    LoRaWAN网络主要优势体现在低成本、广域连接和低功耗,同时具有较多的开源平台可供使用。使用Chirpstack服务器可以快速搭建本地LoRaWAN网络。本文重点介绍一下Chirpstack服务器是做什么的和Chirpstack服务器的安装教程:Chirpstack是一款多组件的、部署简单的开源服务器,同时也是使用......
  • 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览
    百度飞桨(PaddlePaddle)-PP-OCRv3文字检测识别系统预测部署简介与总览百度飞桨(PaddlePaddle)-PP-OCRv3文字检测识别系统PaddleInference模型推理(离线部署)百度飞桨(PaddlePaddle)-PP-OCRv3文字检测识别系统基于PaddleServing快速使用(服务化部署)1.预测部署简介......