【AIGC】2、扩散模型 | 到底什么是扩散模型?

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

参考论文:A Survey on Generative Diffusion Model

github:https://github.com/chq1155/A-Survey-on-Generative-Diffusion-Model

一、什么是扩散模型

1.1 现有生成模型简介

【AIGC】2、扩散模型 | 到底什么是扩散模型?

已经有大量的方法证明深度生成模型能够模拟人类的想象思维,生成人类难以分辨真伪的内容,主要方法如下:

1、GAN:用神经网络训练生成器和判别器

【AIGC】2、扩散模型 | 到底什么是扩散模型?

GAN 的主要思想:

  • GAN 就是一个互搏的过程,要训练两个网络,一个是生成器,一个是判别器
  • 生成器就是给定一个随机噪声,生成一些东西,我们希望其能生成一个比较逼真的图片,把生成的图片和真实的图片给到判别器,让判别器来看哪些是真图片和假图片,就是 0/1 的判断
  • 通过两个网络互相学习,互相提高,最后能生成比较真实的图片

缺点:

  • 可解释性较差:GAN 不是概率模型,是通过网络完成的,是隐式的,所以不知道它到底学到了什么,不知道其遵循了什么分布
  • 训练时不稳定:因为要同时训练两个网络,就有需要平衡的问题,训练不好的话容易模型坍塌
  • 多样性较差

优点:

  • GAN 的目标函数是用来以假乱真的,所以保真度和细节都非常好

2、AE、DAE、VAE、VQVAE:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

Auto-Encoder (AE):给定输入 x,经过编码器 encoder 就能得到特征,特征维度会变小,然后在使用解码器,得到一个图像,训练的目标函数是希望解码器的输出能尽可能的重建输入,也正是因为是自己重建自己,所以是自编码器

Denoising Auto-Encoder (AE):先对原图输入进行扰乱,后续过程和 AE 一样,依然希望输入能够重建原始的未经过扰乱的输入,这个扰动很有用,会让训练出来的模型非常稳健,不容易过拟合。图片数据本来就是冗余的,所以添加一些扰动后,模型仍然能够学习到很好的特征。

AE 和 DAE 或者 MAE 其实都是为了学习中间那个 bottleneck 特征 z,学习好了后用于分类、检测等任务,并不是做生成的,其原因在于这里的 z 是专门用来重建的特征,并不是随机噪声,并不能用于采样来生成图像

所以就有了 VAE,也就是变分自编码器,VAE 和 AE 是很不同的,虽然结构看起来很像,但很重要的区别是,中间不再是学习一个 bottleneck 的特征,而是学习了一个分布,假设分布是高斯分布,可以用均值和方差来描述,就是从 encoder 得到特征后,加一些 FC 层,来预测均值和方差,得到后用公式采样一个 z 出来,VAE 就可以用来做生成了,因为在训练好后,可以扔掉 encoder,这里的 z 就是能随机抽样出的样本,然后就能生成图片了

VAE 这里生成的是一个分布,从贝叶斯角度来看,前面的过程是一个后验概率 p(z|x),就是给定 x 得到 z 的过程,学到的 z 就是一个先验分布,后面的过程是一个先验概率 p(x|z),就是给定 z 预测 x 的过程,其实就是最大似然,这里做的就是 maximize likelihood。

VAE 因为是学习的概率分布,是从分布中抽样的,生成的图片的多样性比 GAN 好的多,后面还有一些 VQVAE 和 DALLE 1 都是在 VAE 的基础上做的。

【AIGC】2、扩散模型 | 到底什么是扩散模型?

VAE 其实结构和扩散模型很像,且有较好的理论可解释性,但 Encoder 使用很大的步长来学习数据分布并进行加噪,Decoder 也使用很大的步长来去噪,导致学习的不够细致,很粗糙。

3、Diffusion model

前向扩散:在输入 x0 上逐步加噪声,一共加 T 次,最终变成一个真正的噪声,各向同性正态分布

逆向去噪:从最终的 xT 逐步恢复原图的过程,使用的是共享参数的 U-Net 结构

【AIGC】2、扩散模型 | 到底什么是扩散模型?

扩散模型发展历程:

DDPM → improved DDPM → Diffusion beats GAN → GLIDE → DALLE2 → Imagen

【AIGC】2、扩散模型 | 到底什么是扩散模型?

【AIGC】2、扩散模型 | 到底什么是扩散模型?

【AIGC】2、扩散模型 | 到底什么是扩散模型?

1.2 扩散模型的理论来源

