(2024|ICLR reviewing,IGN,EBGAN,重建、幂等和流形紧致目标)幂等生成网络

Idempotent Generative Network

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

目录

0. 摘要

2. 方法

2.1 优化目标

2.2 训练

2.3 架构和优化

4. 实验

5. 相关工作

6. 局限性


0. 摘要

我们提出了一种基于训练神经网络成为幂等的生成式建模新方法。一个幂等运算符是可以按顺序应用而不改变结果超过初始应用的运算符,即 f(f(z)) = f(z)。所提出的模型f被训练成将一个源分布(例如,高斯噪声)映射到一个目标分布(例如,真实图像),使用以下目标:(1)目标分布的实例应映射到它们自身,即 f(x) = x。我们将目标流形定义为通过 f 映射到自身的所有实例的集合。 (2)构成源分布的实例应映射到定义的目标流形。这通过优化幂等性项 f(f(z)) = f(z) 来实现,它鼓励 f(z) 的范围在目标流形上。在理想假设下,这样的过程可以证明收敛到目标分布。这种策略产生了一个能够在一步中生成输出、保持一致的潜在空间,并允许进行逐步优化的模型。此外,我们发现通过处理来自目标和源分布的输入,该模型能够熟练地将损坏或修改的数据投影回目标流形。这项工作是朝着实现一个 “全局投影仪” 的第一步,该投影仪能够将任何输入投影到目标数据分布中。

项目页面:https://assafshocher.github.io/IGN/

(注:ICLR 的一位评审员说 “这个模型并不是一种新的生成模型,而是基于能量的 GAN (EBGAN)的一种特殊形式” )

ICLR OpenReview:https://openreview.net/forum?id=XIaS66XkNA&noteId=Q61U9IJgqP

2. 方法

我们首先介绍我们的生成模型 IGN。它经过训练,可以从源分布 P_z 的输入样本生成目标分布 P_x 的样本。形式上,给定一个由 {x_i} i∈{1,...,n} 组成的示例数据集,其中每个示例都来自 P_x,我们训练一个模型 f,将 P_z 映射到 P_x。我们假设分布 P_z 和 P_x 都在相同的空间中,即它们的实例具有相同的维度。这允许将 f 应用于来自 P_z 和 P_x 的两种类型的实例 z ∼ P_z 和 x ∼ P_x。

接下来,我们描述了优化目标、模型的训练过程、架构以及训练中的实际考虑。

2.1 优化目标

模型的优化目标基于三个主要原则。

  • 首先,目标分布的每个数据样本都应该由模型映射到其自身。
  • 其次,模型应该是幂等的——连续应用两次应该与一次应用产生相同的结果。
  • 第三,映射到自身的实例子集应该尽可能小。

接下来,我们解释这些原则如何被转化为优化目标。

重建目标。我们的第一个目标是重建目标,正如在介绍中所提到的,当每个样本 x ∼ P_x 被映射到其自身时,这个目标就完美实现了: 

给定距离度量 D(例如,L2),我们定义某个实例 y 的漂移度量为:

其中 θ 是模型 fθ 的参数。然后,我们试图最小化漂移度量: 

真实实例被映射到它们自身的事实激发了我们定义理想估计的目标流形,即由我们的模型映射到自身的所有可能输入的子集:

幂等目标。我们希望 f 将从源分布中抽样的任何实例映射到估计的流形上: 

利用方程 4 中的定义,并结合我们在方程 5 中的目标,我们可以定义我们的第二个目标,当完美实现时,我们得到: 

这意味着 f 在所有可能的 z ∼ P_z 的域上是幂等的。因此,幂等性目标可以表述如下:

然而,接下来我们将看到,直接优化这种幂等性的公式存在一个需要我们将其拆分为两个独立项的注意事项。

紧致性目标。到目前为止,在目标的公式中,存在一个缺失的联系。如果完美优化重建目标(方程1),则确定所有给定的示例都在估计的流形上。然而,这并不意味着其他实例不在该流形上。一个极端的例子是,如果 f 是恒等映射 f(z) = z ∀z,它完美地满足了两个目标。此外,迄今为止所制定的幂等性目标鼓励流形扩展。

