《昇思25天学习打卡营第19天|Diffusion扩散模型》

什么是Diffusion Model? 什么是Diffusion Model? ¶

如果将Diffusion与其他生成模型(如Normalizing Flows、GAN或VAE)进行比较,它并没有那么复杂,它们都将噪声从一些简单分布转换为数据样本,Diffusion也是从纯噪声开始通过一个神经网络学习逐步去噪,最终得到一个实际图像。 Diffusion对于图像的处理包括以下两个过程:

  • 我们选择的固定(或预定义)正向扩散过程 𝑞𝑞 :它逐渐将高斯噪声添加到图像中,直到最终得到纯噪声

  • 一个学习的反向去噪的扩散过程 𝑝𝜃𝑝𝜃 :通过训练神经网络从纯噪声开始逐渐对图像去噪,直到最终得到一个实际的图像

Image-2

由 𝑡𝑡 索引的正向和反向过程都发生在某些有限时间步长 𝑇𝑇(DDPM作者使用 𝑇=1000𝑇=1000)内。从𝑡=0𝑡=0开始,在数据分布中采样真实图像 𝐱0𝑥0(本文使用一张来自ImageNet的猫图像形象的展示了diffusion正向添加噪声的过程),正向过程在每个时间步长 𝑡𝑡 都从高斯分布中采样一些噪声,再添加到上一个时刻的图像中。假定给定一个足够大的 𝑇𝑇 和一个在每个时间步长添加噪声的良好时间表,您最终会在 𝑡=𝑇𝑡=𝑇 通过渐进的过程得到所谓的各向同性的高斯分布。

Diffusion 前向过程
  • 这个过程逐步将数据添加噪声,直到最终数据变成纯噪声。具体地,给定一个初始数据分布 q(x0)q(\mathbf{x}_0)q(x0​),我们通过一系列马尔可夫链来生成一个噪声序列 x1,x2,…,xT\mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_Tx1​,x2​,…,xT​,使得每一步 xt+1\mathbf{x}_{t+1}xt+1​ 都是在 xt\mathbf{x}_txt​ 的基础上添加了一定的噪声。

  • 这个过程的转移概率可以表示为:

    q(xt+1∣xt)=N(xt+1;1−βtxt,βtI)q(\mathbf{x}_{t+1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t+1}; \sqrt{1-\beta_t}\mathbf{x}_t, \beta_t\mathbf{I})q(xt+1​∣xt​)=N(xt+1​;1−βt​​xt​,βt​I)

    其中, βt\beta_tβt​ 是一个逐渐增加的噪声系数。

    具体过程如下:

  • 初始化数据

    • 给定一组数据样本 x0\mathbf{x}_0x0​(例如,图像)。
  • 逐步添加噪声

    • 对于每一步 t=1,2,…,Tt = 1, 2, \ldots, Tt=1,2,…,T,按照以下方式添加噪声: q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)q(\mathbf{x}_t | \mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1-\beta_t}\mathbf{x}_{t-1}, \beta_t\mathbf{I})q(xt​∣xt−1​)=N(xt​;1−βt​​xt−1​,βt​I)
    • 这里, βt\beta_tβt​ 是噪声的方差,通常设置为一组递增的值,如线性递增或余弦递增。
  • 从初始数据到纯噪声

    • 经过多次添加噪声(例如,经过 T 步),最终数据 xT\mathbf{x}_TxT​ 将接近于纯噪声分布。
Diffusion 逆向过程
  • 这个过程从纯噪声数据开始,逐步去噪声以生成新的数据样本。我们希望学习一个模型 pθ(xt−1∣xt)p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)pθ​(xt−1​∣xt​) 来近似逆转正向过程,即从 xT\mathbf{x}_TxT​ 开始逐步去噪,得到 x0\mathbf{x}_0x0​。

  • 反向过程的转移概率为:

    pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \mu_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t))pθ​(xt−1​∣xt​)=N(xt−1​;μθ​(xt​,t),Σθ​(xt​,t))

    其中, μθ\mu_\thetaμθ​ 和 Σθ\Sigma_\thetaΣθ​ 是需要通过模型训练得到的参数。

  • 初始化噪声

    • 从一个标准正态分布中采样初始噪声 xT\mathbf{x}_TxT​(例如,图像中的每个像素都是从 N(0,1)\mathcal{N}(0, 1)N(0,1) 中采样的值)。
  • 逐步去噪声

    • 对于每一步 t=T,T−1,…,1t = T, T-1, \ldots, 1t=T,T−1,…,1,根据以下公式去噪声: pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))p_\theta(\mathbf{x}_{t-1} | \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \mu_\theta(\mathbf{x}_t, t), \Sigma_\theta(\mathbf{x}_t, t))pθ​(xt−1​∣xt​)=N(xt−1​;μθ​(xt​,t),Σθ​(xt​,t))
    • 其中, μθ(xt,t)\mu_\theta(\mathbf{x}_t, t)μθ​(xt​,t) 和 Σθ(xt,t)\Sigma_\theta(\mathbf{x}_t, t)Σθ​(xt​,t) 是模型参数,需通过训练来学习。
  • 生成新数据

    • 最终得到 x0\mathbf{x}_0x0​,即生成的新数据样本。
