在这里插入图片描述

Diffusion Models 扩散模型

我们已经了解到,构建强大的生成模型的一种有效方法是:先引入一个关于潜在变量z的分布p(z),然后使用深度神经网络将z变换到数据空间x。由于神经网络具有通用性,能够将简单固定的分布转化为关于x的高度灵活的分布族,因此为p(z)采用如高斯分布N(z|0, I)这类简单固定的分布就足够了。在之前的章节中,我们探讨了多种符合这一框架的模型,这些模型基于生成对抗网络、变分自编码器以及归一化流,在定义和训练深度神经网络方面采用了不同的方法。

在本章中,我们将探讨这一通用框架下的第四类模型,即扩散模型(diffusion models),也被称为去噪扩散概率模型(denoising diffusion probabilistic models,简称DDPMs)(Sohl-Dickstein等人,2015年;Ho、Jain和Abbeel,2020年)。这类模型已成为许多应用领域中最先进的模型。为便于说明,我们将重点讨论图像数据模型,尽管该框架具有更广泛的适用性。其核心思想是,对每张训练图像应用多步加噪过程,将其逐步破坏并最终转化为一个服从高斯分布的样本。这一过程如图20.1所示。随后,训练一个深度神经网络来逆转这一过程;一旦训练完成,该网络就可以从高斯分布中采样作为输入,进而生成新的图像

扩散模型可被视为一种分层变分自编码器的变体,其中编码器分布是固定的由加噪过程所定义,而仅需学习生成分布(Luo,2022)。这类模型易于训练,在并行硬件上扩展性良好,且能规避对抗训练中的挑战与不稳定性问题,同时生成结果的质量可与生成对抗网络相媲美甚至更优。然而,由于需要通过解码器网络进行多次前向传播,生成新样本的计算成本可能较高(Dhariwal和Nichol,2021)。

20.1 Forward Encoder 前向编码器

假设我们从训练集中选取一张图像,记为 x,然后对每个像素独立地添加高斯噪声进行混合,得到一个受噪声干扰的图像 z₁,其定义如下:
在这里插入图片描述
其中,ε₁ ∼ N(ε₁|0, I),且 β₁ < 1 为噪声分布的方差,β₁ ∈ (0,1):控制噪声强度的超参数(称为噪声的方差系数)。公式(20.1)和(20.3)中系数 √(1 − β₁)√β₁ 的选取,确保了 zₜ 的分布均值相较于 zₜ₋₁ 更接近零,且 zₜ 的协方差矩阵相较于 zₜ₋₁ 更接近单位矩阵。我们可以将变换(20.1)改写为如下形式:

在这里插入图片描述
随后,我们通过多次添加独立的加性高斯噪声,重复这一过程,从而生成一系列噪声逐步增强的图像序列 z₂, …, zₜ。需要注意的是,在扩散模型的相关文献中,这些潜在变量有时被记为 x₁, …, xₜ,而观测变量则记为 x₀。为与本书其余部分保持一致,我们采用 z 表示潜在变量、x 表示观测变量的符号体系。每一幅后续图像的生成方式如下:
在这里插入图片描述
其中,εₜ ∼ N(εₜ|0, I)。同样地,我们可以将公式(20.3)改写为如下形式:
在这里插入图片描述
条件分布序列(20.4)构成一个马尔可夫链,并可用如图20.2所示的概率图模型表示。方差参数 βₜ ∈ (0, 1) 需手动设定,通常按照预设的递增规则选择,使得方差值沿链逐步增大,即满足 β₁ < β₂ < … < βₜ

这个公式描述的是扩散模型(Diffusion Model)中的前向过程(Forward Process),即如何逐步向原始图像添加噪声,最终将其转化为纯噪声。详细解析公式和方差参数空间门

公式 (20.3)

zt=1−βtzt−1+βtϵtz_t = \sqrt{1 - \beta_t} z_{t-1} + \sqrt{\beta_t} \epsilon_tzt=1βtzt1+βtϵt

  • ztz_tztzt−1z_{t-1}zt1:分别表示在时间步 tttt−1t-1t1 的图像(或潜在变量)。
  • βt\beta_tβt:是一个预先设定的参数,取值范围在 (0,1)(0, 1)(0,1) 之间,控制每一步添加噪声的比例。
  • ϵt\epsilon_tϵt:是从标准正态分布 N(ϵt∣0,I)\mathcal{N}(\epsilon_t | 0, \mathbf{I})N(ϵt∣0,I) 中采样得到的高斯噪声,其中 I\mathbf{I}I 是单位矩阵。
    这个公式的含义是,在每一步 ttt,当前的图像 ztz_tzt 是由前一步的图像 zt−1z_{t-1}zt1 加上一定比例的高斯噪声 βtϵt\sqrt{\beta_t} \epsilon_tβtϵt 得到的,同时保留了前一步图像的一部分 1−βtzt−1\sqrt{1 - \beta_t} z_{t-1}1βtzt1

