(2024,EBGAN,扩散,变分近似)通过扩散过程改进基于能量的对抗模型

Improving Adversarial Energy-Based Model via Diffusion Process

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

目录

0. 摘要

2. 相关工作

3. 去噪扩散对抗 EBM

3.1. 具有去噪扩散过程的对抗 EBM

3.2. 对 pϕ 的最小化

3.3. 相对于 Eθ 的最大化步骤

4. 实验

附录

B.2 网络结构 


0. 摘要

生成模型展示了强大的生成能力,而高效的似然估计却较少探索。基于能量的模型(Energy-based model,EBM)定义了一个灵活的能量函数,以有效地参数化未归一化的密度,但因难以训练而臭名昭著。对抗式 EBM 引入了一个生成器来形成一个最大值最小化的训练游戏,以避免传统 EBM 中使用的昂贵的马尔可夫链蒙特卡罗(Markov chain Monte Carlo,MCMC)采样,但对抗式 EBM 与其他强大的生成模型之间仍存在明显的差距。受扩散模型的启发,我们将 EBM 嵌入到每个去噪步骤中,将一个长时间生成的过程分成几个较小的步骤。此外,我们采用对称的 Jeffrey 散度,并引入一个变分后验分布来训练生成器,以解决对抗式 EBM 中存在的主要挑战。我们的实验显示,与现有的对抗式 EBM 相比,在生成方面取得了显著的改进,同时为高效的密度估计提供了一个有用的能量函数。

2. 相关工作

(2017|ICLR,EBGAN,AE 鉴别器,正则化)基于能量的 GAN 

EBM 在机器学习中有着悠久的历史,可以追溯到 Hopfield 网络(Hopfield, 1982)和 Boltzmann 机器(Hinton & Sejnowski, 1983)。近年来,深度 EBM 在特别是图像生成方面变得越来越受欢迎,可以广泛地分为两类。

  • 基于 MCMC 的方法在训练过程中(Du & Mordatch, 2019; Arbel等,2021)或采样过程中(Song等,2020; Song & Ermon, 2019)模拟马尔可夫链。这可能会很昂贵、慢和难以控制。
  • 协作学习(Cooperative learning)方法(Xie等,2020)联合训练一个自顶向下的生成器和一个用于 MCMC 教学的能量函数,使用生成器作为 Langevin 采样的快速初始化器以减轻 MCMC 的负担。
  • 然而,它们仍然效率低下。

另一类是对抗性 EBM(Zhai等,2016; Geng等,2021; Kumar等,2019; Zhao等,2017),它们引入了一个 “生成器” 来形成能量函数和引入的生成器之间的最大值最小化游戏。Han 等(2019; 2020)和 Kan 等(2022)分别从三角形散度和双层优化问题的角度解释了对抗性 EBM。对抗性EBM 继承了 GAN 的优势并避免了 MCMC 采样,但它们也带来了不稳定训练的风险。

原始的基于扩散的模型(Ho等,2020; Sohl-Dickstein等,2015)从正向过程中学习有限时间的反向扩散,并在图像生成方面表现出很强的性能,但采样过程很慢。一些作品(Song等,2021a; Lu等,2022b; Bao等,2022)改进了无需训练的采样器,并显著提高了从 1000 步采样到仅几步的采样速度。DDGAN(Xiao等,2022)提出使用多模态条件 GAN 模型化每个去噪步骤,解决了快速采样和保持强大的模式覆盖和样本质量之间的生成学习三难问题。然而,它未能提供密度估计,这对许多任务来说至关重要。

尽管一些基于扩散的方法(Kingma等,2021; Song等,2021b; Lu等,2022a)使用分数函数或变分下界来估计数据分布的密度,但这些方法往往复杂且低效,这正是基于能量的模型擅长的地方。DRL(Gao等,2021)试图将 EBM 与基于扩散的模型结合起来,并在几个图像数据集上获得了最先进的生成性能,但它仍依赖于效率低下的 MCMC 采样。

3. 去噪扩散对抗 EBM

基础。令 x ∼ q(x) 为来自潜在数据分布的训练样本。一个 EBM 被指定为一个能量函数 Eθ:X → R,它由参数 θ 参数化,从 Gibbs 分布定义了 X 上的概率分布:

其中 Zθ 是归一化常数(或分区函数)。原则上,对于合适选择的 Eθ,可以用这种方式描述任何密度。我们通过最大似然估计(MLE)来学习 EBM,即我们寻求最大化数据对数似然的 θ*:

训练 EBM 的基本挑战是归一化常数缺乏闭合形式的表达式。解决这个问题的一种常见方法是直接逼近 L(θ) 的梯度,并应用基于梯度的优化:

估计上述方程需要从能量分布 pθ(x) 进行 MCMC 采样,这既不稳定又昂贵。对抗式 EBM(Grathwohl等,2021;Geng等,2021;Han等,2019;Kan等,2022)通过引入一个变分分布pϕ 近似 pθ 来避免 MCMC 。因此,可以形成一个最大值最小化来交替优化两个对抗步骤:

第一步:最小化具有特定合适的散度D 的 D(pϕ, pθ)

第二步: 

这种两步训练策略可以解释为一个双层优化问题(Liu等,2022),其中最小化步骤是一个较低级别(LL)子问题,而最大化步骤则是一个较高级别(UL)子问题。 Geng 等人(2021年)证明了,如果 pϕ 无法被优化,它会有使得上界最大化的风险,与复杂和稀疏数据集中的主流生成模型相比,会出现明显的性能差距。

3.1. 具有去噪扩散过程的对抗 EBM

为了使对抗 EBM 可扩展到复杂的分布,我们借鉴了基于扩散的框架,将生成过程分成多个步骤。对于每一步,我们只需要学习一个条件分布,而不是一个复杂的边缘分布。类似于 DDPM(Ho等,2020),我们还使用了一个马尔可夫链来进行扩散过程。具体而言,对于正向过程,我们使用预定义的方差调度 βt,在 T 步中逐渐向真实数据 x0 ∼ q(x0) 添加噪声: 

然后我们可以得到去噪分布 q(x_(t−1)| xt) = q(x_(t−1))q(xt | x_(t−1))/ q(xt) 作为我们要学习的目标分布。在基于扩散的模型中,常规的训练目标是最小化每个 t 时真实去噪分布 q(x_(t−1)| xt) 和模拟去噪分布 pθ(x_(t−1)| xt) 之间的 KL 散度,即

受到 DRL(Gao等,2021)的启发,我们设计了一系列条件 EBM,使用在 t 时刻条件化的能量函数来定义我们模拟的去噪分布,

其中 Eθ(xt, t) : R^D × R → R 是由 θ 参数化的能量函数。因此,L 可以简化并通过能量函数来表达:

很容易看出,当公式 (7) 被优化时,pθ(xt) = exp (Eθ(xt,t)) / Z_θ,t = q(xt)(参见附录)。

由于 ˜Zθ,t 是棘手的,如果我们遵循常见的选择来计算目标函数的梯度:

第二项必须通过从分布 q(xt)pθ(x_(t−1) | xt) 进行 MCMC 采样来估计(Gao等,2021),这在训练过程中可能具有计算上的要求和不稳定性。因此,我们通过引入一个由 ϕ 参数化的变分条件分布pϕ(x_(t−1) | xt) 来采用对抗 EBM,形成一个两步最大最小化博弈:

这个对抗训练策略交替优化 pϕ 和 Eθ,一边固定另一边进行优化。这为能量基模型的训练提供了一种可行且无需 MCMC 的方法。我们简单地将我们提出的方法称为基于能量去噪扩散对抗模型(Denoising Diffusion Adversarial Energy-Based Model,DDAEBM)。

3.2. 对 pϕ 的最小化

首先,我们需要对引入的变分条件分布 pϕ(x_(t−1) | xt) 进行具体形式的定义。DDIM(Song 等,2021a)和 DDPM(Ho 等,2020)将 pϕ(x_(t−1) | xt) 定义为一个高斯分布,以匹配高斯后验分布 q(x_(t−1) | xt, x0)。然而,正如在 DRL 中所示,当 βt 很小时,这种正态分布的近似只有在噪声步数很少时才准确,当去噪分布可能复杂且多模态时可能不合理。因此,我们采用重新参数化技巧定义 pϕ(x_(t−1) | xt),即

其中 pϕ (x0 | xt) 是由生成器 Gϕ (xt, z, t):R^D × R^d × R → RD 强加的隐式分布。这里,p(z) 是一个 d 维的潜变量,遵循标准高斯分布 N(z; 0, I),而 q (x_(t−1) | xt, x0) 是在正向扩散过程中定义的后验分布。值得注意的是,这个定义也被 Xiao 等人(2022)探索过,已经验证在拟合复杂和多模态条件分布方面是有效的,尽管他们没有利用基于能量的模型结构来描述数据分布。

到目前为止,KL 散度是基于能量的对抗模型训练的最常见的散度 D 的选择(Geng 等,2021;Grathwohl 等,2021;Zhai 等,2016)。然而,鉴于 KL 散度是一个非对称的度量,它迫使 pϕ(x_(t−1) | xt) 追逐 pθ(x_(t−1) | xt) 的主要模式(mode)。因此,仅仅依赖 KL 散度作为我们的目标可能不足以使生成器有效地捕捉能量分布(Geng 等,2021)。遵循 Kan 等人(2022),我们选择一个对称的 Jeffrey 散度,将 KL 散度和反 KL 散度整合到我们的目标中:

我们将我们的理想目标分为两个项进行单独处理:

找出理想目标第一个项的边界。为了最小化我们的理想目标,我们首先处理等式 (11)。可以通过省略一些无关的项并得到简化:

计算生成分布的熵始终是 EBM 中的一个挑战性任务。已经提出了几种方法(Kumar 等,2019;Grathwohl 等,2021;Geng 等,2021)用于有效的熵近似,但这些方法要么是时间要么是内存密集型。我们需要计算条件熵: 

H[pϕ(z | x_(t−1), xt)] 是难以计算的,而 H[pϕ(x_(t−1), z|xt)] 是一个可以忽略的常数(见附录)。最小化等式 (13) 可能会有问题,因为我们无法访问 H[pϕ(z|x_(t−1), xt)],而是通过引入一个近似的高斯后验 qψ(z|x_(t−1), xt) 来最小化一个变分上界。这里,均值和方差通过一个由 ψ 参数化的编码器表示,输入为 x_(t−1)、xt 和 t。我们可以轻松地得到:

用等式 (6) 表示 log pθ(x_(t−1) | xt),并将等式 (16) 应用于等式 (13),可以通过其简化的变分上界最小化第一个项 Eq. (11):

找出理想目标第二项的边界。我们现在继续最小化我们的理想目标,处理第二项方程(12)。通过利用与我们引入的高斯后验分布 qψ(z| x_(t−1), xt) 相关的证据下界(ELBO),我们也可以对这一项进行上界界定,因为

我们可以通过应用方程(18)来得到方程(12)的上界。

对方程(19)的蒙特卡罗近似需要从 q(xt)pθ(x_(t−1) | xt) 中进行采样。由于 pθ(x_(t−1) | xt) 被设计为拟合 q(x_(t−1) | xt),我们使用 q(xt−1, xt) 的样本,并使用重要性比(importance
ratio)来替换 q(xt)pθ(x_(t−1) | xt) 中的样本,就像 BiDVL(Kan等人,2022年)中所做的那样:  

这里的重要性比受到 ACT(Kong等人,2023年)的启发而设计:

其中,w 和 w_mid 是基于数据集选择的超参数。t'(·) 是指方差保持(Variance Preserving,VP)SDE 中 xt 的时间的函数(Song等,2021c),因为我们的扩散过程可以看作是连续时间 VP SDE的离散化(见附录)。实施最小化步骤的最终整体目标是相对于 pϕ 和 qψ 的方程 (17) 和方程 (19)的总和。

3.3. 相对于 Eθ 的最大化步骤

在相对于 pϕ 和 qψ 的最小化步骤之后,我们大致假设 pϕ(x_(t−1) | xt) = pθ(x_(t−1) | xt)。接下来,我们应该通过最大化能量函数来优化:

与大多数对抗性 EBM 类似,我们还发现通过为能量的梯度添加 ℓ2 正则化器有助于稳定训练:

其中,γ 是正则化系数。这种正则化是一种梯度惩罚,有助于减轻由于最小化步骤中训练不足而导致的训练不稳定(Grathwohl等人,2021年;Kumar等人,2019年)。 

4. 实验

附录

B.2 网络结构 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中a++和++a的区别是什么?

在JS中,a 和 a 都是对变量 a进行自增操作,但是他们在执行的行为和结果上有些不同: a (前缀自增): 首先是将a的值增加1,然后返回 a 增加后的值。这意味着,表达式的其余部分使用 a的时候, a 的值…

人大金仓携手中国大地保险上线核心超A系统

2023年底 中国大地保险 卡园三路59号办公室里 一群技术精英们正忙碌着 他们的眼中闪烁着对即将到来的胜利的期待 这是大地保险超A系统 项目上线的关键时刻 也是通过科技创新 引领行业服务新趋势的一场征程 项目现场 一次颠覆:改变传统保险服务模式 超A平…

微信小程序项目实战遇到的问题

我们以学生成绩平台来作为例子。这是我们想得到的效果。 以下是完整代码: index.js // index.js Page({//页面的初始数据data: {hello: 欢迎进入微信小程序的编程世界,score: 80,userArray: [{name: 张三,score: [66, 77, 86, 70, 90]},{name: 李四,score: [88, 7…

中国传统游戏-幻方-c/c++实现

幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。 幻方也是一种中国传统游戏。旧时在官府、学堂多见。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形,使在同一行、同…

由浅到深认识Java语言(2):Java语言概述

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