U-Net神经网络预测噪声

神经网络需要在特定时间步长接收带噪声的图像,并返回预测的噪声。请注意,预测噪声是与输入图像具有相同大小/分辨率的张量。因此,从技术上讲,网络接受并输出相同形状的张量。那么我们可以用什么类型的神经网络来实现呢?

这里通常使用的是非常相似的自动编码器,您可能还记得典型的"深度学习入门"教程。自动编码器在编码器和解码器之间有一个所谓的"bottleneck"层。编码器首先将图像编码为一个称为"bottleneck"的较小的隐藏表示,然后解码器将该隐藏表示解码回实际图像。这迫使网络只保留bottleneck层中最重要的信息。

在模型结构方面,DDPM的作者选择了U-Net,出自(Ronneberger et al.,2015)(当时,它在医学图像分割方面取得了最先进的结果)。这个网络就像任何自动编码器一样,在中间由一个bottleneck组成,确保网络只学习最重要的信息。重要的是,它在编码器和解码器之间引入了残差连接,极大地改善了梯度流(灵感来自于(He et al., 2015))。

Image-4

可以看出,U-Net模型首先对输入进行下采样(即,在空间分辨率方面使输入更小),之后执行上采样。

训练过程

训练扩散模型的目标是学习到反向扩散过程的参数,使其能够准确地将噪声转化为数据。具体步骤包括:

  1. 变分推断(Variational Inference)

    • 通过变分推断最小化正向过程和反向过程之间的差异。定义损失函数为: L(θ)=Eq(x0:T)[∑t=1TDKL(q(xt−1∣xt,x0)∣∣pθ(xt−1∣xt))]L(\theta) = \mathbb{E}_{q(\mathbf{x}_{0:T})} \left[ \sum_{t=1}^T D_{KL}(q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) || p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t)) \right]L(θ)=Eq(x0:T​)​[t=1∑T​DKL​(q(xt−1​∣xt​,x0​)∣∣pθ​(xt−1​∣xt​))]
      其中, DKLD_{KL}DKL​ 表示 Kullback-Leibler 散度,用于衡量两个概率分布之间的差异。
  2. 参数优化

    • 使用梯度下降法更新模型参数 θ\thetaθ,使其能够更好地近似逆向过程。

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

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

相关文章

共建特色基地 协同互促育人

作为芯片和集成电路、人工智能、智能网联车等临港重点产业布局的知识密集型相关企业,核心技术人才和技术骨干是公司参与全球竞争的重要核心竞争力之一。 知从科技通过不断的创新和规范,在深化产教融合、校企合作、“双师型”、联合办学协同育人、产业人…

git回退分支版本git reset --hard HEAD

git回退分支版本git reset --hard HEAD git reset --hard HEAD 上面命令清除本地所有修改,与下面相似: git reset --hard origin/master 等同于: git reset --hard HEAD~0 说明: HEAD 当前版本 HEAD^ 上一个版本 HEAD^^ 上上…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓:先描述,再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下: 输入设备&a…

支付宝低代码搭建电商小程序,无需编程,可视化操作

大家好,我是小悟 在数字化浪潮的推动下,为了更快速、高效地搭建电商小程序,支付宝低代码平台凭借其独特优势,为商家提供了便捷的解决方案。 支付宝低代码平台犹如一座精心打造的智慧工坊,让电商小程序的搭建变得轻而易…

Excel办公技巧:制作二级联动下拉菜单

分享制作二级联动下拉菜单的方法,即使数据有增删,菜单也能自动更新! 可以通过先定义名称,再结合数据验证,来做二级联动下拉菜单。 1. 准备数据 首先,我们需要准备好要进行二级联动下拉菜单的数据&#xff…

在 Linux 系统中安装MySQL 8.x(Ubuntu和CentOS)

文章目录 0. 前言1. 查看 Linux 的发行版本2. 在 Ubuntu 中安装MySQL 8.x2.1 更新包索引2.1.1 更改 Ubuntu 的镜像源2.1.2 更新软件包、升级软件包(耗时可能较长)2.1.3 可能遇到的问题 2.2 安装MySQL2.3 安全配置2.3.1 密码安全级别2.3.2 删除匿名用户2.…