公式 (20.4)

q(zt∣zt−1)=N(zt∣1−βtzt−1,βtI)q(z_t | z_{t-1}) = \mathcal{N}(z_t | \sqrt{1 - \beta_t} z_{t-1}, \beta_t \mathbf{I})q(ztzt1)=N(zt1βtzt1,βtI)
这个公式是从概率的角度描述了公式 (20.3)。它表示在给定 zt−1z_{t-1}zt1 的条件下,ztz_tzt 的条件概率分布是一个均值为 1−βtzt−1\sqrt{1 - \beta_t} z_{t-1}1βtzt1,协方差矩阵为 βtI\beta_t \mathbf{I}βtI 的高斯分布。

参数 βt\beta_tβt 的设定

参数 βt\beta_tβt 是手动设定的,并且通常按照一个预设的递增规则选择,使得 β1<β2<⋯<βT\beta_1 < \beta_2 < \cdots < \beta_Tβ1<β2<<βT。这意味着随着时间步 ttt 的增加,添加的噪声比例逐渐增大,最终在 t=Tt = Tt=T 时,图像几乎完全转化为噪声
通过这种方式,扩散模型的前向过程逐步将原始图像转化为一个各向同性的高斯分布,为后续的逆向生成过程(即从噪声中恢复图像)奠定了基础

在这里插入图片描述
图20.2 一个表示为概率图模型的扩散过程。原始图像x\mathbf{x}x由阴影节点表示,因为它是一个观测变量,而受噪声干扰的图像z1,…,zTz_1, \ldots, z_Tz1,,zT被视为潜在变量。噪声过程由前向分布q(zt∣zt−1)q(z_t|z_{t - 1})q(ztzt1)定义,可被视为一个编码器。我们的目标是学习一个模型p(zt−1∣zt,w)p(z_{t - 1}|z_t, \mathbf{w})p(zt1zt,w),该模型试图逆转这个噪声过程,可被视为一个解码器。正如我们稍后将看到的,条件分布q(zt−1∣zt,x)q(z_{t - 1}|z_t, \mathbf{x})q(zt1zt,x)在定义训练过程中起着重要作用。

图的解析

这张图展示了一个用概率图模型表示的扩散过程。

  • 节点和变量

    • 图中左侧的蓝色阴影节点表示原始图像 x\mathbf{x}x,它是一个观测变量。
    • 红色节点 z1,…,zTz_1, \ldots, z_Tz1,,zT 表示受噪声干扰的图像,被视为潜在变量。
  • 过程描述

    • 前向过程(噪声添加过程):由前向分布 q(zt∣zt−1)q(z_t | z_{t - 1})q(ztzt1) 定义,可以看作是一个编码器。从原始图像 x\mathbf{x}x 开始,通过一系列步骤逐步添加噪声,最终在 TTT 步后得到一个接近纯噪声的潜在变量 zTz_TzT。图中绿色虚线箭头表示了这一前向过程的方向,即从 zt−1z_{t-1}zt1ztz_tzt 的噪声添加步骤。
    • 逆向过程(生成过程):目标是学习一个模型 p(zt−1∣zt,w)p(z_{t - 1} | z_t, \mathbf{w})p(zt1zt,w),试图逆转这个噪声添加过程,可以看作是一个解码器。图中蓝色实线箭头表示了逆向过程的方向,即从 ztz_tzt 恢复到 zt−1z_{t - 1}zt1 的步骤。
  • 条件分布的作用

    • 条件分布 q(zt−1∣zt,x)q(z_{t - 1} | z_t, \mathbf{x})q(zt1zt,x) 在定义训练过程中起着重要作用。它结合了观测变量 x\mathbf{x}x 的信息,帮助模型学习如何从噪声潜在变量 ztz_tzt 恢复到前一步的潜在变量 zt−1z_{t - 1}zt1

总体而言,这张图直观地展示了扩散模型中前向的噪声添加过程和逆向的生成过程,以及各个变量和分布之间的关系。