我们主要介绍扩散模型,扩散模型背后的直觉来源于物理学:

  • 在物理学中,气体分子从高浓度区域扩散到低浓度区域
  • 这与由于噪声的干扰而导致的信息丢失是相似的
  • 通过引入噪声,然后尝试去噪来生成图像,模型每次在给定一些噪声输入的情况下学习生成新图像。

1.3 扩散模型的使用场景

扩散模型可以用到哪些任务上:

  • 计算机视觉
  • 语言模型
  • 声音模型
  • AI for science

扩散模型的应用场景:

  • 图文生成
  • 视频生成
  • 分子结构生成
  • AI 绘画
  • AI 制药

1.4 扩散模型的基本结构

扩散模型的工作原理:

  • 学习由于噪声引起的信息衰减,然后使用学习到的模式来生成图像

扩散模型的结构:

  • 扩散模型定义了一个扩散步骤的马尔可夫链,慢慢地向数据中添加随机噪声,也就是熵增的过程,然后学习逆向扩散过程,从噪声中构建所需的数据样本
  • 前向扩散过程 q q q:为输入图像 x 0 x_0 x0 引入一系列的随机噪声,也就是对样本点分 T 步添加高斯噪声,随着噪声的引入, x 0 x_0 x0 最终会失去区分特性
  • 逆向恢复过程 p p p:从高斯先验出发,从有大量随机噪声的图中学习恢复原图

【AIGC】2、扩散模型 | 到底什么是扩散模型?

扩散模型相比 GAN 或 VAE 的缺点:

  • 速度慢:扩散模型是基于马尔科夫过程来实现的,在训练和推理的时候都需要很多步骤

【AIGC】2、扩散模型 | 到底什么是扩散模型?

1.5 马尔可夫过程

马尔可夫模型有两个假设:

  • 系统在 t t t 时刻的状态只与 t − 1 t-1 t1 时刻的状态有关,也称无后效性
  • 状态转移概率与时间 t t t 无关,只与前驱和后继的状态有关,也称齐次性或时齐性

1、无后效性

具有马尔科夫性质的状态满足下面公式:

P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S 1 , . . . , S t ) P(S_{t+1}|S_t)=P(S_{t+1}|S_1,...,S_t) P(St+1St)=P(St+1S1,...,St)

上述公式的意义:

  • 给定当前状态 S t S_t St,将来的状态 S t + 1 S_{t+1} St+1 t t t 时刻之前的状态 { S 1 , . . . , S t − 1 } \{S_1, ..., S_{t-1} \} {S1,...,St1} 已经没有关系,只和当前的状态 S t S_t St 有关系。
  • 当前的状态 S t S_t St 中已经包括了历史的相关信息,所以之前的状态可以忽略

2、齐次性

对状态 s s s 和后继状态 s ′ s' s,状态转移概率定义为:
P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] P_{ss'}=P[S_{t+1}=s'|S_t=s] Pss=P[St+1=sSt=s]

状态转移矩阵 P 定义了从 s s s 转移到后继状态 s ′ s' s 的概率:

【AIGC】2、扩散模型 | 到底什么是扩散模型?
其中的每行和为1:

  • 比如掷骰子游戏,当前的点数为1

  • 再一次掷骰子得到的点数的概率,即使我们不知道下一个具体点数的概率,但是我们知道下一个点数是1,2,3,4,5,6中的某一点,那么就会有:

    【AIGC】2、扩散模型 | 到底什么是扩散模型?

马尔可夫过程:

马尔科夫过程一个无记忆的随机过程,是一些具有马尔科夫性质的随机状态序列构成,可以用一个元组 <S,P> 表示:

  • S 是有限数量的状态集合
  • P 是状态转移概率矩阵, P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] P_{ss'}=P[S_{t+1}=s'|S_t=s] Pss=P[St+1=sSt=s]

二、扩散模型相关定义

2.1 符号和定义

1、State:状态

State 是能够描述整个扩散模型过程的一系列数据:

  • 初始状态:starting state x 0 x_0 x0
  • prior state:离散时为 x T x_T xT,连续时为 x 1 x_1 x1
  • 中间状态:intermediate state x t x_t xt

2、Process 和 Transition Kernel

  • Forward/Diffusion 过程 F F F:将初始状态转换到有噪声的状态
  • Reverse/Denoised 过程 R R R:和前向过程方向相反,从有噪声的图像中逐步复原原图的过程
  • Transition Kernel:在上面的两个过程中,每两个 state 的变换都是通过 transition kernel 来实现的,