图 2 说明了这个问题。当最小化方程 7 中的幂等性目标时,存在两条不同的梯度流路径,这两条路径在优化时都会起作用。第一条路径,也是期望的路径,是通过修改 f,使 f(z)(图 2 中的红色)更好地映射到当前定义的流形。第二条路径是对于给定的 f(z),使 f(f(z)) 更接近已给定的 f(z)(图 2 中的绿色)。这第二种优化方式实际上是在扩展估计的目标流形,如方程 4 中所定义。 

为了减少扩展流形的动机,我们只优化相对于 f 的第一(内部)实例化,同时将第二(外部)实例化视为 f 当前状态的冻结副本。我们用 θ′ 表示f的冻结副本的参数。它们在值上等于 θ,但它们是不同的实体,即相对于 θ 取梯度不会影响 θ′。

我们表示损失期望为 

虽然方程 8 防止了对扩展估计流形的鼓励,但这还不够。我们希望尽可能地缩小流形。因此,假设给定 f(z),我们最大化 f(f(z)) 和 f(z) 之间的距离(结合最终的优化目标,最大距离最小化,从而限制流形的大小)。这是仅优化f的第二(外部)实例化,将第一实例化视为冻结副本。我们要最小化的项是 

注意,

这引发了一种对抗性的训练方式,将这两个损失一起进行训练。然而,不存在交替优化。所有梯度都在单个步骤中累积在 θ 上。

最终的优化目标。结合上面描述的三个优化项,得到最终的损失: 

其中 L_rec(θ) = E_x[D(f_θ(x), x)] 是重建项,λ_i 和 λ_t 分别是幂等和紧致损失项的权重。请注意,虽然将损失分配给 θ′ = θ,但由偏导数构成的梯度仅相对于损失 L_idem(z; θ, θ′) 的原始参数θ。因此,一般的更新规则是: 

2.2 训练

对于在计算中出现多次的单个模型 f,我们希望通过对不同实例化的 f 取不同损失的梯度来进行优化。图 2、方程 13 和图 3 共享相同的颜色编码。红色表示通过其第一(内部)实例化来更新 f,通过最小化 δ 来实现。绿色表示通过其第二(外部)实例化来更新 f,通过最大化 δ 来实现;我们研究 δ_θ(f(z)) 的梯度。 

梯度的两项例示了对于不同 f 的不同优化目标。通过在第一项上进行梯度上升来优化 L_tight,而通过在第二项上进行梯度下降来优化 L_idem。

对于 L_tight,阻止优化 f 的第一(内部)实例化是简单的。如图 3 所示,可以通过在 f 的两个实例化之间的反向过程中停止梯度来实现,将 f(z) 视为静态输入。然而,这种方法无法应用于 L_idem。方程 13 显示,相对于所需的 f 的第一实例化的梯度,∂δ(f(z)) / ∂f(z) 是使用链式法则通过第二个 ∂δ(f(z)) / ∂f(f(z)) 计算的。为了解决这个问题,图 3 显示我们使用模型的副本,f_copy。它在每次迭代中更新为与 f 相同,但作为一个不同的实体,我们可以通过它进行反向传播而不累积关于其参数的梯度。

图 3 和源码 1 展示了实际进行训练的方式。为了提高效率,我们首先计算 f(z),可以在幂等损失和收紧损失之间共享。在源代码 1 中,我们提供了 IGN 的基本训练 PyTorch 代码。一旦提供了一个模型、一个优化器和一个数据加载器,这是在 MNIST 实验中使用的实际代码。

2.3 架构和优化

网络架构。用于 IGN 的典型模型构建为自编码器。一种可能性是使用现有的 GAN 架构,通过 “翻转” 顺序,使编码器成为鉴别器,其中去掉了二元分类头,而译码器则成为生成器。

收紧损失度量。L_tight 引起的一个不良效果是,即使对于一个相对良好的生成实例,它也受益于大修改。此外,为了增加输入和输出之间的距离而进行优化会鼓励出现高梯度和不稳定性。为了改善这些问题,我们修改了 L_tight 的距离度量并限制其值。我们使用一个平滑的双曲正切夹具(clamp),其值取决于每次迭代的当前重构损失。

 

使用 ˜Ltight,即前面定义的损失,a ≥ 1 是一个常数比率。其基本原理是,如果在任何给定的时间,一个潜在被映射到了估计的流形之外,我们没有理由继续推动它。