20.1.1 Diffusion kernel

在给定观测数据向量 x\mathbf{x}x 的条件下,潜在变量的联合分布由下式给出:在这里插入图片描述
如果我们现在对中间变量 z1,…,zt−1z_1, \ldots, z_{t - 1}z1,,zt1 进行边缘化处理(边缘化处理的目的是消除中间变量,从而得到仅关于 ztz_tztx\mathbf{x}x 的条件概率分布 q(zt∣x)q(\mathbf{z}_t | \mathbf{x})q(ztx)),就得到了扩散核:
在这里插入图片描述
在此我们定义:
在这里插入图片描述

我们看到,每个中间分布都有一个简单的闭式高斯表达式,我们可以直接从中进行采样。这在训练去噪扩散概率模型(Denoising Diffusion Probabilistic Models, DDPMs)时将被证明是很有用的,因为它允许使用马尔可夫链中随机选择的中间项来进行高效的随机梯度下降,而无需运行整个链。我们还可以将公式(20.6)写成如下形式
在这里插入图片描述
其中再次(有)ϵt∼N(ϵt∣0,I)\epsilon_t \sim \mathcal{N}(\epsilon_t|0, \mathbf{I})ϵtN(ϵt∣0,I)(这里表示ϵt\epsilon_tϵt服从均值为0、协方差矩阵为单位矩阵I\mathbf{I}I的多元正态分布)。请注意,此时ϵt\epsilon_tϵt代表添加到原始图像上的总噪声,而不是在马尔可夫链的这一步添加的增量噪声。

经过许多步骤后,图像变得与高斯噪声无法区分,当步数 TTT 趋于无穷大(T→∞T \to \inftyT)时,我们有(以下情况/结果)
在这里插入图片描述
因此,关于原始图像的所有信息都丢失了。公式 (20.3) 中系数 1−βt\sqrt{1 - \beta_t}1βtβt\sqrt{\beta_t}βt 的选择确保了一旦马尔可夫链收敛到一个均值为0、协方差为单位矩阵的分布,进一步的更新将不会改变这一分布

由于公式 (20.9) 的右侧与 x\mathbf{x}x(或 x,根据上下文确定具体变量)无关,因此可以得出 zTz_TzT(或 zT\mathbf{z}_TzT ,根据上下文确定具体变量)的边缘分布由以下式子给出(或可表示为)
在这里插入图片描述

人们通常将马尔可夫链(公式20.4)称为前向过程,它类似于变分自动编码器(VAE)中的编码器,只不过这里(马尔可夫链所代表的过程)是固定的,而非通过学习得到的。然而,需要注意的是,文献中的常用术语与标准化流(normalizing flows)相关文献中通常使用的术语是相反的,在标准化流的文献中,从潜在空间到数据空间的映射被视为前向过程。

20.1.2 Conditional distribution 条件扩散

我们的目标是学会逆转(消除、还原)加噪过程,因此很自然地会考虑条件分布 q(zt∣zt−1)q(z_t | z_{t - 1})q(ztzt1) 的逆过程,我们可以借助贝叶斯定理将其表示为如下形式
在这里插入图片描述
我们可以将边缘分布 q(zt−1)q(z_{t-1})q(zt1) 表示为如下形式
在这里插入图片描述
其中,q(zt−1∣x)q(z_{t-1}|\mathbf{x})q(zt1x) 由条件高斯分布(公式20.6)给出。然而,该分布难以直接处理(无法解析求解),因为我们必须对未知的数据分布 p(x)p(\mathbf{x})p(x) 进行积分。如果我们使用训练数据集中的样本对积分进行近似,则会得到一个复杂的分布,该分布可表示为高斯混合分布。

相反,我们考虑反向分布的条件版本,即在给定数据向量 x\mathbf{x}x 的条件下,定义为 q(zt−1∣zt,x)q(z_{t-1}|z_t, \mathbf{x})q(zt1zt,x) 的分布。我们很快将会看到,该分布实际上是一个简单的高斯分布。从直觉上看,这是合理的:因为给定一张含噪图像时,很难推测出是哪张低噪声图像生成了它;而如果我们还知道原始(起始)图像,那么问题就会变得简单得多。我们可以利用贝叶斯定理来计算这个条件分布:

在这里插入图片描述

现在,我们利用前向过程的马尔可夫性质来进行推导(ztz_tzt只和前一时刻zt−1z{t-1}zt1有关,与x无关)

