文章目录

  • 一、什么是扩散模型
    • 1.1 现有生成模型简介
    • 1.2 扩散模型的理论来源
    • 1.3 扩散模型的使用场景
    • 1.4 扩散模型的基本结构
    • 1.5 马尔可夫过程
  • 二、扩散模型相关定义
    • 2.1 符号和定义
    • 2.2 问题规范化
  • 三、可以提升的点

参考论文:A Survey on Generative Diffusion Model

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

一、什么是扩散模型

1.1 现有生成模型简介

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

  • VAE:

    比 GAN 要学习的东西更加明确,即使用 Encoder 学习数据的分布(均值和方差),使用 Decoder 基于学习到的分布训练生成器。VAE 的 Encoder 本质上就是对真实数据进行加噪,Decoder 就是在加了高斯噪声的数据上解码,相当于去掉噪声来恢复真实数据。

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

  • Flow-based

  • GAN:用神经网络训练生成器和判别器,可解释性较差,训练时容易出现不稳定的问题

  • diffusion model:

    和 VAE 的结构类似,不过是前向使用很小的步长来一步步进行加噪,逆向使用很小的步长一步步的进行去噪,比 VAE 学习的更细致

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:从高斯先验出发,从有大量随机噪声的图中学习恢复原图

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

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

1.5 马尔可夫过程

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

  • 系统在 t t t 时刻的状态只与 t − 1 t-1 t−1 时刻的状态有关,也称无后效性
  • 状态转移概率与时间 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+1​∣St​)=P(St+1​∣S1​,...,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​,...,St−1​} 已经没有关系,只和当前的状态 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​=s′∣St​=s]

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


其中的每行和为1:

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

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

马尔可夫过程:

马尔科夫过程一个无记忆的随机过程,是一些具有马尔科夫性质的随机状态序列构成,可以用一个元组 <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​=s′∣St​=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 来实现的,

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

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

  • F t F_t Ft​ 和 R t R_t Rt​ 分别是 t t t 时刻从状态 x t − 1 x_{t-1} xt−1​ 转换成状态 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​,则整个过程可以描述如下:

4、离散和连续过程

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

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

5、训练目标

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

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

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 的前向过程定义如下:

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

DDPM Reverse Process:

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

  • 逐步从 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):

  • 所以, 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),则最小化问题转换为:

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

下图是 PPDM 的 pipeline:

2、Score Matching Formulation

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

两个相邻状态的 transition kernel 为:

Score matching 过程:

score matching 的核心是训练一个得分估计网络 s θ ( x , σ ) s_{\theta}(x, \sigma) sθ​(x,σ) 来预测得分。

DSM:

三、可以提升的点

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

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

  1. Stable Diffusion公司新作Gen-1:基于扩散模型的视频合成新模型,加特效杠杠的!...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入->[扩散模型]微信技术交流群 转载自:机器之心 | 编辑:蛋酱 从文本生成图像,再到给视频加 ...

  2. 扩散模型加持下,机器人模型DALL-E-Bot可以轻松完成自主重新排列任务

    原文链接:https://www.techbeat.net/article-info?id=4217 作者:seven_ 最近,图像扩散模型的发展可谓是风生水起,很多AI大厂纷纷在这一领域展开研究,例 ...

  3. 生成扩散模型漫谈:统一扩散模型(应用篇)

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 在<生成扩散模型漫谈:统一扩散模型(理论篇)>中,笔者自称构建了一个统一的模型框架 ...

  4. 目标检测扩散模型DiffusionDet登场,扩散模型正在不同任务中“扩散”

    原文链接:https://www.techbeat.net/article-info?id=4342 作者:seven_ 本文介绍一项来自香港大学和腾讯AI Lab的工作,该工作提出了一个新的Diff ...

  5. 领域驱动架构(DDD)建模中的模型到底是什么? 1

    领域驱动架构(DDD)建模中的模型到底是什么?    前言 叙述 DDD本身是一套完整.详尽的方法论,从如何需求沟通(构建领域知识),到高层设计(战略建模).详细设计(战术建模),细致到代码的实现风格 ...

  6. 听惯了 QQ 音乐、酷狗音乐的你,想知道推荐模型到底是咋回事么?

    导语:时下QQ音乐酷狗音乐等APP似乎让用户觉得它比任何人都更懂得自己的音乐口味,会为用户推荐喜欢的歌曲,每一次都充满了surprise.本文作者Sophia Ciocca将通过介绍音乐推荐始祖Spo ...

  7. 【用户增长模型-上篇】从AARRR模型到RARRA模型,互联网到底经历了什么?

    做用户运营的同学必然学过比较经典的AARRR模型,随着互联网环境变迁,这两年RARRA模型也可谓大行其道,今天我们聊聊两个模型的概念,以及从AARRR模型到RARRA模型变迁过程. AARRR模型的概 ...

  8. Koa的洋葱模型到底是什么?

    什么是Koa? Koa是一个精简的node框架,被认为是第二代Node框架,其最大的特点就是独特的中间件流程控制,是一个典型的洋葱模型,它的核心工作包括下面两个方面: 将node原生的req和res封 ...

  9. 到底什么是机器学习模型?这篇文章终于讲明白了

    机器学习 (Machine Learning) 是对研究问题进行模型假设,利用计算机从训练数据中学习得到模型参数,并最终对数据进行预测和分析的一门学科. **模型是机器学习的核心组成要素.**本文从模 ...

最新文章

  1. First non repeating word in a file? File size can be 100GB.
  2. document.all和document.layers
  3. mpvue使用vant Weapp运行npm run build命令打包后失效
  4. 混迹职场,你的领导也是你的资源
  5. 360分拆计划生变,临时剥离四大业务
  6. Linux命令之umask
  7. 在 Android 中调用二进制可执行程序(native executable )
  8. 计算机组成原理白中英课后习题题答案
  9. C# 中intptr用法
  10. vue和js点击下载pdf,word,png,jpg等格式的文件,解决点击下载pdf却是打开预览的问题
  11. Debian11 安装Chromium浏览器
  12. Ubuntu18.04安装CAJ阅读器
  13. flutter 生成图片保存到手机相册
  14. 代码管理平台云效Codeup使用以及构建流水线
  15. Postman:常用的Pre-request Script方法【MD5+时间戳+获取当前时间】
  16. 七彩虹主板进BIOS设置和打开启动项菜单快捷键
  17. 2021年长安杯电子数据取证大赛
  18. C语言文件读写(1)-文本文件读操作
  19. Mel频率倒谱系数-MFCC
  20. pytese +allure框架设计

热门文章

  1. 自动化测试常见面试题-面经全套附答案
  2. p标签设置文本自动换行
  3. 输入框input三方禁止输入方法及bug——做禁止字符输入限制时,使用拼音未确定时英文字母上屏
  4. 商务笔记本进入小时代
  5. 如何搭建前台系统(简)
  6. 手把手教你在显示设备上制作一个菜单
  7. 总结几种流行的电池SOC估算方法
  8. 一个方法写入Excel和txt文本文件
  9. 数据恢复软件如何换机使用?
  10. HEVC,VP9,x264性能对比