扩散模型之DDPM

这篇具有很好参考价值的文章主要介绍了扩散模型之DDPM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章前置

最原文链接(英文):What are Diffusion Models?
原文链接:Diffusion扩散模型大白话讲解,看完还不懂?不可能
原文链接:DDPM解读(一)| 数学基础,扩散与逆扩散过程和训练推理方法
hugging face diffusers(扩散模型包):huggingface diffusers code
本文并非全部是个人理解,是觉得其他作者的博客和文章通过不同的角度将DDPM讲的更加通俗易懂,希望自己能通过写一些东西加深理解,并且能够将其他人的优质内容进行分享。

生成模型

生成模型的主流网络结构应该可以分成三类,GAN、VAE 和基于流的模型。他们在生成高质量样本方面取得了巨大成功,但每个都有自己的局限性。

  1. GAN:由生成器和判别器构成。先训练判别器,使其能够区分图片的真伪(二分类),再继续训练生成器生成图像,在通过判别器判别图像的真伪,使生成图像的分布逐渐逼近于真实分布。由于 GAN 模型具有对抗性训练的性质,因此以潜在的不稳定训练和较少的生成多样性而闻名。
  2. VAE:与GAN通过判别器判断生成图像的真假不同,VAE直接通过分布的变换来生成图像。将真实样本通过编码器网络变换成一个理想的数据分布,然后这个数据分布再传递给一个解码器网络,得到一堆生成样本,生成样本与真实样本足够接近的话,就训练出了一个自编码器模型。但VAE的方法输出模糊,常会失真。
  3. 基于流模型的方法,是建立训练数据和生成数据之间的概率关系,然后用可逆的神经网络来训练,这种关系是一一对应的。代价就是模型设计比较麻烦,因为要保证可逆而且逆函数可以算,还要有足够的灵活度。流模型必须使用专门的体系结构来构建可逆变换。
  4. 扩散模型的灵感来自非平衡热力学。他们定义了一个扩散步骤的马尔可夫链,以缓慢地将随机噪声添加到数据中,然后学习反转扩散过程以从噪声中构建所需的数据样本。与 VAE 或流模型不同,扩散模型是通过固定过程学习的,并且潜在变量具有高维性(与原始数据相同)。
    扩散模型之DDPM

总结

从图中我们可以看到,GAN、VAE和基于流的模型的共同点在于期望“一步跨十个台阶”,直接实现图像的生成,而扩散模型期望“一步跨一个台阶”,这可能是扩散模型生成的图像质量比较高的原因。

Design of DDPM

如下图所示。DDPM模型主要分为两个过程:forward加噪过程(从右往左)和reverse去噪过程(从左往右)。加噪过程意思是指向数据集的真实图片中逐步加入高斯噪声,而去噪过程是指对加了噪声的图片逐步去噪,从而还原出真实图片。加噪过程满足一定的数学规律,而去噪过程则采用神经网络来学习。这么一来,神经网络就可以从一堆杂乱无章的噪声图片中生成真实图片了。
扩散模型之DDPM

正向加噪过程

给定一个从真实数据分布中采样的数据点 x 0 ∼ q ( x ) \rm{x_0} \sim q(\rm{x}) x0q(x),定义一个 T T T step 的正向的加噪过程,逐步向样本中添加少量高斯噪声,以产生一连串的噪声样本 x 1 , . . . , x T \rm{x_1},...,\rm{x_T} x1,...,xT。步长的大小是由 β t \beta_t βt控制 β t ∈ ( 0 , 1 ) t = 1 T {\beta_t \in(0,1)}^T_{t=1} βt(0,1)t=1T
扩散模型之DDPM
这种公式看起来比较难理解比较抽象,其实就是
x t = 1 − β t x t − 1 + β t ϵ t − 1 \rm{x_t}=\sqrt{1-\beta_t}\rm{x}_{t-1}+\sqrt{\beta_t}\epsilon_{t-1} xt=1βt xt1+βt ϵt1
其中 ϵ t ∼ N ( 0 , I ) \epsilon_t \sim N(0,I) ϵtN(0,I),这样就非常容易理解了,正向的加噪过程是通过公式推导的,不涉及网络参数的学习。随着 t t t不断增大,采样数据 x 0 \rm{x_0} x0逐渐失去可辨别的特征,当 T T T比较大时, x T \rm{x_T} xT就等同于一个高斯分布了。我们可以看到, x T \rm{x_T} xT只由 β T \beta_T βT x T − 1 \rm{x_{T-1}} xT1来确定,是一个不通过学习就可以直接得到的过程。因此,只要我们有了 x 0 \rm{x_0} x0,并且提前确定每一步的固定值 β 1 \beta_1 β1,…, β T \beta_T βT,我们就可以推出任意一步的加噪数据 x 1 \rm{x_1} x1,…, x T \rm{x_T} xT。这里的前向加噪过程被称为是一个马尔科夫链过程。