前向和逆向的过程如下所示:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

对于非离散情况,任何时间 0 < = t < s < 1 0<=t<s<1 0<=t<s<1 的前向过程如下:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

  • F t F_t Ft R t R_t Rt 分别是 t t t 时刻从状态 x t − 1 x_{t-1} xt1 转换成状态 x t x_t xt 的前向 transition kernel 和逆向 transition kernel
  • σ t \sigma_t σt 是噪声尺度
  • 最常用的 transition kernel 是 Markov kernel,因为其具有较好的任意性和可控性

3、Pipeline:

假设定义 sampled data 为 x ~ 0 \widetilde{x}_0 x 0,则整个过程可以描述如下:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

4、离散和连续过程

与离散过程相比,连续过程能够从任何时间状态中提取任何信息

如果扰动核的变化足够小,则连续过程有更好的理论支撑

5、训练目标

扩散模型是生成模型的一个子类,和 VAE 的目标函数类似,目标是让初始分布 x 0 x_0 x0 和采样分布 x ~ 0 \widetilde{x}_0 x 0 尽可能的接近。

通过最大化如下 log-likelihood 公式来实现,其中 σ ~ \widetilde{\sigma} σ 在前向和逆向过程中是不同的:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

2.2 问题规范化

1、Denoised Diffusion Probabilistic Model(DDPM):去噪扩散概率模型

NIPS 2021 的论文 ‘Denoising diffusion probabilistic models’ 中对扩散概率模型进行了改进,提出了 DDPM:

  • 使用固定的方差回归均值
  • 用和噪声表示,通过均值预测网络重参数化,将关于均值的差改写为噪声预测网络与噪声的差,将目标函数改写为噪声预测的方式
  • 对高斯噪声进行回归预测
  • 对扩散模型的架构也进行了相应的改进,使用 U-Net 形式的架构,引入了跳跃连接,更适合于像素级别的预测任务

DDPM Forward Process:

  • DDPM 使用一系列的噪声系数 β 1 \beta_1 β1 β 2 \beta_2 β2 β T \beta_T βT 作为不同时刻的 Markov trasition kernel。

  • 一般都使用常数、线性规则、cosine 规则 来选择噪声系数,而且 [68] 中也证明了不同的噪声系数在实验中也没有明显的影响

  • DDPM 的前向过程定义如下:

    【AIGC】2、扩散模型 | 到底什么是扩散模型?

  • 根据从 x 0 x_0 x0 x T x_T xT 的扩散步骤, Forward Diffusion Process 如下:

    【AIGC】2、扩散模型 | 到底什么是扩散模型?

DDPM Reverse Process:

  • 逆向过程使用可学习的 Gaussian trasition 参数 θ \theta θ 来定义如下:

    【AIGC】2、扩散模型 | 到底什么是扩散模型?

  • 逐步从 x T x_T xT 复原到 x 0 x_0 x0 的过程如下,假设过程为 p ( x T ) = N ( x T ;   0 , I ) p(x_T) = N(x_T;\ 0, I) p(xT)=N(xT; 0,I)

    【AIGC】2、扩散模型 | 到底什么是扩散模型?

  • 所以, p θ ( x 0 ) = ∫ p θ ( x 0 : T ) d x 1 : T p_{\theta}(x_0)=\int p_{\theta}(x_{0:T})dx_{1:T} pθ(x0)=pθ(x0:T)dx1:T 的分布就是 x ~ 0 \widetilde{x}_0 x 0 的分布

Diffusion Training Objective:为了最小化 negative log-likelihood (NLL),则最小化问题转换为:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

  • L T L_T LT:prior loss
  • L 0 L_0 L0:reconstruction loss
  • L 1 : T − 1 L_{1:T-1} L1T1:consistent loss

下图是 PPDM 的 pipeline:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

2、Score Matching Formulation

score matching 模型是为了解决原始数据分布的估计问题,通过近似数据的梯度 ∇ x l o g p ( x ) \nabla_xlogp(x) xlogp(x) 来实现,这也称为 score。

两个相邻状态的 transition kernel 为:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

Score matching 过程:

score matching 的核心是训练一个得分估计网络 s θ ( x , σ ) s_{\theta}(x, \sigma) sθ(x,σ) 来预测得分。
【AIGC】2、扩散模型 | 到底什么是扩散模型?

DSM:

【AIGC】2、扩散模型 | 到底什么是扩散模型?

【AIGC】2、扩散模型 | 到底什么是扩散模型?

三、可以提升的点

