(2024|ICLR,变分扩散模型(VDM),可学习编码器,时间相关的均值函数)DiffEnc:使用学到的编码器进行变分扩散

news2024/11/15 23:57:14

DiffEnc: Variational Diffusion with a Learned Encoder

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

2. 变分扩散模型的基础

3. DiffEnc

4. 编码器和生成模型的参数化

5. 实验

7. 限制和未来工作

8. 结论


0. 摘要

扩散模型可以被视为具有两个改进的分层变分自动编码器(VAE):

  • 在生成过程中参数共享的条件分布
  • 在层次结构上独立计算损失的有效性

我们考虑对扩散模型进行两项改变,保留这些优势的同时增加了模型的灵活性。

  • 首先,我们在扩散过程中引入了一个与数据和深度相关的均值函数,这导致了修改后的扩散损失。我们提出的框架 DiffEnc,在CIFAR-10上实现了显著的似然改进。
  • 其次,我们让逆编码器过程(reverse encoder process)的噪声方差与生成过程的噪声方差之比成为一个自由权重参数,而不是固定为 1。

这导致了理论上的洞察:

  • 对于有限深度的层次结构,证据下界(ELBO)可以用作加权扩散损失方法的目标,并且可以用于专门用于推理的噪声时间表的优化。
  • 对于无限深度的层次结构,权重参数必须为 1 才能具有良好定义的 ELBO。

项目页面:https://github.com/bemigini/DiffEnc 

2. 变分扩散模型的基础

我们从介绍扩散模型的 VDM 公式(Kingma等人,2021)开始。我们定义了一个具有 T+1 层潜变量的分层生成模型:

其中,x∈X 是一个数据点,θ 是模型参数,s(i)= (i−1)/T​,t(i)=i/T,并且 p(z1​)=N(0,I)。在接下来的内容中,我们将去掉索引 i 并假设 0≤s<t≤1。我们定义了一个扩散过程 q 的边缘分布:

其中 t∈[0,1] 是时间索引,αt​ 和 σt​ 是 t 的正标量函数。要求等式(2)对任意的 s 和 t 都成立,条件化为:

利用贝叶斯规则,我们可以逆转扩散过程的方向:

我们现在可以用与公式(1)相同的函数形式表达扩散过程:

并且我们可以定义与公式(3)相同的生成过程的一步:

其中 ^xθ​ 是具有参数 θ 的学到的模型。在扩散模型中,去噪方差 σ^2_P 通常选择与逆扩散过程的方差相等:σ^2_P​=σ^2_Q。虽然最初我们不做出这个假设,但我们将证明在连续时间限制下这是最优的。根据 VDM,我们通过信噪比(SNR)来参数化噪声时间表:

以及它的对数:λt​≡logSNR(t)。我们将在所有实验中使用方差保持(VP)的公式:

上述模型的证据下界(ELBO)是:

损失函数 L ≡ -ELBO 是重构(L0)、扩散(LT)和潜在(L1)损失的总和:

其中,L0 和 L1 的表达式在附录 D 中推导得到。由于生成和逆向噪声过程的匹配因子分解方式(见公式(1)和(5)),以及由于 q 是马尔可夫和高斯的,因此扩散损失 LT 可以写成对随机变量层的求和或期望:  

其中,U{1, T} 是 1 到 T 的均匀分布。由于所有分布都是高斯的,KL 散度有一个封闭形式的表达式(见附录 E):

其中,绿色部分是使用 σ^2_P ≠ σ^2_Q 而不是 σ^2_P = σ^2_Q​ 的差异,我们定义了权重函数  

并且 σ^2_(Q ,t) 和 σ^2_(P ,t)​ 对 s 的依赖性被隐式地留下,因为步长 t−s= 1/T 是固定的。最优生成方差可以通过封闭形式计算(见附录 F):

3. DiffEnc

DiffEnc 的主要组成部分是时间依赖的编码器,我们将其定义为 xt ​≡ x_ϕ(λt​),其中 xϕ(λt​) 是某个具有参数 ϕ 的函数,通过 λt​ ≡ logSNR(t) 依赖于 x 和 t。然后,公式(2)的广义版本为:

图 1 可视化了扩散过程的这一变化,并在附录 A 中提供了图表。要求过程在边缘化时保持一致,即,

导致以下条件分布(见附录 B):

其中,深度相关编码器引入了一个额外的均值偏移项(蓝色)。与第 2 节类似,我们可以推导出逆过程(见附录 C):

其中,σ^Q_2​ 由公式(4)给出。我们将在第 4 节中展示如何参数化编码器。

无限深度极限。Kingma 等人(2021年)推导了扩散损失的连续时间极限,即当 T → ∞ 时的损失。我们可以将该结果扩展到我们的情况。使用公式(13)中的 μQ​ 和公式(6)中的 μP​,未加权情况下的 KL 散度,即

可以按照附录 G 中所示的方式重写:

其中, 

类似地对于 SNR 也是如此。在附录 G 中,我们还展示了,当 T→∞ 时,最优 σP​ 的表达式趋向于 σQ​,允许 σ^2_P ≠ σ^2_Q 的扩散损失中的额外项趋向于 0。这个结果与先前关于随机过程变分方法的工作(Archambeau等人,2007)一致。我们已经证明,在连续极限中,ELBO 必须是一个未加权损失(即 wt​=1)。在本文的其余部分,我们将使用连续的表述,因此设置 wt​=1。然而,考虑为有限层数优化加权损失是很有趣的,我们将把这留给将来的研究。

扩散损失的无限深度极限,

变为(见附录 G):

因此,L∞​(x) 非常类似于来自 VDM 的标准连续时间扩散损失,尽管具有来自均值偏移项(蓝色)的额外梯度。在第 4 节中,我们将开发一个修改后的生成模型来对抗这个额外项。在附录 H 中,我们推导了描述 DiffEnc 生成模型在无限深度极限下的随机微分方程(SDE)。

4. 编码器和生成模型的参数化

现在我们转向对编码器 xϕ(λt) 的参数化。重构和潜在损失对编码器在潜变量层次结构的两端的行为施加了约束: 我们使用的似然性是这样构造的,在 xϕ(λ0) = x 时,重构损失(在附录 D 中推导)被最小化。同样,潜在损失在 xϕ(λ1) = 0 时被最小化。在两者之间,对于 0 < t < 1,一个非平凡的编码器可以改善扩散损失。

我们提出了编码器的两种相关参数化方法:一个是可训练的,我们将其表示为 x_ϕ,另一个是更简单的、不可训练的,记为 x_nt,其中 nt 表示不可训练。设 yϕ(x, λt) 为一个具有参数 ϕ 的神经网络,为简洁起见,记为 yϕ(λt)。我们将可训练的编码器定义为

不可训练的编码器为

这些参数化的更多动机可以在附录 I 中找到。可训练的编码器 xϕ 被初始化为 yϕ(λt) = 0,因此在训练开始时,它起到不可训练的编码器 x_nt 的作用(但与 VDM 不同,VDM 对应于恒等编码器)。

略。

5. 实验

7. 限制和未来工作

如上所示,添加一个经过训练的时间依赖编码器可以提高扩散模型的似然性,但会增加训练时间。尽管我们的方法不会增加采样时间,但必须注意到采样仍然比生成对抗网络(Goodfellow等人,2014年)等方法显著慢。扩散模型中更高效采样的技术(Watson等人,2021年;Salimans & Ho,2022年;Song等人,2020年;Lu等人,2022年;Berthelot等人,2023年;Luhman & Luhman,2021年;Liu等人,2022年)可以直接应用于我们的方法。

引入可训练的编码器为表示学习开辟了一个有趣的新方向。应该可以将时间依赖的转换提炼出来,以获得图像的较小的时间依赖表示。看到这样的表示能告诉我们关于数据的什么信息将是有趣的。此外,探索是否为编码器添加条件会导致不同类别的图像具有不同的变换也是有趣的。

如 (Theis等人,2015年) 所示,样本的似然性和视觉质量并不直接相关。因此,根据模型被训练优化的指标选择应用是很重要的。由于我们展示了我们的模型在被优化为最大化似然性时可以取得良好的结果,并且在半监督学习的背景下似然性很重要,因此使用这种模型进行半监督设置的分类将是有趣的。