反向去噪过程

反向的过程是复杂的,需要逐步反向计算,即计算 q ( x t − 1 ∣ x t , x 0 ) q(\rm{x_{t-1}}|\rm{x_t},\rm{x_0}) q(xt1xt,x0)。这里为什么不是直接计算 q ( x t − 1 ∣ x t ) q(\rm{x_{t-1}}|\rm{x_t}) q(xt1xt),这是因为在正向加噪的过程中,我们已知的只有各种条件概率 q ( x t ∣ x t − 1 ) q(\rm{x_{t}}|\rm{x_{t-1}}) q(xtxt1),而像 q ( x t ) q(\rm{x_t}) q(xt)这样的先验概率不能得到,所以需要计算 q ( x t − 1 ∣ x t , x 0 ) q(\rm{x_{t-1}}|\rm{x_t},\rm{x_0}) q(xt1xt,x0)。这里我们可以由贝叶斯公式得出(公式真的不想手打了,直接复制粘贴):
扩散模型之DDPM
根据正向的加噪过程,我们很容易计算贝叶斯公式中的各个成分
扩散模型之DDPM
在这里 α t = 1 − β t \alpha_t = 1-\beta_t αt=1βt α t ‾ = α t α t − 1 . . . α 1 \overline{\alpha_t} = \alpha_t \alpha_{t-1}...\alpha_1 αt=αtαt1...α1。标准正态分布可以表示为:
扩散模型之DDPM
所以贝叶斯公式的表示可以转化为:
扩散模型之DDPM
将平方展开并合并同类项我们可以得到:
扩散模型之DDPM
因为KaTeX parse error: Undefined control sequence: \x at position 1: \̲x̲_t x 0 x_0 x0都是已知的,所以最后一项可以作为一个常数项。对比标准的正态分布展开项为:
扩散模型之DDPM
对比两个指数形式的分布,我们就可以分别计算 σ \sigma σ μ \mu μ,而且可以发现这里的 σ \sigma σ是一个固定值,而 μ \mu μ可以得到:
扩散模型之DDPM
通过正向加噪的过程可以有 x t x_t xt计算 x 0 x_0 x0,所以可以得到:
扩散模型之DDPM
而在反向去噪的过程中, ϵ t \epsilon_t ϵt并不知道是什么样的,所以就可以通过神经网络来拟合了,并且可以通过与正向加噪的过程中使用的噪声计算mse损失来训练这个网络。这就是一个标准的扩散模型DDPM的过程。文章来源地址https://www.toymoban.com/news/detail-498500.html