6.Dockerfile及Dockerfile常用指令

Dockerfile是构建docker镜像的脚本文件 Dockerfile有很多的指令构成,指令由上到下依次运行。 每一条指令就是一层镜像,层越多,体积就越大,启动速度也越慢 井号开头的行是注释行。指令写大写写小写都行,但一般都写为…

介绍 Elasticsearch 中的 Learning to Tank - 学习排名

作者:来自 Elastic Aurlien Foucret 从 Elasticsearch 8.13 开始,我们提供了原生集成到 Elasticsearch 中的学习排名 (learning to rank - LTR) 实现。LTR 使用经过训练的机器学习 (ML) 模型为你的搜索引擎构建排名功能。通常,该模型用作第二…

nginx代理缓存

在服务器架构中,反向代理服务器除了能够起到反向代理的作用之外,还可以缓存一些资源,加速客户端访问,nginx的ngx_http_proxy_module模块不仅包含了反向代理的功能还包含了缓存功能。 1、定义代理缓存规则 参数详解: p…

减分虎-交管12123学习题目及答案

学法减分是对驾驶证已经存在的记分进行减免,并不是给驾驶证进行加分,不是代替违章扣分。学法免费获取的分值正是对扣分记录的清除。比如违章被扣6分,通过学法免分考试把6分清空重新开始。 学法减分政策为驾驶员提供了一次难得的加分机会。然而…

WordPress 6.6 “Dorsey多尔西”发布

WordPress 6.6 “Dorsey多尔西”已经发布,它以传奇的美国大乐队领袖 Tommy Dorsey 名字命名。Dorsey 以其音调流畅的长号和作品而闻名,他的音乐以其情感深度和充满活力的能量吸引了观众。 当您探索 WordPress 6.6 的新功能和增强功能时,让您的…

MBR40150FCT-ASEMI无人机专用MBR40150FCT

编辑:ll MBR40150FCT-ASEMI无人机专用MBR40150FCT 型号:MBR40150FCT 品牌:ASEMI 封装:TO-220F 批号:最新 最大平均正向电流(IF):40A 最大循环峰值反向电压(VRRM&a…

部署kafkamanager

1,检查kafka的版本 到lib下查看 libs/kafka-clients-0.11.0.3.jar kafka的版本 0.11 2,下载kafkamanager 链接: https://pan.baidu.com/s/1qYifoa4 密码:el4o 3,解压后更改该conf下conf/application.conf 中zkhosts …

论文翻译 | Successive Prompting for Decomposing Complex Questions 分解复杂问题的连续提示

摘要 回答需要做出潜在决策的复杂问题是一项具有挑战性的任务,尤其是在监督有限的情况下。 最近的研究利用大型语言模型(LMs)的能力,在少量样本设置中通过展示如何在单次处理复杂问题的同时输出中间推理过程,来执行复杂…

2024年金航标和萨科微扩张

近年电子信息产业链的外迁和世界经济的低迷,各行各业都很卷,加班加点但业绩负增长是常态,互联网大厂阿里巴巴大裁员、字节跳动裁到了大动脉、京东刘强东抛弃躺平的兄弟、深圳华强北做电子元器件的老板老板娘们一脸茫然,周围都弥漫…

2024华为数通HCIP-datacom最新题库(变题更新⑥)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

CSI-2介绍

CSI-2介绍 1.CSI-2是什么2.CSI-2功能简述3.分层传输3.1应用层(Application Layer)3.2协议层(Protocol Layer)3.3物理层(PHY Layer) 4.支持传输数据类型5.版本5.1、CSI-2 1.05.2、CSI-2 2.0 6.框图6.1CSI2&a…

【手写数据库内核组件】0501多线程并发模型,任务分发多工作者执行架构实现,多线程读写状态时volatile存储类型使用技巧

0501 多线程管理 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 文章目录 0501 多…

深入理解PostgreSql域类型(Domain),灵活定义数据约束,让表结构设计更加严谨

在PostgreSQL中,域(Domain)是一种用户定义的数据类型,它基于系统内已存在的数据类型,并可以附加约束条件。使用域可以增强数据的完整性和一致性,因为它允许开发者对特定列设定更为具体的规则,比…

LeetCode 链表OJ题

1.消失的数字 题目信息及链接:面试题 17.04. 消失的数字 - 力扣(LeetCode) 分析: 首先我们看到题目给予了我们一个数组,要求我们找到消失的数字,这个消失的数字指的是所给我们的数组中排序后少掉的数字&…