噪声分布。我们发现,当我们采用具有与真实数据相同频率统计信息的噪声而不是标准的高斯噪声时,会出现轻微的改善。我们对一批数据进行快速傅里叶变换(FFT),并对每个频率的实部和虚部取均值和方差。然后,我们使用这些统计信息进行采样,并应用逆 FFT 以获得噪声。图 4 展示了这种噪声的样子。

4. 实验

5. 相关工作

基于能量的模型(Energy Based Models,EBMs)。在基于能量的模型(EBMs;Ackley等人(1985))中,一个函数 f 被明确训练成作为一个能量度量,分配较高的值给非期望示例,为较好拟合模型的示例分配较小的值。IGN 引入了一种类似但不同的范式:与 f 充当能量函数不同,这个角色由 δ(y) = D(f(y), y) 扮演。模型训练 f 成为幂等,目标是最小化 δ(f(z))。一个成功的训练过程会使 f 的范围与由 δ 测量的低能区域对齐(y 与 D(y) 拟合,D 小,对应低能 δ)。这减少了寻找能量最小值的单独优化过程的需求。从另一个角度来看,f 可以被视为一个过渡算子,将高能量输入映射到低能量域。 

6. 局限性

模式崩塌。与 GAN 类似,我们的模型可能会经历模式崩塌,并且不保证能够生成整个目标分布。一些方法尝试克服 GAN 中的这种失败模式(Mao等,2019;Durall等,2020)。我们计划研究这些方法是否也适用于我们的生成模型。

模糊性。与 VAE 和其他自编码器类似,我们的模型在生成的样本中存在模糊性。尽管重复应用可以修复图像中的瑕疵,使其看起来更自然,但它们也可能将它们平滑成平均的图像。解决此问题的一种可能方法是将朴素的重建损失替换为感知损失(Johnson等,2016)。另一种解决方案是采用两步法,将我们的模型应用于潜在空间而不是像素(类似于Rombach等,2021)。我们计划在将来的工作中进行研究。

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

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

相关文章

PyTorch基础-Tensors属性、Tensor的运算