尽管扩散模型目前取得了很好的生成效果,到其逐步去噪的过程涉及非常多的迭代步骤,故此扩散模型的加速是很重要的研究课题。

【AIGC】2、扩散模型 | 到底什么是扩散模型?文章来源地址https://www.toymoban.com/news/detail-495959.html

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

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

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

相关文章

  • Generative AI 新世界 | 扩散模型原理的代码实践之采样篇

    本期文章,我们一起来探究生成式 AI 这一火热的新知识领域。 目前计划有三个大方向: 代码深度实践方向。例如用代码完整诠释 Diffusion 模型的工作原理,或者 Transformer 的完整架构等; 模型部署和训练优化方向。例如尝试解读 LMI、DeepSpeed、Accelerate、FlashAttention 等不同模型

    2024年04月10日
    浏览(43)
  • Amazon Generative AI 新世界 | 基于 Amazon 扩散模型原理的代码实践之采样篇

    以前通过论文介绍 Amazon 生成式 AI 和大语言模型(LLMs)的主要原理之外,在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾,希望内容可以更加深入。因此,本文将讲解基于扩散模型原理的代码实践,

    2024年02月06日
    浏览(59)
  • Diffusion Model (扩散生成模型)的基本原理详解(二)Score-Based Generative Modeling(SGM)

    本篇是《Diffusion Model (扩散生成模型)的基本原理详解(一)Denoising Diffusion Probabilistic Models(DDPM)》的续写,继续介绍有关diffusion的另一个相关模型,同理,参考文献和详细内容与上一篇相同,读者可自行查阅,本篇着重介绍Score-Based Generative Modeling(SGM)的部分,本篇的理论部分参

    2024年02月09日
    浏览(44)
  • AIGC原理:扩散模型diffusion综述一:面向视觉计算的扩散模型研究进展

    论文地址:State of the Art on Diffusion Models for Visual Computing 👉 贴一幅SGM(Score-based Generative Model)的原因是宋飏博士将他2019年提出的SMLD模型和2020年Jonathan Ho提出的DDPM采用SDE进行一统这两大极为相似的生成式模型。殊途同归,基于概率的扩散模型DDPM和基于分数的扩散模型SMLD都是

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

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

    2024年02月10日
    浏览(40)
  • AIGC入门系列1:感性的认识扩散模型

    大家好,欢迎来到AI手工星的频道,我是专注AI领域的手工星。AIGC已经成为AI又一个非常爆火的领域,并且与之前的AI模型不同,AIGC更适合普通人使用,我们不仅可以与chatgpt对话,也能通过绘画模型生成想要的图片。很多朋友都想去深入的了解和掌握AIGC的原理,但是AIGC需要一

    2024年02月03日
    浏览(52)
  • 【AIGC】手把手使用扩散模型从文本生成图像

    在这篇文章中,我们将手把手展示如何使用Hugging Face的diffusers包通过文本生成图像。 DALLE2是收费的,用户只有一些免费的额度,如果免费额度使用完毕就需要付费了,所以必须寻找替代方案,并发现了Hugging Face,他们发布了一个扩散模型的包diffusers ,可以让我们直接使用。

    2024年02月09日
    浏览(56)
  • AIGC消息天天不断,到底什么是AIGC?

    最近,AIGC领域的新消息可以说是日新月异,今天国外某IT大佬推出一个新模型,明天国内某大厂推出一个新平台。 说来说去,到底什么是AIGC呢? AIGC的全称是 AI Generated Content ,也就是利用人工智能技术自动生成各种类型的内容。 AIGC的应用领域有很多,最主要的有四大领域:

    2024年02月09日
    浏览(35)
  • AIGC技术到底是什么?为什么这么火热?

    AIGC(Artificial Intelligence in Game Creation)技术是指 利用人工智能技术来辅助游戏创作的过程 。 它可以通过机器学习、深度学习和自然语言处理等技术,从大量的游戏数据中提取规律和模式,进而生成游戏的内容、关卡设计、角色行为等元素。   AIGC技术可以帮助游戏开发者快速

    2024年02月13日
    浏览(45)
  • 【AIGC】DreamBooth:微调文本到图像扩散模型用于主题驱动的生成

    DreamBooth可以让我们使用一个很小的数据集微调文生图模型,然后基于文本提示词为我们训练的的主体替换不同的场景。  大型文本转图像模型在人工智能的发展中实现了显著的飞跃,能够从给定的文本提示中高质量和多样化地合成图像。然而,这些模型缺乏模仿给定参考集中

    2024年01月18日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包