8. 结论

我们提出了 DiffEnc,这是扩散模型的一个泛化,其中包含了一个时间依赖的编码器。DiffEnc 增加了扩散模型的灵活性,同时保持了相同的采样计算要求。此外,我们从理论上推导出了生成过程的最优方差,并证明了在连续时间极限下,它必须等于扩散方差,以使 ELBO 有良好定义。我们将其应用于采样或离散时间训练的调查推迟到未来工作。在实证方面,我们展示了 DiffEnc 可以提高 CIFAR-10 的似然性,并且编码器学习的数据转换与时间步长有非平凡的依赖关系。未来研究的有趣途径包括应用改进扩散模型的方法,这些方法与我们提出的方法正交,如潜在扩散模型、模型提炼、无分类器指导和不同的采样策略。

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

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

相关文章

Linux--地址空间

目录 看一个现象 基本概念 细节问题--理解它 1.如何理解地址空间&#xff1f; 2.为什么要有地址空间&#xff1f; 3. 进一步了解页表和写时拷贝 4.如何理解虚拟地址&#xff1f; 看一个现象 先通过一段代码&#xff0c;看一看现象 int g_val 100;int main() {printf(&quo…

Linux 认识与学习Bash——2

1 read 从键盘读取变量的值 read 后面不带变量&#xff0c;那么默认会给REPLY变量赋值 #!/bin/bash echo -n "请输入你的名字&#xff1a;" read name echo "欢迎您 $name" echo "----------------"echo -n "请输入你的名字2&#xff1a;&q…

我与深拷贝

前言 最近在掘金读到了一篇文章《Radash 能取代 Lodash&#xff1f;&#xff1f;&#xff1f;真幽默 - 掘金》&#xff0c;文章的评论区讨论起了深拷贝。"深拷贝" 我的"老朋友"&#xff0c;还记得在学习我人生中的第二道面试题的时候认识了它&#xff0c;…

CSS 画一个三角形

一、前言 在前端开发的时候&#xff0c;我们有时候会需要用到一个三角形的形状&#xff0c;比如地址选择或者播放器里面播放按钮 通常情况下&#xff0c;我们会使用图片或者svg去完成三角形效果图&#xff0c;但如果单纯使用css如何完成一个三角形呢&#xff1f; 实现过程似…

物理学视角讲解diffusion生成模型——隐扩散模型

https://zhuanlan.zhihu.com/p/692996885 https://zhuanlan.zhihu.com/p/693255617 前面两篇文章介绍了扩散过程&#xff0c;同时实现了1维、2维混合高斯扩散、逆扩散&#xff0c;通过模型预测得分函数来实现逆扩散推理。这个章节介绍工业界使用的文本生成图扩撒模型&#xff1…

基于SSM+Jsp+Mysql的多人命题系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

frp改造Windows笔记本实现家庭版免费内网穿透

文章目录 前言frp原理Windows服务端IP检验IP固定软件下载端口放行端口映射开机启动 NAS客户端端口查询软件下载端口检验穿透测试自启设置 Ubuntu客户端软件下载后台启动 后记 前言 之前一直用花生壳远程控制一个服务器&#xff0c;但最近内网的网络策略似乎发生了变化&#xf…

InfiniGate自研网关实现思路二

5.HTTP请求参数解析 解析 HTTP 网络请求的参数信息&#xff0c;包括&#xff1b;GET/POST&#xff0c;以及应对不同 Content-Type 类型的处理。 HTTP 接口请求的参数需要解析成可以匹配到 RPC 接口的入参信息&#xff0c;所以通常为了方便控制一般只支持 RPC 接口单个对象入参…

「sentinel」流量控制组件的应用

「sentinel」流量控制组件的应用 Sentinel版本QPS 一、初识Sentinel1、Sentinel2、Sentinel 和 Hystrix对比3、雪崩问题 二、环境搭建1、下载安装Sentinel2、微服务整合Sentinel 三、流量控制1、簇点链路2、流控设置3、流控模式直接关联链路 4、流控效果流控效果解释 四、热点限…