到了这里,关于扩散模型之DDPM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2022图像翻译/扩散模型:UNIT-DDPM: UNpaired Image Translation with Denoising Diffusion Probabilistic Models

    我们提出了一种新的无配对图像间翻译方法,该方法使用去噪扩散概率模型而不需要对抗训练。我们的方法,UNpaired Image Translation with Denoising Diffusion Probabilistic Models(UNIT-DDPM),训练一个生成模型,通过最小化另一个域条件下的去噪分数匹配目标,推断图像在两个域上的联合分

    2023年04月18日
    浏览(46)
  • 【扩散模型】2、DDPM | 去噪扩散概率模型开山之作

    论文:Denoising Diffusion Probabilistic Models 代码:https://github.com/hojonathanho/diffusion stable diffusion 代码实现:https://github.com/CompVis/stable-diffusion/blob/main/ldm/models/diffusion/ddpm.py 出处:伯克利 时间:2020.06 假设均值为 0,方差为 1 的高斯分布,则对应的噪声示例如下,就是在 0 附近分布的

    2024年02月07日
    浏览(48)
  • 扩散模型之DDPM

    最原文链接(英文):What are Diffusion Models? 原文链接:Diffusion扩散模型大白话讲解,看完还不懂?不可能 原文链接:DDPM解读(一)| 数学基础,扩散与逆扩散过程和训练推理方法 hugging face diffusers(扩散模型包):huggingface diffusers code 本文并非全部是个人理解,是觉得其他作者

    2024年02月10日
    浏览(38)
  • 【扩散模型】DDPM,DDIM

    ddpm是一类生成模型,其工作原理是逐渐向数据中添加噪声,然后学习如何逆转这一过程。这个想法是通过一个称为扩散的过程将一个简单的分布(通常是高斯噪声)转换成一个复杂的数据分布(如图像或音频),然后反向生成新的样本。 简单的过程可以描述如下: 从数据分布中的

    2024年01月17日
    浏览(45)
  • 【生成模型】DDPM概率扩散模型(原理+代码)

    AI 作画从 18 年的 DeepDream噩梦中惊醒过来,在 2022 年 OpenAI 的 DALL·E 2达到惊人效果,见图: AI + 艺术涉及到 Transformer、VAE、ELBO、Diffusion Model 等一系列跟数学相关的知识。 Diffusion Models 跟 VAE 一样原理很复杂 。 扩散模型 (论文: DDPM 即 Denoising Diffusion Probabilistic Model)2020年发

    2023年04月18日
    浏览(45)
  • 论文阅读_扩散模型_DDPM

    英文名称: Denoising Diffusion Probabilistic Models 中文名称: 去噪扩散概率模型 论文地址: http://arxiv.org/abs/2006.11239 代码地址1: https://github.com/hojonathanho/diffusion (论文对应代码 tensorflow) 代码地址2: https://github.com/AUTOMATIC1111/stable-diffusion-webui stable-diffusion-webui/modules/models/diffusion/ddpm_edi

    2024年02月09日
    浏览(48)
  • 【扩散模型】【AIGC】DDPM Note

    Abstract 我们使用扩散概率模型给出了高质量的图像合成结果,扩散概率模型是一类受非平衡热力学启发的潜变量模型。我们的最佳结果是根据扩散概率模型和去噪分数匹配与朗之万动力学之间的新联系而设计的加权变分界上的训练,并且我们的模型自然地允许渐进有损解压缩

    2024年02月10日
    浏览(43)
  • 扩散模型原理+DDPM案例代码解析

    扩散模型和一般的机器学习的神经网络不太一样!一般的神经网络旨在构造一个网络模型来拟合输入数据与希望得到的输出结果,可以把一般的神经网络当作一个黑盒,这个黑盒通过训练使其输入数据后就可以得到我们想要的结果。而扩散模型包含了大量的统计学和数学相关

    2024年02月16日
    浏览(45)
  • AI绘画能力的起源:从VAE、扩散模型DDPM、DETR到ViT、Swin transformer

    2018年我写过一篇博客,叫:《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD》,该文相当于梳理了2019年之前CV领域的典型视觉模型,比如 2014 R-CNN 2015 Fast R-CNN、Faster R-CNN 2016 YOLO、SSD 2017 Mask R-CNN、YOLOv2 2018 YOLOv3 随着2019 CenterNet的发布,特别是2020发布的DETR(End-to-End

    2024年02月20日
    浏览(50)
  • AI绘画能力的起源:通俗理解VAE、扩散模型DDPM、DETR、ViT/Swin transformer

    2018年我写过一篇博客,叫:《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD》,该文相当于梳理了2019年之前CV领域的典型视觉模型,比如 2014 R-CNN 2015 Fast R-CNN、Faster R-CNN 2016 YOLO、SSD 2017 Mask R-CNN、YOLOv2 2018 YOLOv3 随着2019 CenterNet的发布,特别是2020发布的DETR(End-to-End

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包