在这里插入图片描述

其中,等式右侧由(20.4)式给出。作为 zt−1z_{t-1}zt1 的函数,它呈现为二次型的指数形式。(20.13)式分子中的 q(zt−1∣x)q(z_{t-1}|\mathbf{x})q(zt1x) 项是由(20.6)式给出的扩散核,它同样涉及关于 zt−1z_{t-1}zt1 的二次型指数。由于(20.13)式的分母作为 zt−1z_{t-1}zt1 的函数是常数,我们可以忽略它。因此,我们看到(20.13)式的右侧呈现为高斯分布的形式,并且我们可以使用“配方法”来确定其均值和协方差,具体如下:

在这里插入图片描述
上述条件分布的转化,化简解释秘籍——》宝典

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/91285.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/91285.shtml
英文地址,请注明出处:http://en.pswp.cn/web/91285.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring全局异常处理最佳实践

全局异常处理器详解 什么是全局异常处理器&#xff1f; 全局异常处理器是Spring框架提供的统一异常处理机制&#xff0c;用于集中处理应用程序中所有控制器&#xff08;Controller&#xff09;层抛出的异常。它的核心价值在于&#xff1a; 统一异常处理&#xff1a;避免在每个C…

STL学习(十一、常用的算数算法和集合算法)

目录 一、常用的算数算法 1.accmulate 2.fill 二、常用的集合算法 1.set_intersection 2.set_union 3.set_difference 一、常用的算数算法 包含头文件为<numeric> 1.accmulate 函数原型 accmulate(iterator beg, iterator end, value) // 计算元素累计和 // …

DeepSort 算法分析详解

DeepSort 算法分析详解 DeepSort 简介 DeepSort (Deep Learning Sort) 是一种基于深度学习的多目标跟踪算法&#xff0c;由 Wojke 等人于 2017 年提出。它是对传统 Sort (Simple Online and Realtime Tracking) 算法的改进&#xff0c;通过引入深度特征提取网络来增强目标关联的…

基于深度学习的医学图像分析:使用Capsule Networks实现医学图像分类

前言 医学图像分析是计算机视觉领域中的一个重要应用&#xff0c;特别是在医学图像分类任务中&#xff0c;深度学习技术已经取得了显著的进展。医学图像分类是指将医学图像分配到预定义的类别中&#xff0c;这对于疾病的早期诊断和治疗具有重要意义。近年来&#xff0c;Capsule…

G9打卡——ACGAN

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.导入库及参数 import argparse import os import numpy as npimport torchvision.transforms as transforms from torchvision.utils import save_imagefrom…

应用war/jar包是用TongWeb企业版,还是嵌入版?

在判断应用应该采用TongWeb哪个版本时&#xff0c;存在一种错误的观点&#xff1a;如果应用包是jar包&#xff0c;则需要采用TongWeb嵌入版&#xff1b;如果应用包是war包&#xff0c;则需要采用TongWeb企业版。 正确的判断方法&#xff1a;1. 首先应用为jar包&#xff0c;且符…

Linux ARM 平台 C 语言操作 Excel 文件的常用库与工具汇总(支持 xls 和 xlsx)

在 Linux 或嵌入式 ARM 平台开发中&#xff0c;使用 C 语言操作 Excel 文件是一项常见需求&#xff0c;特别是在工业设备数据采集、日志导出、报表生成等场景。Excel 文件格式复杂&#xff0c;手工解析成本高&#xff0c;因此使用现成的库可以极大简化开发工作。 本文整理了若…

Apache Ignite 集群标识(Cluster ID)和集群标签(Cluster Tag)

这是一个关于 Apache Ignite 集群标识&#xff08;Cluster ID&#xff09;和集群标签&#xff08;Cluster Tag&#xff09; 的重要配置概念。我们来一步步深入理解这段文档的含义&#xff0c;并结合实际场景说明其用途。&#x1f9e9; 一、核心概念&#xff1a;Cluster ID 与 C…

基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(三)

目录 三、Impala OLAP 实例 1. 建立 olap 库、表、视图 2. 初始装载数据 3. 修改销售订单定期装载脚本 4. 定义 OLAP 需求 5. 执行 OLAP 查询 三、Impala OLAP 实例 本节使用前面销售订单的例子说明如何使用 Impala 做 OLAP 类型的查询&#xff0c;以及实际遇到的问题及解…

如何不让android studio自动换行