C#通用类库封装实战

数据库查询 特性方式获取数据库列的别名 数据库更新 使用简单工厂配置的方式

C++ stl容器stack,queue,priority_queue的底层模拟实现

目录 前言&#xff1a; 文档借鉴&#xff1a;Reference - C Reference 1.deque a.deque的结构特点&#xff1a; b.deque的迭代器结构&#xff1a; c.面试题&#xff1a; 2.stack 3.queue 4.仿函数 5.priority_queue 总结&#xff1a; 前言&#xff1a; 本篇一共简单…

【QT学习】8.qt事件处理机制,事件过滤器,自定义事件

1.qt事件处理机制 事件处理&#xff1a; 当用户移动鼠标的时候 &#xff0c;创建一个 鼠标移动事件对象 然后把这个对象放到 事件队列里面去&#xff0c;事件管理器 从队列中 取出事件&#xff0c;然后 调用其对应的事件处理函数。 多态机制&#xff1a; &#x…

靠谱的婚恋平台有哪些?青藤之恋、二狗、百合网、珍爱网等深度测评

哇塞&#xff0c;恋爱和结婚对于年轻人来讲可是超级重要的大事呢&#xff01;不过呀&#xff0c;找到一个稳稳当当的婚恋平台可不简单哟&#xff01;那么&#xff0c;到底哪个婚恋平台最靠得住呢&#xff1f; 丛丛&#xff1a; 这可是我用了好久好久的脱单交友小程序嘞&#xf…

MySQL中explain的用法

执行结果各字段的含义 EXPLAIN SQL语句 如&#xff1a; EXPLAIN SELECT * FROM test 执行结果&#xff1a; 列名描述id在一个大的查询语句中每个SELECT关键字都对应一个 唯一的idselect_typeSELECT关键字对应的那个查询的类型table表名partitions匹配的分区信息type针对单表…

机器学习预测汽车油耗效率 MPG

流程 数据获取导入需要的包引入文件,查看内容划分训练集和测试集调用模型查看准确率 数据获取 链接&#xff1a;https://pan.baidu.com/s/1KeIJykbcVpsfEk0xjhiICA?pwd30oe 提取码&#xff1a;30oe --来自百度网盘超级会员V1的分享导入需要的包 import pandas as pd imp…

【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Spring Boot】掌握Spring Boot&#xff1a;深入解析配置文件的使用与管理 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 Spring Boot 配置文件一. 配置文…

重新总结一下以前写过的“波特率”!单片机常见的通信速率分析!

文章目录 如题以前文章新的总结如题 波特率是单片机中描述通信速率的一个单位,比如串口通信、SPI通信、IIC通信、LIN通信、CAN通信等等,现在重新总结一下涉及到波特率的一些知识点。 以前文章 上面是存储的单位换算方式 这是通信速率的换算方式 新的总结 波特率的英文是…

画家-qt-surce

void GraphicView::paintEvent(QPaintEvent *pe) { QPainter painter(viewport()); painter.setRenderHint(QPainter::SmoothPixmapTransform);//升级画家 painter.drawImage(rect(),musicImage); } 分析&#xff1a; 这段代码是用于绘制图形视图的部分。 1. void GraphicV…

JavaCard学习笔记: CAP Component 之 Class Component

文章目录 整体结构tag和size字段signature_pool_length和signature_pooltype_descriptor结构导入类型编码导入项签名示例导入类导入数组导入远程方法 interfaces[]interface_info结构flagsinteface_countsuperinterfacesinterface_name class_info_compact classes[]结构flagsi…

mapreduce中的ReduceTask工作机制(Hadoop)

ReduceTask 是 Hadoop 中的一个重要组件&#xff0c;负责对 MapTask 的输出进行合并、排序和归并&#xff0c;最终生成最终的输出结果。 ReduceTask 的工作机制 1. 分组&#xff08;Shuffle&#xff09;阶段&#xff1a; 在分组阶段&#xff0c;ReduceTask 会从多个 Mapper …