PyTorch的基本概念 Tensor的基本概念 张量高于标量、向量、矩阵 标量说零维的张量,向量是一维的张量,矩阵是二维的张量 Tensor与机器学习的关系 Tensor的创建 函数功能Tensor(*size)基础构造函数Tensor(data)类似np.arrayones(*size)全1Tensorzeros(…

029 命令行传递参数

1.循环输出args字符串数组 public class D001 {public static void main(String[] args) {for (String arg : args) {System.out.println(arg);}} } 2.找打这个类的路径,打开cmd cmd C:\Users\Admin\IdeaProjects\JavaSE学习之路\scanner\src\com\yxm\demo 3. 编译…

C++ 之LeetCode刷题记录(二十七)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 136. 只出现一次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现…

【Web前端笔记06】CSS常用属性

目录 一、字体属性 1、color 字体颜色 2、font-size 字体大小(默认16px) 3、font-weight 文本粗细 4、font-style 字体样式 5、font-family 指定一个元素的字体 二、背景属性 1、background-color 背景颜色 2、background-image: url("img/do.png"); 背景…

某站平台的签名算法分享

先charles抓包,api.xxxxxx.com域名的包 分析包 看到路径参数如下 appkey1d8b6e7d45233436&build5531000&channeldw056&mobi_appandroid&mode0&oid326052200&plat2&platformandroid&ps20&statistics%7B%22appId%22%3A1%2C%22p…

异步编程Completablefuture使用详解----进阶篇

JDK版本:jdk17 IDEA版本:IntelliJ IDEA 2022.1.3 文章目录 前言一、异步任务的交互1.1 applyToEither1.2 acceptEither1.3 runAfterEither 二、get() 和 join() 区别三、ParallelStream VS CompletableFuture3.1 使用串行流执行并统计总耗时3.2 使用并行…

前端JavaScript篇之map和Object的区别、map和weakMap的区别

目录 map和Object的区别map和weakMap的区别 map和Object的区别 Object是JavaScript的内置对象,用于存储键值对。Object的键必须是字符串或符号,值可以是任意类型。Map是ES6引入的新数据结构,用于存储键值对。Map的键可以是任意类型&#xff…

C++ 日期类的实现

目录 前言 日期类中的成员函数和成员变量 日期类中成员函数的详解和实现 1.天数前后的判断 2.天数加减的实现 3.前置 && 后置 4.计算天数差值 前言 日期类的实现将综合前面所学的(类的6个默认成员函数),进一步理解和掌握类的…

COX预测模型过程中,我踩过的那些雷

R语言做!初学者先进来看看!!! SCI冲 COX分析:做临床信息与预后相关的COX分析大致都会分为两个步骤,先做单因素COX回归分析,再根据P值挑选有意义的变量,最终纳入COX多因素回归模型中&…

20240202在WIN10下部署faster-whisper

20240202在WIN10下部署faster-whisper 2024/2/2 12:15 前提条件,可以通过技术手段上外网!^_ 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】800¥ 2、请正确安装好NVIDIA最…

SpringBoot实战项目第一天

环境搭建 后端部分需要准备: sql数据库 创建SpringBoot工程,引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构,并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…

[BUUCTF]-PWN:mrctf2020_easy_equation解析

查看保护 再看ida 很明了,题目就是让我们用格式化字符串漏洞修改judge的值(可以用python脚本进行计算,最终算出来得2)使等式成立,然后getshell。 虽然操作比较简单,但我还是列出了几种方法 解法一&#x…

uni-app移动端图片预览组件 movable-area 、movable-view (支持缩放,拖动效果、替换部分代码图片可直接使用)

UniApp图片预览组件 利用uni-app官方<movable-area>、<movable-view>内置视图组件 配合 uView 组件的u-popup 弹框组件共同实现封装的图片预览组件&#xff0c;支持手指缩放、拖动效果&#xff0c;替换代码中部分图片后 可以直接使用。 效果图&#xff1a; 组件代码…

【数据结构与算法】——单链表的原理及C语言实现

数据结构与算法——链表原理及C语言实现 链表的原理链表的基本属性设计创建一个空链表链表的遍历&#xff08;显示数据&#xff09;释放链表内存空间 链表的基本操作设计&#xff08;增删改查&#xff09;链表插入节点链表删除节点链表查找节点增删改查测试程序 链表的复杂操作…

Vulnhub billu b0x

0x01 环境搭建 1. 从官方下载靶机环境&#xff0c;解压到本地&#xff0c;双击OVF文件直接导入到vmware虚拟机里面。2. 将虚拟机的网络适配器调成NAT模式&#xff0c;然后开机即可进行操作了。 0x02 主机发现 nmap -sn 192.168.2.0/24 成功获取靶机IP为192.168.2.129。 0x0…

本次安装Visual Studio 所用的安装程序不完整。请重新运行VisualStudio安装程序以解决此问题

今天点开VS的时候遇到了这个问题 因为昨天升级到一半电脑关机了&#xff0c;今天打开软件遇到如下错误&#xff0c; 解决办法很简单&#xff0c;找到安装目录进入Installer文件夹 我的目录在C:\Program Files (x86)\Microsoft Visual Studio\Installer 找到vs_installer.exe…

【python】python爱心代码

一、实现效果&#xff1a; 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 二、准备工作 &#xff08;1)、导入必要的模块&#xff1a; 代码首先导入了需要使用的模块&#xff1a;requests、lxml和csv。 import requests from lxml import etree import csv 如果出现…

C#写个小工具,把多个word文档进行合并成一个word文档

先要安装包 帮助类WordDocumentMerger&#xff0c;用于处理word合并功能 using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Word; using System.Reflection; using System.IO; using System.Diagnostics;namespace WordH…

分别用JavaScript,Java,PHP,C++实现桶排序的算法(附带源码)

桶排序是计数排序的升级版。它利用了函数的映射关系&#xff0c;高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效&#xff0c;我们需要做到这两点&#xff1a; 在额外空间充足的情况下&#xff0c;尽量增大桶的数量使用的映射函数能够将输入的 N 个数据均匀的分…

【C语言】字符串函数介绍

目录 前言&#xff1a; 1. strlen 函数 函数介绍 strlen 函数的使用 strlen 函数的模拟实现 2. strcpy 函数 函数介绍 strcpy 函数的使用 strcpy 函数的模拟实现 3. strcat 函数 函数介绍 strcat 函数的使用 strcat 函数的模拟实现 4. strcmp 函数 函数介绍 st…