一、关闭逗号后自动换行设置 打开设置界面 进入 File → Settings &#xff08;Windows/Linux&#xff09;或 Preferences &#xff08;macOS&#xff09;。 导航至 Editor → Code Style → 选择语言&#xff08;如 Java 或 Kotlin &#xff09;。 二、修改换行规则…

Jenkinsfile 报错

Started by user 六件套Obtained Jenkinsfile from git https://gitee.com/duoshuijiao/vitepress-jenkins-cicd-demoorg.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:WorkflowScript: 28: Expected a step line 28, column 66.fingerprint:…

工业一体机全封闭抗干扰赋能自动化产线高效作业

在自动化产线智能设备等工业场景中&#xff0c;工业一体机的应用面临多重挑战&#xff1a;高温、粉尘、电磁干扰等恶劣环境易导致设备误操作&#xff0c;传统工控机平均无故障时间不足4000小时&#xff1b;封闭车间散热效率低下&#xff0c;风扇散热失效风险增加&#xff0c;产…

鸿蒙NEXT开发笔记(二十八)仿抖音快手App的把位图数据转存为图片

上一节我们利用Scroller实现了列表项的自动滚动功能&#xff0c;对于图像列表来说&#xff0c;被选做封面的图像需要保存为图片文件&#xff0c;以便向服务器上传封面图片。 由于avImageGenerator从视频提取的图像帧数据为image.PixelMap&#xff08;位图格式&#xff09;&…

四、搭建springCloudAlibaba2021.1版本分布式微服务-加入openFeign远程调用和sentinel流量控制

OpenFeign远程调用 1、OpenFeign OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign&#xff0c;可以做到使用HTTP请求访问远程服务&#xff0c;就像调用本地方法一样的&#xff0c;开发者完全感知不到这是在调用远程方法&#xff0c;更感知不到在访问…

网络安全威胁——APT攻击_apt攻击预测案例

APT攻击 1. 基本概念2. APT的攻击阶段3. APT的典型案例参考 1. 基本概念 高级持续性威胁&#xff08;APT&#xff0c;Advanced Persistent Threat&#xff09;&#xff0c;又叫高级长期威胁&#xff0c;是一种复杂的、持续的网络攻击&#xff0c;包含高级、长期、威胁三个要…

顺时针旋转N * N 的矩阵

顺时针旋转题目描述数据范围实现逻辑代码实现题目描述 有一个NxN整数矩阵&#xff0c;请编写一个算法&#xff0c;将矩阵顺时针旋转90度。给定一个NxN的矩阵&#xff0c;和矩阵的阶数N,请返回旋转后的NxN矩阵。数据范围 0<n<300&#xff0c;矩阵中的值满足 0≤val≤100…

原生C++实现信号与槽机制:原理详解

信号与槽机制是一种广泛应用于事件驱动系统和GUI框架&#xff08;如Qt&#xff09;的设计模式。它允许组件之间通过订阅-发布模式进行通信&#xff0c;从而实现松耦合的设计。本文将详细讲解如何在原生C中从零开始实现信号与槽机制&#xff0c;并深入探讨其工作原理。一、信号与…

【人工智能】OpenAI的AI代理革命:通向超拟人交互的未来之路

人工智能代理(AI Agent)正引领一场深刻的技术变革,其核心在于赋予AI系统感知、规划、行动和学习的能力,以自主完成复杂任务。OpenAI作为这一领域的先驱,通过其大型语言模型(LLMs)如GPT系列,极大地推动了AI代理的发展,使其在自然语言理解、生成和工具使用方面达到了前所…

Ubuntu虚拟机介绍、命令、安装软件指令(一)

Ubuntu介绍 Ubuntu 是一个基于 Debian 的开源 Linux 操作系统&#xff0c;由 Canonical 公司赞助开发。它是目前全球最流行的 Linux 发行版之一&#xff0c;以其用户友好性、稳定性和强大的社区支持著称。 核心特性 1.免费开源 完全免费使用和分发&#xff0c;遵循 GNU GPL…

企业微信服务商创建第三方应用配置数据回调url和指令回调url的java代码实现

关键区别说明&#xff08;指令回调 vs 数据回调&#xff09;特性指令回调数据回调触发场景授权/取消授权等管理事件通讯录变更、应用菜单点击等业务事件关键字段InfoTypeEvent ChangeType典型事件suite_auth, cancel_authchange_contact, suite_ticket响应要求必须返回加密的&…