CSS案例-4.padding导航栏练习

效果 相关数据: 上边框:3px,颜色#ff8500 下边框:1px,颜色#edeef0 背景颜色:#fcfcfc 高度:41px 内边距20px 字体颜色#4c4c4c 知识点 盒子边框border 属性 作用 border-width 定义边框粗细,单位px border-style 边框的样式 border-color 边框颜色 边框样式

拿捏指针(三)

✨✨欢迎👍👍点赞☕️☕️收藏✍✍评论 个人主页:秋邱博客 所属栏目:C语言 (感谢您的光临,您的光临蓬荜生辉) 前言 在这之前我们学习了《拿捏指针(一)》,《拿…

Ansible基本介绍与模块使用

目录 引言 一、Ansible简介 (一)基本概述 (二)主要特点 二、Ansible安装及基本组件 (一)yum安装 (二)编译安装 (三)基本配置信息 1.主配置文件 2.主…

【Linux】自动化构建工具-make/Makefile

个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. 认识make/Makefile3. 了解make/Makefile原理3.1 依赖关系和依赖方法3.2 make检测的顺序3.3 PHONY:XXX 4. makefile内置符号 1. 前言 在上一篇中已经了解了【Linux】编译器-gcc/g使用,这次来一起…

01|模型IO:输入提示、调用模型、解析输出

Model I/O 可以把对模型的使用过程拆解成三块,分别是输入提示(对应图中的Format)、调用模型(对应图中的Predict)和输出解析(对应图中的Parse)。这三块形成了一个整体,因此在LangCha…

idea将非UTF-8的properties修改为UTF-8编码的文件

需求背景 由于项目初始化时,properties文件的编码格式为ASCII编码格式,此时用idea打开该文件会默认展示UTF-8的编码内容,其中汉字可以正常展示,但是使用notepad打开却依旧时ASCII编码格式 idea配置 打开idea-setting-editor-f…

TCP - 传输控制协议

TCP - 传输控制协议 是一种面向连接的可靠传输协议。 特点: TCP是面向连接(虚连接)的传输层协议。 每一条TCP连接有且只能有两个端点。 可靠、有序、无丢弃和不重复。 TCP协议提供全双工通讯。 发送缓存 存放发送方TCP准备发送的数据。T…

Springboot笔记-01

简化spring应用开发,约定大于配置 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 优点: 快速创建独立运行的spring项目以及于主流框架集成 使用嵌入式的Servlet容器&#x…

Reactor线程模型

线程模型 一、背景1.socket网络通信2.IO模型与线程模型3.线程模型分类3.1 阻塞模型3.2 Reactor模型3.3 Proactor模式 二、阻塞模型1.代码示例 三、Reactor模型1.单Reactor单线程1.1 处理过程1.2 优缺点1.3 代码示例 2.单Reactor多线程2.1 处理机制2.2 优缺点 3.主从Reactor3.1 …

深度学习_卷积

卷积 卷积(Convolution)是数学和计算机科学中的一个重要概念,特别在信号处理和图像处理中应用广泛。在信号处理领域,卷积是两个函数之间的一种数学操作,它表示两个函数的重叠部分的积分量。 在图像处理中&#xff0c…

JavaScript数组排序sort自定义函数不生效

背景 刷LeetCode时,遇到一道简单的数组排序题: 问题 想着直接用js的数组sort自定义排序即可,奈何测试用例运行总是不通过,返回的一直都是原数组。 代码排查 复制代码到Firefox浏览器控制台运行,结果输出的是正确结果&a…

搭建Hadoop集群(完全分布式运行模式)

目录 一、准备模板机(最小化安装)二、配置一台纯净的模板机修改主机名固定IP地址通过yum安装方式安装必要的软件关闭防火墙且禁止自启修改hosts映射文件创建普通用户 并让他能用sudo命令在/opt下创建software和module完成 三、搭建完全分布式运行模式3.1克隆第一台机器hadoop10…

基于PCA(主成分分析)的人面识别,Matlab实现

博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…

Vue学习日记 Day7 —— json-server工具、基于VueCli自定义创建项目、postcss插件

一、前一天Vuex总结 1、state作用:存放数据定义:state:{//数据 }使用://放在data下(1)根节点直接访问this.$store.state.数据名(2)模块直接访问this.$store.state.模块名.数据名(3)根节点辅助函数mapState([所需要的数据])(4)模块辅助…

JDK21虚拟线程

目录 虚拟线程 话题 什么是平台线程? 什么是虚拟线程? 为什么要使用虚拟线程? 创建和运行虚拟线程 使用线程类和线程创建虚拟线程。生成器界面 使用Executor.newVirtualThreadPerTaskExecutor()方法创建和运行…