【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs
【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs
- Introduction
- 方法
- 使用传统GANS建模去噪分布
- 理解模式覆盖率
Paper:https://arxiv.org/abs/2112.07804
Code:https://github.com/NVlabs/denoising-diffusion-gan
Authors:Nvlabs, Zhisheng Xiao, Karsten Kreis, Arash Vahdat
Introduction

主流生成模型(Generative Models)的优缺点以及它们在三个关键目标上的表现:高质量样本生成、模式覆盖和多样性、快速采样。
在本文中,我们通过重新制定去噪扩散模型来解决生成学习三引理,专门用于快速采样,同时保持强大的模式覆盖率和样本质量。
- 扩散模型通常假设去噪分布可以近似为高斯分布。然而,众所周知,高斯假设仅在小去噪步骤的无穷小极限中成立,这导致在反向过程中需要大量的步骤。
- 当反向过程使用更大的步长(即去噪步骤更少)时,需要一个非高斯多模态分布来建模去噪分布。直观地说,在图像合成中,多模态分布源于多个似是而非的干净图像可能对应于相同的噪声图像这一事实。
受这一观察的启发,我们建议使用富有表现力的多模态分布参数化去噪分布,以实现大步骤的去噪。特别是,我们引入了一种新的生成模型,称为去噪扩散 GAN,其中去噪分布用条件 GAN 建模。
在图像生成中,我们观察到我们的模型获得了与扩散模型竞争的样本质量和模式覆盖率,同时只需要两个去噪步骤,与Song等人(2021c)在CIFAR-10上的预测器校正器采样相比,采样速度提高了约2000倍。与传统的GANs相比,我们表明我们的模型在样本多样性方面明显优于最先进的GANs,同时在样本保真度方面具有竞争力。
总之,我们做出了以下贡献:
- 我们将扩散模型的缓慢采样归因于去噪分布中的高斯假设,并提出采用复杂的多模态去噪分布。
- 我们提出了去噪扩散 GAN,这是一种扩散模型,其反向过程由条件 GAN 参数化。
- 通过仔细评估,我们证明了去噪扩散 GAN 与当前的图像生成和编辑扩散模型相比实现了几个数量级的加速。我们表明,我们的模型在很大程度上克服了深度学习三引理,使得扩散模型首次以较低的计算成本适用于交互式的现实世界应用程序。
方法
扩散模型文献中的一个常见假设是用高斯分布近似 q ( x t − 1 ∣ x t ) q(x_{t−1}|x_t) q(xt−1∣xt)。在这里,我们质疑这种近似何时是准确的。
LSGM尝试使用 VAE 将数据编码到高斯分布,但仍然需要数百或数十步,而且数据分布压缩到高斯分布是十分困难的。
在本文中,我们认为当不满足任何条件时,即当去噪步长较大且数据分布为非高斯时,不能保证去噪分布的高斯假设成立。为了说明这一点,在图 2 中,我们可视化了多模态数据分布的不同去噪步长的真实去噪分布。我们看到,随着去噪步骤变大,真正的去噪分布变得更加复杂和多模态。

上图:一维数据分布 q(x0) 通过扩散过程的演变。底部:以固定的x5为条件的不同步长的真实去噪分布的可视化。**小步长(即q(x4|x5 = X))的真实去噪分布接近于高斯分布。**然而,随着步长的增加,它变得更加复杂和多模态。
使用传统GANS建模去噪分布
我们的目标是减少扩散模型反向过程中所需的去噪扩散步骤T的数量。受上述观察的启发,我们建议对去噪分布进行建模具有表现力的多模态分布。由于条件 GAN 已被证明可以对图像域的复杂条件分布进行建模(Mirza & Osindero,2014;Ledig 等人,2017;Isola 等人,2017),我们采用它们来近似真实去噪分布 q(xt−1|xt)。
具体来说,我们的正向扩散的设置类似于Eq. 1中的扩散模型,主要假设T很小(T≤8),每个扩散步长βt较大。我们的训练是通过使用对抗性损失匹配条件 GAN 生成器 pθ (xt−1|xt) 和 q(xt−1|xt) 来制定的,该对抗性损失最小化每个去噪步骤的散度 Dadv:


简而言之:
给定x0,前向加噪过程为 xt-1 到 xt;在扩散模型 xt 的基础上预测 x’0,随后将其加噪成 x’t-1;然后以 xt、xt-1(或 x’t-1)和 t 为条件输入到判别器网络中进行对抗性训练。
我们模型的一个自然问题是,为什么不仅仅是训练一个 GAN,它可以使用传统的设置一次性生成样本,而我们的模型通过迭代去噪生成样本。我们的模型比传统的 GAN 有几个优点。众所周知,GAN 存在训练不稳定和模式崩溃的问题(Kodali 等人,2017;Salimans 等人,2016),一些可能的原因包括难以直接从一次性的复杂分布中采样,以及鉴别器仅查看干净样本时的过拟合问题。相比之下,由于对 xt 的强条件作用,我们的模型将生成过程分解为几个条件去噪扩散步骤,其中每个步骤对模型相对简单。此外,**扩散过程平滑了数据分布(Lyu, 2012),使鉴别器不太可能过拟合。**因此,我们希望我们的模型表现出更好的训练稳定性和模式覆盖率。我们在第 5 节中凭经验验证了传统 GAN 的优势。
理解模式覆盖率

生成模型的结果是否可以 cover Real samples。
相关文章:
【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs
【论文阅读笔记】Tackling the Generative Learning Trilemma with Denoising Diffusion GANs Introduction方法 使用传统GANS建模去噪分布理解模式覆盖率 Paper:https://arxiv.org/abs/2112.07804 Code:https://github.com/NVlabs/denoising-diffusion-…...
常见 HTTP 状态码详解与Nginx 文件上传大小限制
在我们日常使用 Nginx 搭建网站或应用服务时,可能会遇到很多与文件上传和请求响应相关的问题。今天我们就来聊聊 如何限制文件上传的大小,并介绍一些常见的 HTTP 状态码 及其在 Nginx 中的处理方式。 一、文件上传大小限制 有时,我们需要限…...
在mac中使用numbers对数据进行分列(更详细的回答,已解决)
不想看我废话的同学直接看 “ 二、真正的方法 ” 不是抄袭不是抄袭,目前我能检索到的关于number分列的只有两篇回答,但我觉得有待补充,如果看不懂另外的回答,可以来看我的 这么问我猜大概率是Windows转macOS用户,不是…...
网格参数的应用和数学基础
引言 对于任意两个拓扑结构相似的表面,可以计算它们之间的一一对应映射。如果其中一个表面由三角形网格表示,那么计算这种映射的问题被称为网格参数化。映射到的表面通常被称为参数域。表面网格与各种域之间的参数化在计算机图形学和几何处理中有广泛的应…...
【Go】-基于Gin和GORM的小清单项目
目录 项目介绍 简介 技术 项目结构 项目分析 总结 项目介绍 简介 项目地址:knoci/list: 基于Gin的待办清单小项目 (github.com) 一个仿照github/Q1mi/bubble 做的一个gin框架练习 技术 gin 框架gorm 操作PostgreSQLini 配置文件 项目结构 list ├── R…...
【银河麒麟高级服务器操作系统】虚拟机服务器执行systemctl提示timeout——分析全过程及处理建议
了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer.kylinos.cn 文档中心:https://documentkylinos.cn 现象描述 产品信息 产品名称 银河麒麟高级服务…...
【Unity错误】No cloud project ID was found by the Analytics SDK
在编译默认的URP 2D项目时,出现这样一个错误:No cloud project ID was found by the Analytics SDK. This means Analytics events will not be sent. Please make sure to link your cloud project in the Unity editor to fix this problem. 原因&…...
2. 变量和指令(omron 机器自动化控制器)——1
机器自动化控制器——第二章 变量和指令 1 2-1 变量一览表MC通用变量轴变量▶ 轴组变量 运动控制指令的输入变量输入变量的有效范围▶ 枚举体一览表 运动控制指令的输出变量运动控制指令的输入输出变量 2-1 变量一览表 MC功能模块使用的变量分为两类。 一类是监视轴等的状态及…...
gpt4最新保姆级教程
如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布,最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型:Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus,每个模型都展现了卓越的性能与特色。其中&a…...
Java:继承和多态(1)
在 Java SE 中,继承和多态是面向对象编程(OOP)的两个核心概念。通过继承,子类可以复用父类的代码;而通过多态,子类可以在不修改父类的前提下定义自己的行为。这两者结合起来使得代码更具扩展性、灵活性和可…...
在RabbitMQ中四种常见的消息路由模式
1. Fanout模式 Fanout模式的交换机是扇出交换机(Fanout Exchange),它会将消息广播给所有绑定到它的队列,而不考虑消息的内容或路由键。 工作原理: 生产者发送消息到Fanout Exchange。Fanout Exchange会将消息广播给…...
Android 使用JSON动画:Lottie框架基本使用
Lottie是什么? GitHub的一种跨平台动画解决方案三方框架 使用? 3步 1.引入最新的依赖:https://github.com/airbnb/lottie-android 我写文章时最新版本是6.5.2 添加到 app/build.gradle 文件的以下方法中dependencies {//lottie 动画implementation com.airbnb.android:l…...
【SQL】百题计划 - SQL最基本的判断和查询。
[SQL]百题计划 Select product_id from Products where low_fats "Y" and recyclable "Y";...
C++学习笔记----6、内存管理(五)---- 智能指针(2)
书接上回! make_unique()使用值初始化。例如,将初始类型初始化为0,对象为缺省构造。如果不需要这样的值初始化,例如,因为不管怎么样你都会覆写共初始值,你就可以省略值初始化,通过使用make_uniq…...
游戏出海迎新变局——海外游戏市场有哪些新趋势和新机遇?
游戏出海的热度越来越高,也面临着竞争加剧、门槛提升、成本增加的现实环境,游戏出海有哪些新变化和新趋势? 移动游戏出海的主要海外市场 在海外市场分布方面,美日韩仍然是我国移动游戏重要的海外市场,占据了中国出海…...
【Unity踩坑】创建新项目后提示编译错误要进入安全模式
在创建了新项目后(比如URP,AR,VR),首次打开时提示有编译错误,要进入安全模式。 脚本是项目模板自带的,不会有问题。这时需要先选择进入安全模式,然后关闭项目,重新打开就…...
SpringBoot开发——整合Logbook进行HTTP API请求响应日志输出
文章目录 1. 简介依赖管理2. 实战案例2.1 基本用法2.2 结合Logback日志记录到文件2.3 自定义核心类Logbook2.4 自定义日志输出Sink2.5 与RestTemplate集成1. 简介 记录HTTP API请求响应日志对于监控、调试和性能优化至关重要。它帮助开发者追踪API的使用情况,包括请求来源、参…...
【嵌入式开发 Linux 常用命令系列 7.1 -- git log 只显示日期和主题(title)和commit id】
文章目录 git log 只显示日期和主题(title)和commit id示例其他日期格式选项 git log 只显示日期和主题(title)和commit id 要使用 git log 仅显示提交的日期、提交消息(title)和提交号(commit hash),你可以使用自定义…...
Android Radio2.0——交通公告状态设置(二)
通过前面的学习,我们知道在 Radio 广播中,交通公告(Traffic Announcement, TA)是一个比较重要的概念,它和交通广播(Traffic Radio)是相关的概念,但它们并不完全相同。 一、简介 1、概念介绍 交通公告 定义:交通公告是指在广播中插入的特别信息,通常是关于交通状况…...
用centos安装远程迅雷失败,重写程序做一台下载服务器
安装远程迅雷的时候,要不是安装包地址过期,就是出现64不兼容32的libz.so.1的包,而且32位的libz包也是好多网站过期。 没办法用仅有的python3,用flask搭建了一个小型的内网下载服务器,当然,只要路由器做映射…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
